Installation
This page describes safe installation flows. The installer is conservative:
planning and dry-run previews are the default workflow, and real home-directory
writes require both --apply and --real-system.
Native Windows mutation is temporarily fail-closed. Planning, prechecks, and dry-runs remain available, but install/apply, uninstall, rollback, OpenClaw target writes, and Antigravity settings writes are rejected until replacement and deletion operate against the same Windows handle used for reparse-point, owner, and DACL validation. WSL/Linux mutation of a mounted Windows profile is a different substrate and must follow its own mounted-profile safety policy.
Use make precheck or ./make.ps1 precheck first when installing on a new
machine. The launchers detect a usable runtime instead of requiring a specific
command name. Use plan before install. Partial installs are first-class:
select --skill, --skills, or --profile. Artifact installs are also
partial: select --artifact, --artifacts, or --artifact-profile.
doctor is a quick required-tool check. precheck is broader: it detects
required tools, optional tools, Python packages, remote-service configuration
placeholders, detected agents, skipped agents, ignored dependencies,
target-specific prechecks, and Windows/WSL substrate information where
possible. precheck --json includes target_prechecks for every requested or
detected target. Each entry reports host-inspected home, skill, instruction,
optional skill, artifact-directory, install-mode, and read-policy metadata; the
path_style field labels the selected platform path convention but the path
values remain paths inspected from the current host/root. Target prechecks do
not read target file contents; known auth-token sources are reported by
presence only rather than value. external_agent_prechecks reports sanitized
Claude, DeepSeek, Copilot, Antigravity, Grok, Kimi, and reference-only OpenClaw
delegation readiness, including latest-model/highest-thinking probe requirements
and nested-worker capability status. Copilot extends the base precheck with CLI
detection, the .copilot directory shape, redacted auth-source presence,
provider/model probe status, delegation authority metadata, and a separate
copilot_status field for CLI/account/model readiness; command arguments and
version output are redacted.
delegate-agent is the live external CLI adapter for parent-owned
cross-provider runs. Use delegate-agent --dry-run first; actual external
process launch requires --allow-external-cli. Research launch is fail-closed
unless a provider dispatch command and resolved latest-model/highest-thinking
settings are available.
OpenClaw
prechecks report the current fake-root-only gate and evidence requirements
without enabling real .openclaw writes.
OpenClaw real-system runtime install (advanced, evidence-gated): runtime-backed
skills can be installed to a real OpenClaw host through a separate fail-closed
flow, distinct from the v2 skill-file path. The sequence is
openclaw-runtime-probe (mint native-loader/quiescence/neutral-root evidence on
a quiescent host), openclaw-runtime-dry-run-manifest (build a content-addressed
runtime manifest), openclaw-runtime-approve-manifest, then
openclaw-runtime-apply-manifest --real-system with the confirmation phrase and
verify-before-write. Apply writes inert support files under
.openclaw/skills/<skill>/ and executable runtime files under a validated
neutral runtime root outside .openclaw. Executable files are not run inside the
OpenClaw sandbox; the host openclaw-broker (started with --serve, a per-agent
capability token file, and a managed host firewall rule) exposes them to the
sandboxed agent with per-agent tokens and verify-before-exec. This path is
optional and host-gated; the default remains fake-root-only.
OpenCode prechecks report the user-global ~/.config/opencode target,
OpenCode-native artifact directories, copy-mode default, and native smoke
expectations without reading config contents or credentials.
Antigravity prechecks report the user-global
~/.gemini/antigravity-cli target, flat global skill directory, managed plugin
payload, sparse settings file, plugin-scoped MCP config, plugin-scoped hooks
config, agy CLI discovery status, and native smoke expectations without
reading config contents or credentials.
Grok prechecks report the user-global ~/.grok target, its skills/,
agents/, commands/, rules/, and hooks/ children, config.toml and
AGENTS.md, copy-mode default, bare grok CLI discovery status, and
GROK_HOME-pinned native smoke expectations without reading config contents or
credentials; ~/.grok/settings.json is not reported because Grok does not read
it for hooks.
Kimi prechecks report the user-global ~/.kimi-code target, its skills/ and
agents/ children, AGENTS.md, copy-mode default, bare kimi CLI discovery
status, and KIMI_CODE_HOME-pinned native smoke expectations without opening
config.toml for secrets. Relocated KIMI_CODE_HOME installs are unsupported.
audit-system is read-only and compares the selected repo profile with the
current agent homes, managed state, legacy aliases, unmanaged files, dependency
status, and install-plan summaries.
Before running installer commands, clone the repository and run commands from
the repo root. The launchers need Python 3.10 or newer. On Linux and macOS,
use make or ./installer/bootstrap.sh; on Windows, use ./make.ps1, which
requires pwsh or powershell.exe. The direct Python entrypoint is useful for
debugging wrapper behavior:
python3 -m installer.ai_agents_skills help
python3 -m installer.ai_agents_skills describe zotero
Restored runtime secret projection
Managed runtime skills can receive restored API credentials from a strict
launcher-only env file. Set AAS_SKILL_SECRETS_FILE to an explicit absolute
path before invoking run_skill.sh or run_skill.ps1. The file accepts only
comments, blank lines, and unique non-empty KEY=value records for
AXLE_API_KEY, LEANEXPLORE_API_KEY, OCR_SPACE_API_KEY, OCR_SPACE_KEY,
OCRSPACE_API_KEY, OCRSPACE_KEY, OPENCLAW_S2_API_KEY,
PATENTSVIEW_API_KEY, SEMANTIC_SCHOLAR_API_KEY, UNPAYWALL_EMAIL, and
ZENODO_TOKEN.
The loader does not shell-source or evaluate the file. It rejects relative or
linked paths, oversized or multiply linked files, unknown/duplicate/empty
records, and unsafe permissions without printing values. On POSIX the file
must be owned by the effective user with mode 0600 (or stricter). On Windows
the PowerShell loader requires current-user ownership, allows access only to
that user, SYSTEM, and Administrators, and rejects reparse points before and
after its bounded read. The resulting values override inherited values only in
the managed launcher/child process tree; they are not exported back into the
calling shell.
Autonomous research-loop provider fallbacks use the separate
AAS_PROVIDER_SECRETS_FILE launcher pointer documented in the force-loop
operator runbook. This keeps general skill credentials distinct from provider
credentials and lets strict primary and panel children receive only their
selected provider’s explicit allowlist. Both the default force-loop and the
advanced direct drive wrappers consume that pointer.
Broker-routed compute uses AAS_COMPUTE_SECRETS_FILE, whose protected env file
accepts exactly HCLOUD_TOKEN, HCLOUD_SSH_KEYS, KAGGLE_API_TOKEN, and
KAGGLE_CONFIG_DIR. The managed unified-broker and standalone Hetzner wrappers
consume it directly, and ARL drive passes only host-pinned eligible lane keys
to an attested primary. Keep both pointers in the launcher environment, never
in agent-writable loop env files or job manifests.
Use list-skills, list-artifacts, describe, and describe-artifact to
inspect manifest content without planning writes. Use make docs to
regenerate generated docs and make docs-site to build the Sphinx site after
installing docs/requirements.txt.
Use precheck --interactive for a guided one-by-one pass through missing
dependencies. It does not install packages automatically; it shows the install
hint, lets the user skip or ignore a dependency, and tells them to rerun
precheck after installing software.
install --dry-run previews the same actions as a default install preview;
install --apply is required before any writes occur. Applied installs,
uninstalls, and rollbacks are interactive: before writing files, the installer
explains the install, uninstall, and rollback process and requires the user to
type the displayed confirmation phrase. Real home-directory writes additionally
require --real-system.
After a successful install --apply, the installer runs post-install smoke in
auto mode. That means it verifies managed installer state, checks
agent-visible skill files, and runs offline runtime smoke for selected
runtime-backed skills with safe smoke contracts. When OpenCode is selected and
the opencode CLI is available, it also runs isolated native discovery smoke
for OpenCode paths, skills, and agents. When Antigravity is selected and the
agy CLI is available, it runs isolated native smoke for agy --help,
agy plugin list, global skill file shape, plugin manifest, MCP config, hook
config, and settings scaffolds. These checks write a bounded report under
.ai-agents-skills/runs/ and use temporary scratch directories for runtime
outputs. They do not configure credentials, start servers, install packages,
or call live services. Antigravity MCP and hook files are no-op JSON scaffolds
unless a future manifest declares live entries. Use
--post-install-smoke strict in automation to make degraded smoke fail the
command, --post-install-smoke verify for integrity-only checks, or
--post-install-smoke off to skip post-install checks.
Safe First Install
Linux:
make doctor
make precheck ARGS="--profile research-core"
make plan ARGS="--profile research-core"
make install ARGS="--profile research-core --dry-run"
make lifecycle-test ARGS="--matrix default --platform-shape all"
Windows:
./make.ps1 doctor
./make.ps1 precheck --profile research-core
./make.ps1 plan --profile research-core
./make.ps1 install --profile research-core --dry-run
./make.ps1 lifecycle-test --matrix default --platform-shape windows
To test file writes without touching a real agent home, use a fake root:
make lifecycle-test ARGS="--matrix default --platform-shape all"
make fake-root-lifecycle ARGS="--profile research-core --platform-shape linux"
make fake-root-lifecycle ARGS="--profile research-core --platform-shape all"
Fake-root plans detect only agent homes that exist under the fake root. Create
.codex, .claude, .deepseek, .copilot, .config/opencode,
.gemini/antigravity-cli, or .openclaw inside the fake root for the agents
you want to exercise; a fake root with no agent homes produces no install actions,
no managed installer state, and later verification may report
no-managed-artifacts.
Real-system writes should be a final step after reviewing plan output:
make install ARGS="--profile research-core --apply --real-system"
make install ARGS="--profile research-core --apply --real-system --post-install-smoke strict"
Closure-Complete Non-OpenClaw Restore
complete-restore expands to every skill declared by the checked-out repo
revision, including skills added in future revisions. workflow-artifacts is
the exhaustive portable artifact bundle, and --runtime-profile full installs
all declared portable runtime files. Exact target and complete-action
enforcement prevent a mistyped/missing agent home or unresolved target conflict
from becoming a false-success partial restore. Explicit platform-inapplicable
support files and Antigravity aliases that collide with the managed skill
surface remain visible as declared neutral exclusions:
export AAS_RESTORE_AGENTS="codex,claude,deepseek,copilot,opencode,antigravity,grok,kimi"
make precheck ARGS="--agents $AAS_RESTORE_AGENTS --profile complete-restore --artifact-profile workflow-artifacts --runtime-profile full --require-all-requested-agents"
make plan ARGS="--agents $AAS_RESTORE_AGENTS --profile complete-restore --artifact-profile workflow-artifacts --runtime-profile full --require-all-requested-agents"
make install ARGS="--agents $AAS_RESTORE_AGENTS --profile complete-restore --artifact-profile workflow-artifacts --runtime-profile full --require-all-requested-agents --require-complete-install --apply --real-system --post-install-smoke verify"
The integrity-only post-install mode is appropriate when an outer restoration
workflow installs the declared software/Python closure immediately afterward.
Once that closure is present, run
make installed-runtime-smoke ARGS="--require-complete-coverage"; it requires
every declared runtime skill to be managed, executes every offline contract
from a verified scratch copy, neutrally reports declared manual-native,
doctor-only, and static-only exclusions, and fails on unknown coverage.
OpenClaw is deliberately absent from the command above. Real OpenClaw writes
remain delegated to its separate reviewed component and manifest workflow;
this complete-restore flow does not write .openclaw.
Runtime Files
--runtime-profile auto is the default. When a selected skill has declared
portable runtime files, the installer copies those files into a runtime root
and records them as root-scoped runtime-file artifacts. They are not installed
inside each agent’s skill directory. Use --no-runtime or
--runtime-profile none to skip runtime files, and use --runtime-root to
choose a non-default runtime location.
Default runtime roots:
Codex-only installs:
<root>/.codex/runtimeWindows multi-agent or non-Codex installs:
<root>/AppData/Local/ai-agents-skills/runtimeLinux/macOS multi-agent or non-Codex installs:
<root>/.local/share/ai-agents-skills/runtime
Before promoting files from an existing local runtime into this repo, inspect that source with the read-only inventory command:
python3 -m installer.ai_agents_skills --json runtime-inventory --source-root <runtime-root>
The inventory denies configs, databases, caches, downloaded documents, SQLite
sidecars, symlinks, personal paths, sensitive material, and persistence markers
such as cron, systemd, launchd, scheduled tasks, and Docker
restart: unless-stopped.
Runtime-backed skill config should be a local live file under the installed
runtime workspace or passed explicitly, not a canonical runtime source file.
For Docling, start from the tracked docling.example.toml, then place the live
config at $AAS_RUNTIME_WORKSPACE/config/docling.toml or pass it with
--config. The inventory allows example config templates but denies live
config.toml, workspace/config/*.toml, caches, bytecode, and downloaded
documents so credentials and local state are not accidentally promoted.
self-improving-agent also uses the shared runtime for its portable helpers.
Use those runtime commands instead of paths inside an agent skill directory:
reference install mode deliberately points back to the canonical repo and does
not copy support files. The helper smoke contract is offline and checks the
learning review, command-safety, error-detection, and integration-plan command
surface without reading credentials or live config.
Install Modes
--install-mode auto is the default. The installer resolves that request per
agent based on recorded agent-loader policy and source availability, and it
records the reason in plan --json. Symlink creation itself is verified during
apply; if a symlink cannot be created, skill files fall back to reference
adapters and support files fall back to copied files.
Codex, DeepSeek, Copilot, OpenCode, and Antigravity are compatibility
exceptions. Current Codex skill discovery loads regular user SKILL.md files
but ignores file-symlinked user SKILL.md files, so auto mode copies complete
Codex skill trees rather than retaining a source-checkout dependency. DeepSeek
native symlinked
SKILL.md loading has not been verified. Copilot agent skills are regular
SKILL.md files in ~/.copilot/skills or .github/skills; symlinked skill
loading is not assumed. OpenCode native skills are regular files under
~/.config/opencode/skills, and auto mode copies canonical skill files plus
support files for cross-platform parity. Antigravity global skills are flat
Markdown files under ~/.gemini/antigravity-cli/skills/<skill>.md, so auto
mode copies the full canonical skill body into that native global skill
directory and creates the managed Antigravity plugin/config scaffolds. In
default auto mode, Codex, OpenCode, and Antigravity resolve to copy mode, while
DeepSeek and Copilot resolve skill files to reference adapters that point at
the canonical repo skill. plan --json shows the effective install_mode, mode_reason,
capability_evidence, and fallback mode for each target before anything is
written.
Use --install-mode symlink to force symlinked skill files for every agent.
This is useful for testing future loader behavior, but it can produce Codex
skill targets that current Codex will not discover.
Use --install-mode reference for agents or environments that should not load
symlinked skills. This mode writes a thin adapter into every agent settings
directory, using SKILL.md for directory-shaped targets and <skill>.md for
Antigravity. The adapter tells the agent where the canonical repo skill file is
and does not copy support files. If a previously managed skill is switched to
reference mode, obsolete managed support files may be planned for removal
because the adapter now points back to the repo copy.
When targeting a mounted Windows profile from Linux or WSL, verify that the
reference path written into the adapter is readable by the target agent runtime.
If the agent actually runs on native Windows and cannot read the POSIX repo
path, use a native Windows checkout or --install-mode copy.
Use --install-mode copy only when the agent must have regular files inside
its settings directory. Copy mode materializes skill files and support files
with managed metadata, so it uses more space and needs reinstalling after repo
skill changes.
Optional artifacts outside skill directories are always copied because agents do not load them as canonical skill source.
Selection Model
--profile research-coreselects a workflow bundle.--skill zoteroselects one skill.--skills zotero,doclingselects a comma-separated skill set.--no-skills --artifact-profile workflow-templatesinstalls only optional artifacts.--with-depslets dependency-bound artifacts bring in their backing skills.
See Profiles, Skills, and Optional Artifacts for the available selectors.
Conflict Modes
default: create missing managed files and skip unmanaged or legacy files
--adopt: record an existing target file as user-owned managed state; verify tracks its recorded hash instead of requiring managed marker text--backup-replace: back up and replace an unmanaged target file--migrate: install a detected legacy skill under the canonical name using the selected install mode, then back up and remove the legacy alias directory
Instruction blocks are installed only when the corresponding skill artifact is
actually installed, adopted, updated, already managed, or migrated. A skipped
skill does not receive an AGENTS.md or CLAUDE.md block.
Optional artifacts are not installed by default. Use --no-skills when you
want an artifact-only install. Use --with-deps when selected dependency-bound
artifacts should bring in their required backing skills.
For an existing personal system, prefer staged migration:
Run
precheck --profile full-research.Run
audit-system --profile full-research.Review
plan --profile full-research --migratefor legacy aliases.Review
plan --profile full-research --adoptfor canonical files that already exist but are not managed.Apply one small selected scope at a time, then run
verify.
Use --artifact-profile repo-management when you want a top-level managed
notice in AGENTS.md or CLAUDE.md without installing every skill.
Scenario summary:
Scenario |
Result |
|---|---|
Agent home absent |
Agent is skipped; its dependencies are not required. |
Skill absent |
Managed skill files and support files are created. |
Skill already managed |
Files are updated or left unchanged according to hashes. |
Skill exists unmanaged |
Default plan skips it; use |
Legacy alias exists |
Default plan skips; |
Agent rejects symlinked skills |
Auto mode already resolves Codex, OpenCode, and Antigravity skill files to copied regular files, while DeepSeek and Copilot use reference adapters. Use |
Top-level management notice selected |
Adds a removable managed block explaining repo/source ownership boundaries. |
Dependency-bound artifact selected without dependency |
Artifact is blocked and skipped until the backing skill is managed or selected with |
Persona selected |
Codex gets TOML, Claude and OpenCode get Markdown frontmatter, Antigravity gets plugin-scoped Markdown frontmatter, Copilot gets |
Windows SageMath |
Prefer WSL-backed detection when native SageMath is absent. |
Related pages: Dependencies, Audit And Migration, Verification, Troubleshooting.