cmd/crossbar/main.go calls admin.Handler with the new 6-arg signature, passing nil for the not-yet-wired leases/limiter/store/drainer (task 07 wires them) so go vet and go test ./... pass on cmd/crossbar. This is a compile fix, not the task-07 wiring; noted in the implementer-log. Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
27 lines
1.3 KiB
TOML
27 lines
1.3 KiB
TOML
# crossbar example configuration (v1). Replace <tailnet> and the addresses with your own.
|
||
listen = "127.0.0.1:17777" # never 0.0.0.0 — bind the tailnet address in production
|
||
db = "crossbar.db" # SQLite: leases + accounting (WAL). /var/lib/crossbar/crossbar.db under systemd
|
||
poll_interval = "1s" # 60s in production; 1s makes the smoke run quick
|
||
lease_idle = "30m" # a conversation idle this long loses its host
|
||
retention = "180d" # per-request rows older than this are rolled up daily
|
||
queue_max = 1 # waiting places per (host, model) beyond `parallel`; 503 past that
|
||
|
||
[hosts.alpha]
|
||
base_url = "http://127.0.0.1:18081" # e.g. http://straylight.<tailnet>:11434
|
||
weight = 1.0
|
||
models = { "ornith-1.5-35b-a3b" = { parallel = 1 }, "small-9b" = { parallel = 6 } }
|
||
|
||
[hosts.beta]
|
||
base_url = "http://127.0.0.1:18082" # e.g. http://titan.<tailnet>:8081
|
||
weight = 2.0
|
||
models = { "ornith-1.5-35b-a3b" = { parallel = 2 } }
|
||
|
||
# v1: a route is a set of candidate hosts; each conversation gets a sticky lease on the host with
|
||
# the most free slots × weight at the time it starts. Pins and drains come from the admin API.
|
||
[routes.opencode-a]
|
||
hosts = ["alpha", "beta"]
|
||
default_model = "ornith-1.5-35b-a3b"
|
||
|
||
[routes.hermes-x]
|
||
hosts = ["beta", "alpha"]
|