Configuration file (config.toml)

Agent Store keeps all long-lived preferences in ~/.agent-store/config.toml (TOML): the default model, API providers, model aliases and default marketplace sources. Change it once, it applies on every start.

  • Default location: ~/.agent-store/config.toml (%USERPROFILE%\.agent-store\config.toml on Windows).
  • Optional file: without it the App Server runs fine, but model calls need providers created manually in the Web UI first; with it, declared providers, model defaults and marketplaces are auto-registered on startup.

This file follows the user-level config.toml convention of Claude Code / Codex / Kimi Code ([providers.<name>] + [models."<provider>/<model>"]). Unknown top-level and nested keys are tolerated — the file is yours and may carry settings for other tools (Kimi Code's thinking, permission, hooks, …) without breaking parsing.

Full example

default_model = "opencode/mimo-v2.5-free"

[providers.opencode]
type = "openai"
api_key = "sk-..."
base_url = "https://opencode.ai/zen/v1"

[providers.mimo]
type = "openai"
base_url = "https://api.xiaomimimo.com/v1"

[models."opencode/mimo-v2.5-free"]
provider = "opencode"
model = "mimo-v2.5-free"
display_name = "MiMo V2.5 Free"
max_context_size = 200000
max_output_size = 8000
capabilities = ["thinking", "tool_use"]

[models."opencode/laguna-s-2.1-free"]
provider = "opencode"
model = "laguna-s-2.1-free"
max_context_size = 256000
display_name = "Laguna S 2.1 Free"

# Default marketplace sources (auto-registered on first store/market call; hosted by this site)
[default_marketplaces.experts]
source_kind = "url"
source = "https://<site-domain>/source/experts/.codebuddy-plugin/marketplace.json"

Top-level fields

FieldTypeDescription
default_modelstringDefault model alias in "<provider>/<model>" form; must resolve through [models]; used when the caller sends no model
providerstableAPI provider table → providers
modelstableModel alias table → models
default_marketplacestableMarketplace sources auto-registered on startup → default_marketplaces
memorytablePost-session memory policy → memory (below)
marketplacetableBackground auto-update cadence → marketplace (below)

providers

A table keyed by unique provider name. Agent Store reads credentials from here only — no shell environment fallback.

FieldTypeRequiredDescription
typestringnoProvider type (maps to the runtime platform), e.g. openai, anthropic
api_keystringnoAPI key, written in plain text in the config file
base_urlstringnoAPI base URL
enabledbooleannoEnables auto-registration; treated as enabled when omitted

Key safety: api_key is read only for the encrypted provider registration, then dropped — it never appears in logs or tracing payloads. Consider tightening file permissions yourself (chmod 600).

models

A table keyed by "<provider>/<model>". provider must point to a key declared in [providers].

FieldTypeDescription
providerstringOwning provider key (required)
modelstringModel name sent upstream (required)
display_namestringDisplay name in the UI
max_context_sizeintegerContext window limit (tokens)
max_output_sizeintegerMax output per response (tokens)
capabilitiesarray<string>Capability flags, e.g. ["thinking", "tool_use", "image_in"]
reasoning_keystringField name of the reasoning content in responses, e.g. reasoning_content

default_marketplaces

Default marketplace sources (winget-style software sources). The App Server auto-registers them on the first store / market call; an existing id is reactivated with the new source.

FieldTypeDescription
source_kindstringurl | github | git | directory
sourcestringConcrete address; for url kinds also provide a directory listing (_files.txt) so entry trees can mirror over HTTP
[default_marketplaces.experts]
source_kind = "url"
source = "https://<site-domain>/source/experts/.codebuddy-plugin/marketplace.json"

[default_marketplaces.workbuddy-skills]
source_kind = "url"
source = "https://<site-domain>/source/skills/.codebuddy-skill/marketplace.json"

[default_marketplaces.connectors]
source_kind = "url"
source = "https://<site-domain>/source/connectors/.codebuddy-connector/connectors.json"

memory

Post-session memory policy. Distillation makes one extra model call after every normal turn to distil the session into file-based memory; that call happens before the turn's terminal signal, so clients see the answer fully rendered while the conversation still reports "processing" for roughly 6–15 s (it tracks model latency).

FieldTypeDescription
distill_enabledbooleanfalse disables distillation (no extra model call after the turn, so "answer complete" and "turn finished" coincide); true or an absent key keeps the upstream default (on)
# Skip session-end memory distillation (one less model call per turn, and no
# 6–15 s finalization tail after the answer is complete)
[memory]
distill_enabled = false

Precedence: the NOMIFUN_MEMORY_DISTILL environment variable (0/false off, 1/true on) > this file's [memory].distill_enabled > the upstream default (on). Without a [memory] section the behaviour is exactly what it was before.

marketplace

Background auto-update cadence. When enabled, the runtime polls marketplace sources on this interval in the background; it is off by default — without a [marketplace] section no background request is ever made.

FieldTypeDescription
auto_update_interval_hoursintegerHours between sweeps. Absent or 0 = off; a positive integer enables it
# Check marketplace sources in the background every 6 hours (official sources
# only; third-party sources are never auto-updated)
[marketplace]
auto_update_interval_hours = 6

Both gates must hold before anything is fetched: ① the marketplace's auto-update toggle is on, and ② its source address is one of the official mirrors. A third-party source keeps its toggle for display but is never polled. Each sweep still goes through market/refresh's revision / ETag short-circuit, so an unchanged source does not re-download the whole tree.

Differences from Kimi Code / Claude Code configs

DimensionAgent StoreKimi Code etc.
Location~/.agent-store/config.toml~/.kimi-code/config.toml etc. (per-tool directories)
[providers] / [models]Same shape: type/api_key/base_url, provider/model/max_context_size/capabilitiesSame shape
default_model"<provider>/<model>" aliasSame
Unknown keysTolerated, no errorTolerated
Env fallbackNone — credentials come from the file onlySome tools support env-subtables / env fallbacks
Agent Store onlydefault_marketplaces, [memory], [marketplace]

If your config already has [providers] / [models] sections from Kimi Code or another tool, you can copy them directly into ~/.agent-store/config.toml (as long as the provider speaks an OpenAI/Anthropic-compatible protocol); unrelated sections (thinking, permission, hooks, …) can stay or go — Agent Store ignores them.