atris
atris: you say what you want in plain words. atris builds it, checks it, and shows you proof.
Under the hood it is an operating system for AI work. It turns any repo into a workspace an agent can actually operate: shared context it reads before it acts, a plan -> do -> review loop, durable tasks and daily logs, and verification that ends work on a real check instead of a promise.
Every owner gets persistent computers to run it:
Owner = User | Business
Owner has many Computers
Computer = workspace + files + tools + secrets + memory + agents + validation loop
A computer can be personal or shared by a business. It can run a job like code, research, CRM, reporting, event ops, support, or business ops.
Quick Start
npm install -g atris
cd your-project
atris init && atris
For Coding Agents
Read FOR_AGENTS.md first: why agents adopt Atris, 60-second start, spread-it instructions.
If you're an agent, run:
Then read the workspace's atris/atris.md and follow it exactly. atris.md is the source of truth.
What Atris Gives You
- An AI workspace on top of any repo
- Persistent AI computers for scoped jobs
- A local computer card that makes each workspace inspectable
- A strict
plan -> do -> review loop
- Daily logs, task tracking, feature packs, and project memory
- Skills, team members, integrations, and cloud sync when you need them
- A plain answer to "what did my AI actually do?": run
atris recap, or atris recap --share for a receipt-backed summary you can paste anywhere
Critical Files
| File | Purpose |
|---|
atris/atris.md | Main instructions for agents working in this repo |
atris/MAP.md | Navigation index with file:line refs |
atris/TODO.md | Human-readable task view |
atris/logs/YYYY/YYYY-MM-DD.md | Daily log, inbox, notes, completions |
atris/features/ | Feature packs with idea.md, build.md, validate.md |
atris/skills/ | Reusable skills for agents |
atris/team/ | Team member specs and local context |
atris/wiki/ | Repo memory, briefs, concepts, and wiki health |
atris/
├── atris.md
├── MAP.md
├── TODO.md
├── logs/
├── features/
├── skills/
├── team/
└── wiki/
Install
npm install -g atris
atris --version
Requires Node.js 18+.
atris task uses built-in SQLite and requires Node.js 22+.
If you want Atris cloud workspaces, businesses, or integrations, run atris setup after install.
How To Run Atris
cd your-project
atris init
atris
atris init scaffolds the workspace, including atris/wiki/. atris loads context and hands the workflow off to atris/atris.md.
If you're still shaping the idea, use atris brainstorm. If you want Atris to finish one job and prove it worked, use atris run "<objective>". If you want Atris to keep picking the next mission or member until you say stop, use atris autopilot. If you want project memory checked for stale pages and missing context, use atris loop. atris activate surfaces wiki state from atris/wiki/STATUS.md when it exists.
Core loop: plan -> do -> review
Integrates with any agent.
Publish a static site
Upload any built static site to an Atris-hosted subdomain. See
docs/site-publish.md for flags, limits, profiles, and
troubleshooting.
atris site publish dist --slug my-site --spa
atris site publish . --slug my-next-app --profile app --build # Next.js static export
Bring people together with the Host
The Host is a team member that gets to know everyone in a room (a company, a club, your own network) through one fun question at a time, keeps a card for each person, and introduces two people only when both say yes. Then it offers to find a time and checks that it happened. It never reads anyone's messages and keeps no scores.
atris member install host
atris host setup --room personal # your own network: it asks you, and drafts messages for you to send
atris host import people.jsonl # bulk add people and who already knows whom
atris host room # the host's weekly read
Put members to work
Members are helpers that work in their own copy of the repo. Three words cover it.
Run hands over one job. Atris picks the right member and starts it.
atris member run "fix one failing test"
Wake keeps members working, each one pulling the next task that fits. Give a number, or name the members you want.
atris member wake 5
atris member wake navigator executor
Wake only picks jobs that have a test to pass, so members know when they are done. Add one like this:
atris task new "fix the flaky login test" --verify "node --test test/login.test.js"
Each job gets the time limit set for building in your roster, plus a few minutes for review. To see or change it:
Naming just one member runs one step of work. Add --keep to keep that one member working.
atris member wake executor --keep
Sleep stops the members that are awake.
To watch them, open the board, or follow one member's steps as they happen.
atris member board --watch
tail -f ~/.atris/progress/executor.log
When a member finishes, ask for its result: what it changed, its receipt, and one number. Each member's copy of the repo stays until its work lands, then tidy puts it away.
atris member result executor
atris member tidy --dry-run
The older words still work as aliases: dispatch and go do what run does, and up does what wake does.
How member work gets checked and lands
Every member job ends with its own check, a command that must pass. Then a second engine reviews the change, and it is never the engine that did the work.
Work lands on its own only after you switch self-landing on, once. From then on Atris pushes the branch, opens a pull request, and turns on GitHub auto-merge, so GitHub merges it when the branch is up to date and CI passes.
Anything else keeps the work on its branch, with one plain line saying why. That covers a failed check or review, unsaved changes, a clash with the main branch, and work that touches a protected area like payments, deploys, or credentials.
A job that fails three times in a row stops and waits for a person.
Chat With Atris 2
ax is the Atris 2 chat and coding-agent CLI. It uses the hosted Atris cloud by default, streams text, shows tool activity, and keeps fresh installs away from local setup.
cd your-project
ax chat ax --fast
ax --fast "hello"
ax --pro "help me plan this task"
ax --max "reason through this hard decision"
ax --doctor
Use Fast for quick chat and low-latency Atris loops. Use Pro for deeper tool loops. Use Max for the hardest jobs; it runs the highest-reasoning model and takes longer per turn. Advanced local workspace mode is opt-in with --local plus AX_BACKEND_URL.
Play AgentXP
AgentXP is the proof-backed game loop for getting better with agents. Start it
inside any project folder:
npm exec --yes --package atris@latest -- atris play
The first run creates a local starter mission if one does not exist. The loop is:
start -> proof -> accept -> login -> sync
The player path:
atris play
atris task claim <mission-ref> --as game-manager
atris task ready <mission-ref> --as game-manager --proof "<artifact path + verifier result>"
atris task accept <mission-ref> --as justin --proof "<human review>"
atris xp card --local
atris login
atris xp sync --local
The manager path:
No proof, no AgentXP. atris task done --proof records review/RL context, but
only human atris task accept mints Career XP for the local card or hosted
leaderboard.
Agents That Sign In On Their Own
atris login signs a person in. An agent can sign itself in with an agent
client, so no one has to hand it a login token.
The owner makes the client once. The secret is shown one time, or written to a
private file with --secret-file:
atris agent-client create --name nightly-bot --scopes mcp:read,x-search --secret-file ./bot.secret
atris agent-client list
atris agent-client rotate <client_id>
atris agent-client revoke <client_id>
The agent signs in with the id and the secret file. Its short token renews on
its own; the secret and token are never printed:
atris login --client-id atc_... --client-secret-file ./bot.secret
Or set ATRIS_CLIENT_ID plus ATRIS_CLIENT_SECRET_FILE (or
ATRIS_CLIENT_SECRET) and run atris login once. It reads them, no flags
needed, and opens no browser. After that every command renews the token on
its own. ATRIS_TOKEN, when set, still wins.
Business Owners
If you want a shared owner for a company, lab, collective, community, artist, team, or project, use the business command instead of raw atris init.
atris business init "Example Co" --owner-email operator@example.com
cd ~/arena/atris-business/example-co
atris business onboard --website https://example.com --contact "Example Owner" --note "sample customer workspace"
atris align --fix
That creates the shared owner, creates its first/default computer, writes .atris/business.json, initializes .atris/state/ for events and run history, and scaffolds the local atris/ workspace under ~/arena/atris-business/<slug>/ with starter roles, a default recap template, and an initial task queue in atris/TODO.md.
If you do not have a neat source pack yet, atris business onboard is the easiest intake step: give it a website, a named human, a few notes, or run it in a folder with loose files. Atris turns that into raw intake, a starter brief, a first workflow, a safe next action, and a short operator brief.
Use the owner's language when you talk about it: