Skip to content

Configuration

yohn1985 edited this page Jun 15, 2026 · 2 revisions

Configuration

Two files, clear separation:

  • config.yaml — non-secret, environment-specific settings (copy from config.example.yaml).
  • .env — secrets only (copy from .env.example; auto-created chmod 600). Never commit it.

Everything in config.yaml is also editable live from Settings in the dashboard. The jarvis/ package is the source of truth — install.sh never overwrites it.

Identity & mode

identity:
  name: Jarvis
  owner: you
  mode: shadow        # shadow | active | autonomous
  • shadow — proposes only, never executes (default; would_execute = mode != "shadow").
  • active / autonomous — executes allowed action classes.

Action classes (what it may do without asking)

action_classes:
  investigate: allow   # read-only
  propose: allow       # write a plan / open a PR
  fix_pr: ask
  deploy: deny
  infra_mutate: deny
  self_modify: deny    # only via the seatbelt, opt-in deliberately

Values: allow | ask | deny.

Model routing

llm:
  think_on_tick: true
  routing:                       # role -> backend:model
    triage:       ollama_cloud:deepseek-v4-flash
    orchestrator: claude:opus    # the main brain — frontier
    red_team:     claude:opus
    researcher:   ollama_cloud:deepseek-v4-pro
    fixer:        ollama_cloud:deepseek-v4-pro
  fallbacks: [ollama_cloud:deepseek-v4-flash]
  aliases: {opus: claude-opus-4-8, sonnet: claude-sonnet-4-6, haiku: claude-haiku-4-5}
  backends:
    claude: ["claude","-p","--model","{model}"]                 # CLI
    ollama_cloud: {http: "https://ollama.com/v1/chat/completions", api_key_env: OLLAMA_API_KEY}  # HTTP
  params:                        # optional per-role reasoning controls
    orchestrator: {thinking: high}   # Anthropic extended thinking
    fixer:        {effort: high}     # OpenAI/o-series/codex reasoning_effort

A backend is either a CLI template (list, with {model}/{prompt}) or an HTTP endpoint (dict). HTTP is OpenAI-compatible by default; add format: anthropic for the Anthropic Messages API.

Priority ladder

The order Jarvis triages each tick (top = most important). Edit in Settings → Behavior or:

priorities: [p0_active_incident, p1_unfinished_wip, p2_self_caused_regression,
             p4_self_maintenance, p5_curiosity, p3_needs_human_backlog]

Memory backends

memory:
  working:  {kind: redis,    url: redis://localhost:6379/0}
  episodic: {kind: postgres, dsn: "postgresql://…"}   # degrades to a JSONL ledger

JARVIS_LEDGER overrides where the jsonl reflection ledger lives.

Secrets (.env)

ANTHROPIC_API_KEY=
OPENAI_API_KEY=
OLLAMA_API_KEY=
POSTGRES_PASSWORD=
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=

Secrets are read into the environment at load; the dashboard writes connected keys here (chmod 600). See Safety.

Clone this wiki locally