harahara
Getting StartedConfiguration

Configuration

Pick a provider, set your model, and learn where hara keeps its config — plus env-var overrides and profiles.

Providers

hara is provider-agnostic. It ships with first-class support for Anthropic Claude and Qwen (free OAuth tier), and talks to anything OpenAI-compatible — OpenAI, GLM, DeepSeek, or a local model server.

# Anthropic
export ANTHROPIC_API_KEY=sk-ant-...
hara config set provider anthropic
hara config set model claude-opus-4-8
 
# Qwen — free device login (no key)
hara login qwen
 
# Any OpenAI-compatible endpoint
hara config set provider openai
hara config set baseURL https://your-endpoint/v1
hara config set apiKey  sk-...
hara config set model   your-model-id

Run hara doctor any time to check that your provider, auth, and model resolve.

The config file

Global config lives in ~/.hara/config.json (written 0600 — it may hold an API key). A project can override any key with a .hara/config.json at its root.

hara config set <key> <value>   # write a value
hara config get [key]           # read config (apiKey masked)
hara config path                # print the config file path

Keys worth knowing

| Key | Values | What it does | |---|---|---| | provider | anthropic · qwen · openai · hara-gateway | model provider | | model | model id | the main coding model | | baseURL / apiKey | string | override endpoint / key | | approval | suggest · auto-edit · full-auto | how much hara does without asking — see Security & Permissions | | sandbox | off · workspace-write · read-only | shell sandbox (macOS) | | visionModel | model id | describer model so text-only models can "see" images | | embedProvider | off · ollama · qwen · openai | enable semantic search (hara index) | | routeModel | model id | cheap model for trivial turns; primary stays for coding | | fallbackModel | model id | retry on this model if the primary errors out | | autoCompact | true · false | auto-summarize before the context window overflows | | theme / notify / vimMode | — | UI, notifications, modal input |

Environment overrides

Every config key has an HARA_<KEY> env override (uppercased), which wins over the config file — handy for CI, cron, and one-offs.

HARA_MODEL=claude-haiku-4-5 HARA_APPROVAL=full-auto hara -p "bump the version"

Common ones: HARA_PROVIDER, HARA_MODEL, HARA_API_KEY, HARA_BASE_URL, HARA_APPROVAL, HARA_SANDBOX, HARA_MAX_CONCURRENCY, HARA_TUI=0 (classic readline), HARA_PROFILE.

Profiles

Stash named bundles of settings in ~/.hara/config.json and switch with --profile (or HARA_PROFILE):

{
  "provider": "anthropic",
  "model": "claude-opus-4-8",
  "profiles": {
    "fast": { "model": "claude-haiku-4-5", "approval": "full-auto" },
    "review": { "model": "claude-opus-4-8", "approval": "suggest" }
  }
}
hara --profile fast -p "regenerate the snapshot tests"

Where hara keeps things

| Path | Holds | |---|---| | ~/.hara/config.json | global config (0600) | | ~/.hara/roles/ · .hara/roles/ | role definitions (global · project) | | ~/.hara/memory/ · .hara/memory/ | durable memory | | ~/.hara/skills/ · .hara/skills/ | skills | | ~/.hara/sessions/ | saved, resumable conversations | | ~/.hara/workspace/ | default gateway working dir (safe, dir-free) | | ~/.hara/cron/jobs.json | scheduled tasks | | ~/.hara/checkpoints/ | file-state snapshots (outside your repo) | | .hara/permissions.json | bash command rules | | AGENTS.md · MEMORY.md | per-project conventions & memory |

Was this helpful?
harahara
Copyright © Cruip. All rights reserved.