Advanced Project Setup¶
Complete Connect a project and Verify your first instruction before using this guide. Use this page for explicit naming, multiple checkouts, or copied skills.
Register a project when it needs its own instructions, selected skills, or project-specific memory.
Prerequisites¶
- The Aikito workspace has been initialized.
- The target project already exists.
- Every selected skill exists under the workspace
skills/directory.
Register the Project¶
From the existing code project directory:
This uses the directory name as the project name. To specify both explicitly:
The command creates and synchronizes:
It is safe to run again and preserves existing canonical files. A project name
already registered to another path, or unmanaged resources under the target
.agents/ or an agent-native instruction path, is reported as a conflict instead
of being overwritten.
Configure Project Resources¶
Edit the generated <workspace>/projects/example/agent.toml to select shared
resources and configure target paths:
name = "example"
description = "Example service workspace"
sync_mode = "link"
skills = ["durable-memory"]
# Candidate paths can be configured in one of three ways:
# 1. Single path:
path = "~/code/example"
# 2. Path list (e.g. multiple local checkouts or git worktrees):
# paths = ["~/code/example", "~/code/example-worktree"]
# 3. Named path table (ideal for cross-platform roaming across Mac/Win/Linux):
# [paths]
# mac = "~/code/example"
# win = "D:/code/example"
# worktree = "~/code/example-feature"
The project name identifies its workspace configuration. The optional
description is human-readable display metadata and does not affect project
resolution or synchronization.
Path Resolution and Offline Semantics¶
Aikito evaluates candidate paths dynamically on the local machine:
- Active paths: Candidate directories that currently exist on the local filesystem.
- Offline paths & Offline projects: Candidate directories that do not exist locally (for example,
Windows paths when running on macOS, or a secondary worktree not yet cloned).
When some candidate paths exist locally, the project syncs across those active paths.
When NO candidate paths exist on the current host, the project is considered offline on this host.
aikito status displays offline status with a dimmed badge (–), and aikito doctor reports the project as healthy
(Project '<name>': offline on this host (<candidates>)), preserving candidate paths for seamless roaming across multiple machines through Git without false-positive failures.
- Project paths: show project and the status Path column list every candidate
in configuration order, for example [1]✓ ~/code/example, [2]- ~/code/example-worktree.
Locally present directories use ✓ (v in ASCII mode); missing directories
use -. There is no privileged primary path.
Native project instruction paths come from the workspace root agents.toml; project
configs do not duplicate that list. sync_mode controls only the selected project skills:
An empty canonical project AGENTS.md disables instruction synchronization.
Aikito removes only its own obsolete links and leaves a repository-owned
AGENTS.md untouched; show project reports that file as an informational notice.
- Keep the default
linkmode when this Aikito workspace is the shared source of truth and projects should receive skill updates immediately. - Choose
copywhen the project repository should contain and track a managed snapshot of its selected skills, such as for collaborators or CI environments that do not share the workspace.
Project instructions and memory always remain linked, regardless of
sync_mode. Copied skills may diverge from their canonical workspace versions;
review and reconcile collaborator changes before running a synchronization that
would replace them. See Architecture
for the full design trade-off.
Multi-Active Synchronization Behavior¶
aikito sync project <name>: Automatically synchronizes instructions, skills, and memory across all active paths detected on the machine. This allows multiple Git worktrees for the same repository to share agent instructions and memory effortlessly without separate project registrations.aikito sync project <name> <project_path>: Synchronizes a specific target path. If the target path is not yet present inagent.toml, Aikito automatically appends it as a new candidate.- Fail-Fast Preflight Validation: Synchronization performs all validation, conflict checks, and drift detection across all active paths before writing any links or copying any files to disk. If any path fails preflight checks, the entire operation aborts without leaving any path in a half-synchronized state.
Synchronize and Verify¶
aikito sync project example --dry-run
aikito sync project example
aikito show project example
aikito status
aikito show memory
The dry run reports planned links and copies without changing the runtime or
workspace configuration. Synchronization stops before writing when it finds
unmanaged conflicts or drifted copied skills. Use aikito diff to review copy
mode drift, reconcile changes that should survive, and use --force only when
the reviewed runtime changes may be discarded. Deselected workspace links and
unchanged canonical copies are recognized as managed and cleaned automatically;
other stale content remains a conflict. Unselected project-owned skills can
coexist under .agents/skills/; selected-name collisions require review.
Do not store unrelated files under .agents/memory/, which Aikito owns exclusively.
See Architecture for the canonical-source model and Memory workflow for choosing global versus project scope.