Skip to main content
Configuration is read from build/gligabao.toml (override with --config).

Settings

The chromem store fixes the embedding size when its directory is created, and a Pinecone index must match it. Details: Vector storage.

Prices

A [prices."<model-prefix>"] table (input, output, optional cache_write/cache_read, USD per 1M tokens) overrides or extends the built-in model prices used to compute the cost of each LLM call; the longest matching prefix wins.
Every model invocation (LLM call, embedding request, web search, Jev classification) is a row of the gb_inferences table, with the model, the thinking level, the tokens and the cost. See Inferences.

Jev

When a Jev key is set, remember first classifies the text as simple/medium/complex in the number of entities it will yield and logs it with Jev’s confidence and the call’s latency. See Remember.

Eval mode

With serve --eval (or eval = true) the server also registers POST /v1/gb/eval/remember and POST /v1/gb/eval/query. They take the same bodies as the regular endpoints, record the call as an ATIF trajectory, store it as pretty-printed JSON in an atif/ directory next to the SQLite file, and return the full trajectory (and its trajectory_id) in the response. They are not registered otherwise, and the regular endpoints never generate trajectories. go run ./evals/knowledge runs through these endpoints (-atif <dir> also keeps the trajectories as files). See Evals.

Admin UI

admin_ui/ holds a small admin panel (TypeScript, SCSS, HTML). ./run_build.sh builds it (needs node/npm) and embeds admin_ui/dist into the binary with go:embed; pass --no-admin-ui (or BUILD_ADMIN_UI=false) to skip it. With admin_ui = true (or serve --admin-ui; default false) the server serves it at /v1/gb/admin/. If the assets were not embedded, the server logs a warning and does not register the handlers. The panel has views for the databases (main), evals, timeseries, inferences, remember runs and training: the training view lists the training datasets (the manifests in the training datasets directory), uploads datasets and runs Gemma-4 fine-tuning jobs on the sidecar, with a dataset picker, the list of jobs, a live event feed and a loss graph (see Training). It needs sidecar_url to reach the sidecar, which proxies to Modal. A sidecar: up / sidecar: down badge in the top bar shows whether the sidecar answers its health check. The training view also lists the training backends (Modal: healthy, app deployed or not) and can deploy, cancel, stop and inspect the volumes of the Modal app, with a live build log: see Modal app lifecycle. A program that embeds gligabao can extend the admin UI with its own views (a button in the nav on the left) and with buttons, modals and blocks inside the existing views, with plain JavaScript and no build step: see Admin UI extensions.