Documentation
¶
Overview ¶
Package cli holds the application struct that service.MainCmd parses CLI args into, plus the Run entry-point that delegates to the injected server factory. The factory itself lives in pkg/factory; this package is import-free of factory to keep the dependency direction (main -> factory -> ...) intact.
Package config loads and validates the claude-code-router YAML configuration. The config describes:
- listed providers (each: upstream URL, optional token, list of model-name glob patterns)
- which provider to route to when no glob matches (default_provider)
Routing is per-request: the model-router inspects the JSON body's `model` field and forwards to the matching provider's reverse proxy.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type App ¶
type App struct {
Listen string `arg:"listen" default:"127.0.0.1:8788" env:"LISTEN" required:"true" usage:"address to listen to"`
ConfigPath string `` /* 142-byte string literal not displayed */
// contains filtered or unexported fields
}
App is the application wired by main and parsed by service.MainCmd's argument tagger. Exported fields with tags are CLI args; unexported fields are dependencies injected by main.
func NewApp ¶
func NewApp(serverFactory ServerFactory) *App
NewApp constructs the App with the server factory injected.
type Config ¶
type Config struct {
Router Router `yaml:"router"`
Providers map[string]Provider `yaml:"providers"`
// Aliases maps a short operator-typed model name to the full
// model string the upstream expects. Resolved single-hop before
// glob-routing: a request body `{"model":"qwen"}` becomes
// `{"model":"qwen3.6:35b-a3b-coding-nvfp4"}` before the router
// walks providers' models globs. Nil / empty map = no-op.
Aliases map[string]string `yaml:"aliases,omitempty"`
}
Config is the parsed YAML root.
type Provider ¶
type Provider struct {
// Upstream is the base URL, e.g. https://api.anthropic.com.
Upstream string `yaml:"upstream"`
// Token, if set, replaces the client's Authorization header with
// "Bearer <Token>". If empty, the client's Authorization is
// forwarded verbatim — used for the subscription-OAuth case.
Token string `yaml:"token,omitempty"`
// Models is the list of glob patterns (filepath.Match syntax) the
// router uses to match request body's `model` field. Examples:
// "claude-opus-*", "MiniMax-*", "qwen*".
Models []string `yaml:"models"`
}
Provider describes one upstream LLM API.