Configuration and paths

1. Persistence principles

aic does not depend on SQLite. All state is files:

  • Project config lives in <project>/.aic/
  • User config lives in ~/.aic/
  • Per-tool links live in each tool’s directory
  • Registry contents are cached at ~/.aic/cache

2. Project-level paths

PathContentCommit to Git?
<project>/.aic/.aicrcProject declaration (installed Skills, active Context, MCP list, env-required list, link_mode)Yes
<project>/.aic/.aic-envProject-level environment variables (sensitive)No, add to .gitignore

.aic/.aicrc is the project’s declaration of fact. It travels with git, and a fresh aic sync after cloning restores the full configuration.

3. User-level paths

PathContent
~/.aic/config.tomlGlobal config (Registry protocol / ssh_key_path / tui_theme / mirror options)
~/.aic/aic-envGlobal environment variables (sensitive)
~/.aic/cacheLocal Git clone of the Registry (aic-registry)

Each installed Skill / Context / MCP is linked into the corresponding tool directory:

Claude Code:     <project>/.claude/skills/<name>
Codex CLI:       <project>/.codex/skills/<name>
Gemini CLI:      <project>/.gemini/skills/<name>
OpenCode:        <project>/.opencode/skills/<name>
Shared (.agents):<project>/.agents/skills/<name>
  • isolated mode (default): links only into the first four tool directories.
  • shared mode: also adds .agents/skills/<name>.
  • Windows Beta uses copy sync without admin privileges or Developer Mode. Files land in the same locations but are not symlinks.

5. OpenCode specifics

OpenCode’s path conventions differ slightly from the other tools:

  • The project Context reuses AGENTS.md (same source as CLAUDE.md / GEMINI.md but goes through the AIC managed block).
  • Provider profile switching copies opencode.json.<name> or opencode.jsonc.<name> into opencode.json / opencode.jsonc.
  • MCP only maintains the top-level mcp field of opencode.json and does not manage OpenCode permission rules or OAuth.

6. AIC managed block

To keep aic from overwriting user-authored content in CLAUDE.md / AGENTS.md / GEMINI.md, aic writes into these files inside marked managed blocks:

<!-- AIC-MANAGED-BLOCK:start id=<context-id> version=<vX.Y.Z> -->

... rendered Context content ...
<!-- AIC-MANAGED-BLOCK:end id=<context-id> -->

Anything outside the block is left untouched by aic.

7. Temporary and backup directories

PathPurposeLifecycle
<tmp>/aic-install-<rand>Installer extraction directoryRemoved immediately after install completes
~/.aic/cache/<provider>/.<name>.bakAutomatic backup before provider switchRetained until the next switch overwrites it