Skip to content
Configuration

Configuration

aims keeps everything in ~/.aims (or $AIMS_HOME):

PathHoldsEdit by hand?
config.jsonyour profiles and preferencesyes
state.jsonwhat aims learned: marks, usage, accounts, last useno, it is a cache
profiles/<tool>/<name>/one config folder per accountno

Both JSON files are written atomically with owner-only permissions, under a lock, so two aims processes never interleave a change.

config.json

{
  "version": 1,
  "failover": {
    "auto": true,
    "cooldownMinutes": 300,
    "threshold": 95,
    "fiveHour": true,
    "stay": false
  },
  "statusline": {
    "chain": "~/bin/my-status-line"
  },
  "tools": {
    "claude": {
      "hub": "/Users/me/.claude",
      "active": "personal",
      "order": ["personal", "work"],
      "profiles": {
        "personal": { "existing": true },
        "work": {},
        "client-x": {
          "share": "settings",
          "dir": "~/clients/x/claude",
          "exclude": ["CLAUDE.md"]
        },
        "api": {
          "share": "none",
          "env": { "ANTHROPIC_API_KEY": "sk-ant-..." }
        }
      }
    }
  }
}

Profiles

KeyMeaning
existingThis profile is the tool’s own folder and the login already in it. It runs with CLAUDE_CONFIG_DIR / CODEX_HOME exactly as you had it, usually unset, so the tool behaves as it does without aims. At most one per tool.
shareall (default), settings or none. See What accounts share.
dirThe profile’s folder, if not ~/.aims/profiles/<tool>/<name>
excludeShared entries this profile keeps private
envExtra environment for the tool, such as an API key for an account that does not log in through the browser. Variables like ANTHROPIC_API_KEY that would override a login are otherwise removed from the tool’s environment.

Tools

KeyMeaning
hubThe tool’s normal folder, recorded the first time aims needs it. Shared entries link here.
hubEnvCLAUDE_CONFIG_DIR or CODEX_HOME as you had it set, if you did
activeThe profile new sessions get. aims keeps it first in order, and moves another one here when it takes over with failover.stay on.
orderWhich profiles stand in, in turn, while the active one is limited or logged out

failover is described in Limits and failover. statusline.chain is the status line command you had before aims setup, which aims runs first.

A config file that does not parse is an error: aims stops and tells you, and never replaces it with an empty one.

Environment variables

VariableMeaning
AIMS_HOMEUse this folder instead of ~/.aims
AIMS_CLAUDE_BIN, AIMS_CODEX_BINThe tool binary to run, if not the one on PATH
AIMS_CLAUDE_PROFILE, AIMS_CODEX_PROFILEPin this terminal to a profile (what aims env sets)
AIMS_SESSION_PROFILESet by aims for the tool it starts: claude:work. Read by the status line and the MCP server.
AIMS_NO_UPDATE_CHECKSet to anything to turn off the daily release check
NO_COLORPlain output without colour
ACCESSIBLESet to anything for setup questions as plain numbered prompts, for screen readers