WardrikDaemon. Config
(wardrik_daemon v0.1.0-rc.1)
Copy Markdown
Reads config.yaml as the daemon starts.
org: acme
base_url: https://agents.acme.example
defaults:
model: anthropic:claude-haiku-4-5
http:
port: 4747Keys
org- the deployment's org.defaultunless set.orgs- other orgs to run agents for. SeeWardrikDaemon.Config.Orgs.base_url- where people and services reach the deployment. The HTTP API's URL unless set.defaults- what every agent gets where its definition says nothing.models- prices for models the catalog lacks, by model spec, in dollars per million tokens:input,output,cache_readandcache_write, orpriced_asanother model, each with an optionalmarkup. SeeWardrik.Setup.price/2.mcp- MCP servers agents may call. SeeWardrikDaemon.Config.MCP.oauth- providers people connect accounts with. SeeWardrikDaemon.Config.OAuth.channels- chat apps agents are reached through. SeeWardrikDaemon.Config.Channels.notify- where agents' notices go. SeeWardrikDaemon.Config.Notify.workspace-shared: file trees agents beyond their owners may mount, each withreadandwritelists of resource patterns.brave-api_key, the keyweb_searchsearches with.vault-keys, a list of the vault's keys.http-port(4747),ip(WARDRIK_HTTP_IP, else127.0.0.1) andtrusted_workers(false).storage-postgres: {url: ...}keeps everything in Postgres. The node's disk unless set.
tools, tokens, cluster and ssh aren't supported yet, and are skipped with a warning. Any
other key is an error.
Secrets
${NAME} in any string is replaced with:
- the environment variable
NAME, or one the env file sets, or else - the deployment's secret
NAMEin the vault, whichwardrik vault put NAMEseals.
vault, http and storage are read before the vault opens, so they take the environment
alone. A ${NAME} nothing sets is an error.
Summary
Types
Looks up the deployment's secret name in the vault. Returns :error if it isn't there.
Functions
Returns where people and services reach the deployment: base_url, or url/1 if it isn't set.
Reads what's needed before the vault opens: the vault's keys, where HTTP listens, and storage. Fills in ${NAME} from env alone.
Reads config.yaml in the config directory.
Returns the ${NAME}s config.yaml names outside vault, http and storage. The vault may hold these.
Returns the HTTP API's URL. An API bound to 0.0.0.0 is reached at 127.0.0.1.
Types
@type t() :: %WardrikDaemon.Config{ base_url: String.t() | nil, brave: String.t() | nil, channels: keyword(), defaults: map(), ip: :inet.ip_address(), keys: [String.t()], mcp: keyword(), notify: keyword(), oauth: keyword(), org: String.t(), orgs: %{required(String.t()) => WardrikDaemon.Config.Orgs.entry()}, port: :inet.port_number(), prices: %{required(String.t()) => keyword()}, storage: {:postgres, String.t()} | nil, trusted_workers: boolean(), warnings: [String.t()], workspace: keyword() }
Looks up the deployment's secret name in the vault. Returns :error if it isn't there.
Functions
Returns where people and services reach the deployment: base_url, or url/1 if it isn't set.
@spec bootstrap(WardrikDaemon.Dirs.t(), %{required(String.t()) => String.t()}) :: {:ok, %{ keys: [String.t()], port: :inet.port_number(), ip: :inet.ip_address(), storage: {:postgres, String.t()} | nil }} | {:error, String.t()}
Reads what's needed before the vault opens: the vault's keys, where HTTP listens, and storage. Fills in ${NAME} from env alone.
@spec read( WardrikDaemon.Dirs.t(), %{required(String.t()) => String.t()}, vault() | nil ) :: {:ok, t()} | {:error, String.t()}
Reads config.yaml in the config directory.
Fills in ${NAME} from env, then from vault. A missing file reads as the defaults. Returns
{:error, reason}, naming the file and key, if it doesn't read.
@spec sealable(WardrikDaemon.Dirs.t()) :: [String.t()]
Returns the ${NAME}s config.yaml names outside vault, http and storage. The vault may hold these.
Returns the HTTP API's URL. An API bound to 0.0.0.0 is reached at 127.0.0.1.