Skip to content

Onboarding a contributor

This is the one page to read first. It walks a new contributor end-to-end: from understanding what AIOS is, through getting brain access and scaffolding a workspace, to landing your first pull request. Each step links to the deeper guide for that surface.


AIOS is a three-part system. You will touch all three.

PartWhat it isYour relationship to it
Your WorkspaceA git repo you clone once and work in daily — a numbered folder spine, governance conventions, validators, and multi-agent harnessesOne per person. You own it; you decide what leaves your machine.
The Team BrainThe one shared hub. Receives tier-tagged pushes from every workspace and answers natural-language queries over shared memoryShared. You push to it and query it; an admin runs it.
This siteThe public docsReference. Start here, contribute back.

Access tiers — the one invariant to internalize

Section titled “Access tiers — the one invariant to internalize”

Every file in your workspace carries a tier. It decides what syncs and who sees it.

Friendly nameCanonicalSyncs?Visible to
private / personaladminNeverYou only — never leaves your machine
teamteamSyncs to brainAll team members
client / companyexternalSyncs outwardExternal stakeholders

See Your Workspace for the full spine and tier model.


People are invite-only; machines (the aios CLI) authenticate with a per-member API key. Before you can sync, a Team Brain admin issues you a key for your team. Our team slug is aios.

An admin runs this against the brain (the full admin flow lives in the brain repo’s DEVELOPMENT.md):

Terminal window
npm run admin -- create-member you@example.com --name "Your Name" --handle you --role member --team aios
npm run admin -- issue-key you@example.com --name "your-laptop" --team aios
# → prints aios_<key_id>_<secret> ONCE — sent to you over a secure channel

If you want to sign into the dashboard too, the admin can also send you a magic login link (npm run admin -- login-link you@example.com --team aios).


  1. Clone the workspace repo and install

    Terminal window
    git clone https://github.com/AIOS-alpha/aios-workspace
    cd aios-workspace
    npm install
  2. Scaffold a workspace for your context

    Pick the skin that matches you. The spine is identical; only the framing inside 0-context/ and 4-shared/ differs.

    Terminal window
    scripts/scaffold-project.sh \
    --context employee \
    --slug my-workspace \
    --stakeholder "Your Company" \
    --owner your-name \
    --team "you,teammate" \
    --org AIOS-alpha \
    --output ~/Projects/my-workspace
  3. Validate the fresh scaffold

    Terminal window
    cd ~/Projects/my-workspace
    /path/to/aios-workspace/validation/validate-all.sh .

    All checks should pass on a clean scaffold.


Point your workspace at the brain and drop in your key.

  1. Put your key in the environment (never commit it):

    Terminal window
    # .env in your workspace (gitignored)
    AIOS_API_KEY=aios_<key_id>_<secret>
  2. Set the brain URL and team in aios.yaml:

    version: 1
    brain_url: https://your-brain.example.com # ask your admin for the team URL
    team_id: aios
    api_key_env: AIOS_API_KEY # names the env var holding your key

    aios.yaml references your key by env var (api_key_env), so the secret lives in .env and never in the committed config.

See the CLI reference for every config field and the environment-variable overrides.


  1. Preview what would sync

    Terminal window
    aios status
    # → new / modified / blocked / clean, with the tier + block reason per file

    Files without tier frontmatter show up as blocked — that’s the default-deny working.

  2. Add tier frontmatter to a file you want to share. The friendly label goes in the YAML frontmatter:

    ---
    title: Sprint 1 retrospective
    access: team
    ---
  3. Push team-tier content to the brain

    Terminal window
    aios push # everything eligible
    aios push --dry-run # preview only

    Only team and external content is sent; admin content is default-denied before any network call (and independently 422’d by the brain).

  4. Pull team updates back

    Terminal window
    aios pull
    # → writes updates into 1-inbox/from-brain/ and task rows into 3-log/
  5. Query shared memory

    Terminal window
    aios query "what decisions did we make this week?"
    # → streams a cited answer

Once you’re synced, you’re ready to land a change. Each repo has its own contributor guide — read the one for the repo you’re touching.

The shape of a first contribution is the same everywhere:

  1. Find an issue — look for good first issue in the tracker, or ask a maintainer which epic needs hands.

  2. Work in a git worktree, never a feature branch in the primary checkout. Others work in the primary checkout concurrently, so commit feature work in a sibling worktree:

    Terminal window
    git fetch origin
    git worktree add -b feat/<short-task> ../<repo>-<short-task> origin/main
    cd ../<repo>-<short-task>
  3. Write spec-first tests in the right tier (in the brain: unit / data-mechanics / integration — see its DEVELOPMENT.md), then run them. A test derived from what the product should do that goes red found a real gap.

  4. Keep the docs honest — for the brain, update docs/ARCHITECTURE.md in the same PR; if you add a route, table, or ingestion source, update the drift blocks or npm run check:docs fails.

  5. Green before you open it — run the repo’s lint + tests, paste the output in the PR, then open it from the worktree branch.

See Contributing for the per-repo development setup and the full first-contribution checklist.