Skip to content

Configuration

QuotaDeck works without a configuration file. The default path is:

text
${XDG_CONFIG_HOME:-~/.config}/quotadeck/config.yaml

Copy config.example.yaml when you need multiple Codex homes or explicit Z.ai accounts.

Defaults

SettingDefaultPurpose
server.bind127.0.0.1Loopback-only HTTP API
server.port9211Dashboard and API port
storage.databaseXDG data directorySQLite history database
storage.retentionDays30Snapshot retention
polling.interval60sProvider refresh interval
polling.timeout20sPer-provider timeout

QuotaDeck rejects public bind addresses during validation.

Multiple Codex profiles

yaml
providers:
  codex:
    enabled: true
    binary: codex
    accounts:
      - label: Personal
        home: ~/.codex
      - label: Work
        home: ~/.codex-work

If accounts is empty, QuotaDeck honors the process CODEX_HOME and then falls back to ~/.codex.

Z.ai environment references

Configuration stores the name of an environment variable, never its token:

yaml
providers:
  zai:
    enabled: true
    accounts:
      - label: GLM Team
        keyEnv: ZAI_TEAM_API_KEY

The packaged user service automatically reads this optional private environment file:

text
~/.config/quotadeck/environment

Create it with restrictive permissions:

bash
install -d -m 700 ~/.config/quotadeck
install -m 600 /dev/null ~/.config/quotadeck/environment

Put ZAI_TEAM_API_KEY=... in that file and restart the service:

bash
systemctl --user daemon-reload
systemctl --user restart quotadeck.service

Keep the file outside source control and readable only by your user. When running quotadeck serve directly, expose the same variables in the process environment.

Dashboard configuration

The Plans screen provides the same setup without editing files manually:

  • Save key updates ZAI_API_KEY in the private QuotaDeck environment file;
  • Save & use Z.ai also configures ~/.claude/settings.json for the official Z.ai Anthropic endpoint;
  • choosing a Claude account removes the active Z.ai routing keys and runs cswap switch for the selected slot.

QuotaDeck never includes a stored key in API responses, diagnostics, logs, or SQLite. Leaving the key field blank keeps the already stored value.

Local-first. Zero telemetry.