aikito · git:20260829.86ebef0 · 2026-08-29 · sha256 8e3b4cbcff333d09

aikito git:20260829.86ebef0A

Immutable. This exact content is served forever at /api/v1/blob/8e3b4cbcff333d09.

---
name: aikito
description: Install, configure, and operate Aikito workspaces, including memory, skills, project resources, MCP servers, subagents, adoption, synchronization, and status verification.
---

# Aikito

## Purpose

Use Aikito as the canonical, Git-managed source for durable Agent resources and
synchronize those resources into supported coding agents and projects.

## Mental Model

Keep the CLI source checkout (`~/aikito-src`) separate from the canonical user
workspace (`<workspace>`, defaults to `~/aikito`). The workspace holds every
source of truth:

```text
<workspace>/
├── agents.toml                 # detected Agents; Agent source of truth for all projects
├── skills.toml                 # global skill selection
├── skills/<skill-name>/
├── subagents.toml + subagents/
├── mcps/<name>.toml            # file-based self-registration, no central registry
├── global/AGENTS.md
├── memory/                     # global memory
└── projects/<name>/            # agent.toml, AGENTS.md, memory/
```

Agent configuration directories and project `.agents/` directories are runtime
entry points, never independent sources: modify canonical files first, then
synchronize, and never edit or treat a generated Agent-native instruction, skill,
subagent, or MCP entry as a source.

New canonical resources follow `add → edit → show → sync → status / diff /
doctor`; existing external resources enter through `adopt` and then rejoin that
path at `show`. Every resource type supports `aikito add|edit|show|rm <type>
<target>` and a scoped `sync` with `--dry-run`.

Resolve `<workspace>` with `aikito path workspace` before touching canonical
files directly; `AIKITO_DIR` temporarily overrides the persisted workspace. Use
the installed `aikito` command rather than assuming the CLI lives inside the
workspace. Treat `aikito <command> --help` as the authority for options in the
installed version, and when working from a source checkout consult its README
and linked documentation for the current architecture and safety model.

## Bootstrap

When the CLI is not installed, clone the official source outside the future
workspace, after verifying the target holds no unrelated user data and without
overwriting an existing checkout unprompted:

```bash
git clone https://github.com/lsaint/aikito.git "$HOME/aikito-src"
export PATH="$HOME/aikito-src/bin:$PATH"
```

```bash
aikito init workspace ~/aikito
aikito status
```

`aikito init workspace` refuses the CLI source tree, another source checkout,
and an unrecognized non-empty directory; do not bypass these guards. It records
only locally detected Agents in `agents.toml`. Inspect the generated files
before synchronizing anything.

## Safety Protocol

- Start read-only: inspect the relevant canonical files and run `aikito status`
  or the narrowest resource-specific status command. Do the same after every
  write, inspecting the reported targets.
- Preview before applying: `aikito adopt` without `--apply`, and `--dry-run`
  wherever synchronization supports it. Show the user the plan, conflicts, and
  credential handling first.
- Treat unmanaged targets, drifted copies, and conflicting instructions as
  user decisions. Never silently overwrite them, and never force or prune
  merely to make status green. Warn first, scope the operation to the reviewed
  target, and review orphaned managed files before `--prune`.
- Preserve unrelated user changes in both the workspace and target Agent
  configuration.
- Keep API keys, tokens, passwords, and OAuth material out of the workspace and
  Git; store environment-variable references in canonical MCP configuration and
  never print, persist, or commit captured credentials.
- A local Git repository is not safe to publish. Review memory and configuration
  for private data before adding a remote or pushing.

## Resource Routing

### Global Instructions and Skills

```bash
aikito add skill <name> [--description <desc>]
aikito show skills | aikito show skill <target>
aikito sync global --dry-run
aikito sync global
```

Adding, renaming, or removing a global skill is a cross-runtime migration, not a
directory-only edit:

- Update `skills.toml` and every reference to the old name. If the skill is a
  bundled CLI resource, update its source and init template in the CLI source
  checkout separately; the user workspace is never a release source.
- Verify that each supported Agent loading global skills has the correct
  `skills_path` in `agents.toml` and in the `aikito init` template. An Agent CLI
  and its IDE may use different global skill directories.
- Run the relevant tests, then `aikito sync global` and `aikito status`.
- Inspect each managed Agent target: the new skill is visible and any stale link
  for the old name is gone.
- Keep a global skill out of project `agent.toml` unless the project
  intentionally overrides or copies it.

### Projects

A workspace normally exists once; a project registration represents one code
directory and its project-specific resources. When a requested instruction,
skill selection, or memory is project-specific and the current code directory is
unregistered, ask whether to register it. Never register a project for a global
resource.

```bash
aikito init project [<name> <path>]      # defaults to directory name and cwd
aikito show projects | aikito show project <name>
aikito sync project <name> [--dry-run|--force]
aikito status | aikito diff
```

`init project` creates the canonical skeleton
(`projects/<name>/agent.toml`, `AGENTS.md`, `memory/`) and synchronizes its
`.agents/` runtime. Existing unmanaged runtime resources, or a project name
bound to another path, are conflicts for the user.

Project instructions and memory stay linked to canonical sources. Project skills
follow `sync_mode`: `link` keeps symbolic links; `copy` generates managed copies
for project Git tracking. `aikito status` detects copied-skill drift and
`aikito diff` compares it with the canonical skill; synchronization refuses to
replace drifted copies, so merge changes that should survive before using
`--force`.

Project instructions are linked for every Agent in the root `agents.toml` using
each configured `project_instruction_path`. Shared targets are deduplicated, an
existing unmanaged file or link is always a conflict, and an empty canonical
project `AGENTS.md` disables these links. Synchronization cleans only links
proven to target that canonical file, while `show project` reports a
repository-owned `AGENTS.md` as an informational notice.

`.agents/skills/` uses entry-level ownership: preserve project-owned skills not
selected in `agent.toml` and report them only as notices, while a selected skill
with the same name remains a conflict. Matching directory contents never prove
Aikito ownership. `.agents/memory/` is exclusively Aikito-managed, so unknown
entries there remain conflicts.

### MCP Servers

Creating `mcps/<name>.toml` registers the server automatically.

```bash
aikito add mcp <name> [--url <url> | --command <command>]
aikito sync mcp --dry-run
aikito sync mcp
aikito show mcp [--live]
aikito auth mcp <agent> <server>
```

Use `--live` only when live Agent checks are useful.

### Subagents

```bash
aikito add subagent <name> [--description <desc>]
aikito sync subagents [--dry-run|--prune]
aikito show subagents [--agent <agent>]
aikito show subagent <target> [--agent]
```

### Memory

Global memory lives in `<workspace>/memory/`, project memory in
`<workspace>/projects/<name>/memory/`.

```bash
aikito show memory [target]
aikito edit memory <target>
aikito rename memory <target> <new-name>
aikito rm memory <target>
aikito doctor --fix
```

Use the separate `durable-memory` skill to decide when knowledge is durable
enough to persist, which scope owns it, and how to version it.

### Inbox

Staging notes for review:

```bash
aikito show inbox [target]
aikito edit inbox <target>
aikito rm inbox <target>
```

## Adoption

`aikito adopt` previews existing Agent configuration; `aikito adopt --apply`
imports it only after the user reviews the plan and resolves instruction
conflicts. Application creates timestamped backups under
`~/.aikito/backups/adopt_<timestamp>`. Adoption writes into the workspace only;
Agent-native configuration changes during explicit synchronization.