@bastani/atomic 0.5.0-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -0
- package/README.md +956 -0
- package/assets/settings.schema.json +52 -0
- package/package.json +68 -0
- package/src/cli.ts +197 -0
- package/src/commands/cli/chat/client.ts +18 -0
- package/src/commands/cli/chat/index.ts +247 -0
- package/src/commands/cli/chat.ts +8 -0
- package/src/commands/cli/config.ts +55 -0
- package/src/commands/cli/init/index.ts +452 -0
- package/src/commands/cli/init/onboarding.ts +45 -0
- package/src/commands/cli/init/scm.ts +190 -0
- package/src/commands/cli/init.ts +8 -0
- package/src/commands/cli/update.ts +46 -0
- package/src/commands/cli/workflow.ts +164 -0
- package/src/lib/merge.ts +65 -0
- package/src/lib/path-root-guard.ts +38 -0
- package/src/lib/spawn.ts +467 -0
- package/src/scripts/bump-version.ts +94 -0
- package/src/scripts/constants-base.ts +14 -0
- package/src/scripts/constants.ts +34 -0
- package/src/sdk/components/color-utils.ts +20 -0
- package/src/sdk/components/connectors.test.ts +661 -0
- package/src/sdk/components/connectors.ts +156 -0
- package/src/sdk/components/edge.tsx +11 -0
- package/src/sdk/components/error-boundary.tsx +38 -0
- package/src/sdk/components/graph-theme.ts +36 -0
- package/src/sdk/components/header.tsx +60 -0
- package/src/sdk/components/layout.test.ts +924 -0
- package/src/sdk/components/layout.ts +186 -0
- package/src/sdk/components/node-card.tsx +68 -0
- package/src/sdk/components/orchestrator-panel-contexts.ts +26 -0
- package/src/sdk/components/orchestrator-panel-store.test.ts +561 -0
- package/src/sdk/components/orchestrator-panel-store.ts +118 -0
- package/src/sdk/components/orchestrator-panel-types.ts +21 -0
- package/src/sdk/components/orchestrator-panel.tsx +143 -0
- package/src/sdk/components/session-graph-panel.tsx +364 -0
- package/src/sdk/components/status-helpers.ts +32 -0
- package/src/sdk/components/statusline.tsx +63 -0
- package/src/sdk/define-workflow.ts +98 -0
- package/src/sdk/errors.ts +39 -0
- package/src/sdk/index.ts +38 -0
- package/src/sdk/providers/claude.ts +316 -0
- package/src/sdk/providers/copilot.ts +43 -0
- package/src/sdk/providers/opencode.ts +43 -0
- package/src/sdk/runtime/discovery.ts +172 -0
- package/src/sdk/runtime/executor.test.ts +415 -0
- package/src/sdk/runtime/executor.ts +695 -0
- package/src/sdk/runtime/loader.ts +372 -0
- package/src/sdk/runtime/panel.tsx +9 -0
- package/src/sdk/runtime/theme.ts +76 -0
- package/src/sdk/runtime/tmux.ts +542 -0
- package/src/sdk/types.ts +114 -0
- package/src/sdk/workflows.ts +85 -0
- package/src/services/config/atomic-config.ts +124 -0
- package/src/services/config/atomic-global-config.ts +361 -0
- package/src/services/config/config-path.ts +19 -0
- package/src/services/config/definitions.ts +176 -0
- package/src/services/config/index.ts +7 -0
- package/src/services/config/settings-schema.ts +2 -0
- package/src/services/config/settings.ts +149 -0
- package/src/services/system/copy.ts +381 -0
- package/src/services/system/detect.ts +161 -0
- package/src/services/system/download.ts +325 -0
- package/src/services/system/file-lock.ts +289 -0
- package/src/services/system/skills.ts +67 -0
- package/src/theme/colors.ts +25 -0
- package/src/version.ts +7 -0
package/README.md
ADDED
|
@@ -0,0 +1,956 @@
|
|
|
1
|
+
# Atomic
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="assets/atomic.png" alt="Atomic" width="800">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
[](https://deepwiki.com/flora131/atomic)
|
|
8
|
+
[](./package.json)
|
|
9
|
+
[](./package.json)
|
|
10
|
+
[](./LICENSE)
|
|
11
|
+
|
|
12
|
+
Atomic is an open-source **multi-agent harness** that orchestrates **Claude Code**, **OpenCode**, and **GitHub Copilot CLI** through a unified interface — with a **workflow SDK**, **containerized execution**, **deep codebase research**, and **autonomous multi-hour coding sessions**.
|
|
13
|
+
|
|
14
|
+
> One CLI. Three agent SDKs. Research it, spec it, ship it — then wake up to completed code ready for review.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Table of Contents
|
|
19
|
+
|
|
20
|
+
- [Quick Start](#quick-start)
|
|
21
|
+
- [Video Overview](#video-overview)
|
|
22
|
+
- [Core Features](#core-features)
|
|
23
|
+
- [Multi-Agent SDK Support](#multi-agent-sdk-support)
|
|
24
|
+
- [Workflow SDK — Build Your Own Harness](#workflow-sdk--build-your-own-harness)
|
|
25
|
+
- [Deep Codebase Research](#deep-codebase-research)
|
|
26
|
+
- [Autonomous Execution (Ralph)](#autonomous-execution-ralph)
|
|
27
|
+
- [Containerized Execution](#containerized-execution)
|
|
28
|
+
- [Specialized Sub-Agents](#specialized-sub-agents)
|
|
29
|
+
- [Built-in Skills](#built-in-skills)
|
|
30
|
+
- [Interactive TUI](#interactive-tui)
|
|
31
|
+
- [Architecture](#architecture)
|
|
32
|
+
- [Commands Reference](#commands-reference)
|
|
33
|
+
- [Configuration](#configuration)
|
|
34
|
+
- [Installation Options](#installation-options)
|
|
35
|
+
- [Updating & Uninstalling](#updating--uninstalling)
|
|
36
|
+
- [Troubleshooting](#troubleshooting)
|
|
37
|
+
- [FAQ](#faq)
|
|
38
|
+
- [Contributing](#contributing)
|
|
39
|
+
- [License](#license)
|
|
40
|
+
- [Credits](#credits)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
### Prerequisites
|
|
47
|
+
|
|
48
|
+
- **macOS, Linux, or Windows** (PowerShell 7+ required on Windows — [install guide](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows))
|
|
49
|
+
- **At least one coding agent installed and logged in:**
|
|
50
|
+
- [Claude Code](https://code.claude.com/docs/en/quickstart) — run `claude` and complete authentication
|
|
51
|
+
- [OpenCode](https://opencode.ai) — run `opencode` and complete authentication
|
|
52
|
+
- [GitHub Copilot CLI](https://github.com/features/copilot/cli) — run `copilot` and complete authentication
|
|
53
|
+
|
|
54
|
+
### 1. Install
|
|
55
|
+
|
|
56
|
+
**Devcontainer (recommended):**
|
|
57
|
+
|
|
58
|
+
> [!TIP]
|
|
59
|
+
> Devcontainers isolate the coding agent from your host system, reducing the risk of destructive actions like unintended file deletions or misapplied shell commands. This makes them the safest way to run Atomic.
|
|
60
|
+
>
|
|
61
|
+
> Use the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) for VS Code or [DevPod](https://devpod.sh) to spawn and manage your devcontainers.
|
|
62
|
+
|
|
63
|
+
Add a single feature to your `.devcontainer/devcontainer.json` — this installs Atomic, the coding agent, GitHub CLI, and all dependencies automatically.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
your-project/
|
|
67
|
+
├── .devcontainer/
|
|
68
|
+
│ └── devcontainer.json ← add the feature here
|
|
69
|
+
├── src/
|
|
70
|
+
└── ...
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```jsonc
|
|
74
|
+
{
|
|
75
|
+
"features": {
|
|
76
|
+
"ghcr.io/flora131/atomic/claude:1": {} // or /opencode:1 or /copilot:1
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
| Feature | Reference | Agent |
|
|
82
|
+
|---------|-----------|-------|
|
|
83
|
+
| Atomic + Claude Code | `ghcr.io/flora131/atomic/claude:1` | [Claude Code](https://claude.ai) |
|
|
84
|
+
| Atomic + OpenCode | `ghcr.io/flora131/atomic/opencode:1` | [OpenCode](https://opencode.ai) |
|
|
85
|
+
| Atomic + Copilot CLI | `ghcr.io/flora131/atomic/copilot:1` | [Copilot CLI](https://github.com/github/copilot-cli) |
|
|
86
|
+
|
|
87
|
+
Each feature installs the Atomic CLI, all shared dependencies (bun, playwright-cli), agent-specific configurations (agents, skills), and the agent CLI itself. Features are versioned in sync with Atomic CLI releases.
|
|
88
|
+
|
|
89
|
+
**macOS / Linux (standalone):**
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
|
|
93
|
+
# or with wget:
|
|
94
|
+
wget -qO- https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Windows PowerShell (standalone):**
|
|
98
|
+
|
|
99
|
+
```powershell
|
|
100
|
+
irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1 | iex
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 2. Initialize Your Project
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
cd your-project
|
|
107
|
+
atomic init
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Select your coding agent when prompted. The CLI configures your project automatically.
|
|
111
|
+
|
|
112
|
+
### 3. Generate Context Files
|
|
113
|
+
|
|
114
|
+
Start a chat session and run `/init` to generate `CLAUDE.md` and `AGENTS.md`:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
atomic chat -a <claude|opencode|copilot>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
/init
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
This explores your codebase using sub-agents and generates documentation that gives coding agents the context they need.
|
|
125
|
+
|
|
126
|
+
### 4. Ship Features
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Research → Spec → Implement, Verify & Review → PR
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Research the codebase
|
|
134
|
+
/research-codebase Describe your feature or question
|
|
135
|
+
/clear
|
|
136
|
+
|
|
137
|
+
# Create a specification (review carefully — it becomes the contract)
|
|
138
|
+
/create-spec research-path
|
|
139
|
+
/clear
|
|
140
|
+
|
|
141
|
+
# Implement autonomously (run from a separate terminal)
|
|
142
|
+
atomic workflow -n ralph -a <claude|opencode|copilot> "<prompt-or-spec-path>"
|
|
143
|
+
|
|
144
|
+
# Review the implementation
|
|
145
|
+
# Ralph runs tests, reviews correctness, and fixes issues automatically —
|
|
146
|
+
# but you should still read the code changes before shipping.
|
|
147
|
+
Review the code changes against the spec. Flag anything that doesn't match.
|
|
148
|
+
|
|
149
|
+
# Commit and ship
|
|
150
|
+
/gh-commit
|
|
151
|
+
/gh-create-pr
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
> **Testing and verification are automated.** Ralph's review-debug loop runs tests, checks correctness and test coverage against the spec, and fixes issues — but we suggest to review the final diff yourself before committing.
|
|
155
|
+
|
|
156
|
+
If something breaks, use the debugging agent:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
Use the debugging agent to create a debugging report for [error message]
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Video Overview
|
|
165
|
+
|
|
166
|
+
[](https://www.youtube.com/watch?v=Lq8-qzGfoy4)
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Core Features
|
|
171
|
+
|
|
172
|
+
### Multi-Agent SDK Support
|
|
173
|
+
|
|
174
|
+
Atomic is the only harness that unifies **three production agent SDKs** behind a single interface. Switch between agents with a flag — your workflows, skills, and sub-agents work across all of them.
|
|
175
|
+
|
|
176
|
+
| Agent | SDK | Command |
|
|
177
|
+
| --- | --- | --- |
|
|
178
|
+
| Claude Code | `@anthropic-ai/claude-agent-sdk` | `atomic chat -a claude` |
|
|
179
|
+
| OpenCode | `@opencode-ai/sdk` | `atomic chat -a opencode` |
|
|
180
|
+
| GitHub Copilot CLI | `@github/copilot-sdk` | `atomic chat -a copilot` |
|
|
181
|
+
|
|
182
|
+
Each agent gets its own configuration directory (`.claude/`, `.opencode/`, `.github/`), skills, and context files — all managed by Atomic. Write a workflow once, run it on any agent.
|
|
183
|
+
|
|
184
|
+
### Workflow SDK — Build Your Own Harness
|
|
185
|
+
|
|
186
|
+
Every team has a process — triage bugs this way, ship features that way, review PRs with these checks. Most of it lives in a wiki nobody reads or in one senior engineer's head. The **Workflow SDK** (`atomic/workflows`) lets you encode that process as a chain of named sessions with raw provider SDK code — then run it from the CLI.
|
|
187
|
+
|
|
188
|
+
Drop a `.ts` file in `.atomic/workflows/<name>/<agent>/index.ts` and run it:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
atomic workflow -n hello -a claude "describe this project"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
<details>
|
|
195
|
+
<summary>See an example of the workflow definition</summary>
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
// .atomic/workflows/hello/claude/index.ts
|
|
199
|
+
import { defineWorkflow, createClaudeSession, claudeQuery } from "@bastani/atomic/workflows";
|
|
200
|
+
|
|
201
|
+
export default defineWorkflow({
|
|
202
|
+
name: "hello",
|
|
203
|
+
description: "Two-session Claude demo: describe → summarize",
|
|
204
|
+
})
|
|
205
|
+
.session({
|
|
206
|
+
name: "describe",
|
|
207
|
+
description: "Ask Claude to describe the project",
|
|
208
|
+
run: async (ctx) => {
|
|
209
|
+
await createClaudeSession({ paneId: ctx.paneId });
|
|
210
|
+
await claudeQuery({
|
|
211
|
+
paneId: ctx.paneId,
|
|
212
|
+
prompt: ctx.userPrompt,
|
|
213
|
+
});
|
|
214
|
+
ctx.save(ctx.sessionId);
|
|
215
|
+
},
|
|
216
|
+
})
|
|
217
|
+
.session({
|
|
218
|
+
name: "summarize",
|
|
219
|
+
description: "Summarize the previous session's output",
|
|
220
|
+
run: async (ctx) => {
|
|
221
|
+
await createClaudeSession({ paneId: ctx.paneId });
|
|
222
|
+
const research = await ctx.transcript("describe");
|
|
223
|
+
|
|
224
|
+
await claudeQuery({
|
|
225
|
+
paneId: ctx.paneId,
|
|
226
|
+
prompt: `Read ${research.path} and summarize it in 2-3 bullet points.`,
|
|
227
|
+
});
|
|
228
|
+
ctx.save(ctx.sessionId);
|
|
229
|
+
},
|
|
230
|
+
})
|
|
231
|
+
.compile();
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
</details>
|
|
235
|
+
|
|
236
|
+
**Key capabilities:**
|
|
237
|
+
|
|
238
|
+
| Capability | Description |
|
|
239
|
+
| --- | --- |
|
|
240
|
+
| **Sequential sessions** | Chain `.session()` calls that execute in order, each in its own tmux pane |
|
|
241
|
+
| **Transcript passing** | Access previous session output via `ctx.transcript(name)` or `ctx.getMessages(name)` |
|
|
242
|
+
| **Provider-agnostic** | Write raw SDK code for Claude, Copilot, or OpenCode inside each session's `run()` |
|
|
243
|
+
| **tmux-based execution** | Each session runs in its own tmux pane for isolation and observability |
|
|
244
|
+
| **Native SDK access** | Use `createClaudeSession`, `claudeQuery`, Copilot SDK, or OpenCode SDK directly |
|
|
245
|
+
|
|
246
|
+
Drop a `.ts` file in `.atomic/workflows/<name>/<agent>/` (project-local) or `~/.atomic/workflows/` (global). You can also ask Atomic to create workflows for you:
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
Use your workflow-creator skill to create a workflow that plans, implements, and reviews a feature.
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
<details>
|
|
253
|
+
<summary>Full Workflow SDK Reference</summary>
|
|
254
|
+
|
|
255
|
+
#### Builder API
|
|
256
|
+
|
|
257
|
+
| Method | Purpose |
|
|
258
|
+
| --- | --- |
|
|
259
|
+
| `defineWorkflow({ name, description })` | Entry point — returns a `WorkflowBuilder` |
|
|
260
|
+
| `.session({ name, description?, run })` | Add a named session (or pass an array for parallel execution) |
|
|
261
|
+
| `.compile()` | **Required** — terminal method that seals the workflow definition |
|
|
262
|
+
|
|
263
|
+
#### Session Context (`ctx`)
|
|
264
|
+
|
|
265
|
+
| Property | Type | Description |
|
|
266
|
+
| --- | --- | --- |
|
|
267
|
+
| `ctx.userPrompt` | `string` | Original user prompt from the CLI invocation |
|
|
268
|
+
| `ctx.agent` | `AgentType` | Which agent is running (`"claude"`, `"copilot"`, `"opencode"`) |
|
|
269
|
+
| `ctx.serverUrl` | `string` | The agent's server URL |
|
|
270
|
+
| `ctx.paneId` | `string` | tmux pane ID for this session |
|
|
271
|
+
| `ctx.sessionId` | `string` | Session UUID |
|
|
272
|
+
| `ctx.sessionDir` | `string` | Path to this session's storage directory on disk |
|
|
273
|
+
| `ctx.transcript(name)` | `Promise<Transcript>` | Get a previous session's transcript (`{ path, content }`) |
|
|
274
|
+
| `ctx.getMessages(name)` | `Promise<SavedMessage[]>` | Get a previous session's raw native messages |
|
|
275
|
+
| `ctx.save(messages)` | `SaveTranscript` | Save this session's output for subsequent sessions |
|
|
276
|
+
|
|
277
|
+
#### Saving Transcripts
|
|
278
|
+
|
|
279
|
+
Each provider saves transcripts differently:
|
|
280
|
+
|
|
281
|
+
| Provider | How to Save |
|
|
282
|
+
| --- | --- |
|
|
283
|
+
| **Claude** | `ctx.save(ctx.sessionId)` — auto-reads via `getSessionMessages()` |
|
|
284
|
+
| **Copilot** | `ctx.save(await session.getMessages())` — pass `SessionEvent[]` |
|
|
285
|
+
| **OpenCode** | `ctx.save(result.data)` — pass the full `{ info, parts }` response |
|
|
286
|
+
|
|
287
|
+
#### Provider Helpers
|
|
288
|
+
|
|
289
|
+
| Export | Purpose |
|
|
290
|
+
| --- | --- |
|
|
291
|
+
| `createClaudeSession({ paneId })` | Start a Claude TUI in a tmux pane |
|
|
292
|
+
| `claudeQuery({ paneId, prompt })` | Send a prompt to Claude and wait for the response |
|
|
293
|
+
| `clearClaudeSession({ paneId })` | Clear the current Claude session |
|
|
294
|
+
|
|
295
|
+
#### Key Rules
|
|
296
|
+
|
|
297
|
+
1. Every workflow file must use `export default` with `.compile()` at the end
|
|
298
|
+
2. Session names must be unique within a workflow
|
|
299
|
+
3. Sessions execute sequentially in the order they are defined
|
|
300
|
+
4. Each session runs in its own tmux pane with the chosen agent
|
|
301
|
+
5. Workflows are organized per-workflow: `.atomic/workflows/<name>/<agent>/index.ts`
|
|
302
|
+
|
|
303
|
+
For complete documentation, see the [Workflow SDK package](packages/workflow-sdk/).
|
|
304
|
+
|
|
305
|
+
</details>
|
|
306
|
+
|
|
307
|
+
### Deep Codebase Research
|
|
308
|
+
|
|
309
|
+
The `/research-codebase` command dispatches **specialized sub-agents in parallel** to analyze your codebase:
|
|
310
|
+
|
|
311
|
+
- Understand how authentication flows work in an unfamiliar codebase
|
|
312
|
+
- Track down root causes by analyzing code paths across dozens of files
|
|
313
|
+
- Search through docs, READMEs, and inline documentation
|
|
314
|
+
- Query external documentation via [DeepWiki MCP](https://deepwiki.com) integration
|
|
315
|
+
- Get up to speed on a new project in minutes instead of hours
|
|
316
|
+
|
|
317
|
+
**Research sub-agents:**
|
|
318
|
+
|
|
319
|
+
| Sub-Agent | Model | Purpose |
|
|
320
|
+
| --- | --- | --- |
|
|
321
|
+
| `codebase-locator` | Haiku | Locate files, directories, and components relevant to the research topic |
|
|
322
|
+
| `codebase-analyzer` | Sonnet | Analyze implementation details, trace data flow, and explain technical workings |
|
|
323
|
+
| `codebase-pattern-finder` | Haiku | Find similar implementations, usage examples, and existing patterns to model after |
|
|
324
|
+
| `codebase-online-researcher` | Sonnet | Fetch up-to-date information from the web and repository-specific knowledge from DeepWiki |
|
|
325
|
+
| `codebase-research-locator` | Haiku | Discover relevant documents in `research/` and `specs/` directories |
|
|
326
|
+
| `codebase-research-analyzer` | Sonnet | Extract high-value insights, decisions, and technical details from research documents |
|
|
327
|
+
|
|
328
|
+
**Why specialized research agents instead of one general-purpose agent?**
|
|
329
|
+
|
|
330
|
+
A single agent asked to "research the auth system" will try to search, read, analyze, and summarize — all within one context window. As that window fills with file contents, search results, and intermediate reasoning, the agent's ability to synthesize degrades. This is a fundamental constraint of transformer-based models: attention quality drops as context length grows.
|
|
331
|
+
|
|
332
|
+
Atomic solves this by dispatching **purpose-built sub-agents** — a `codebase-locator` that only finds relevant files, a `codebase-analyzer` that only reads and analyzes implementation details, a `codebase-online-researcher` that only queries external documentation. Each agent operates in its own context window with only the tools it needs. The parent agent receives distilled findings from each sub-agent, keeping its own context clean for synthesis.
|
|
333
|
+
|
|
334
|
+
This mirrors how effective engineering teams work: you don't send one person to simultaneously search the codebase, read the docs, and analyze the architecture. You parallelize. The result is faster research, higher-quality findings, and significantly less hallucination — because each agent is reasoning over a small, focused context rather than a bloated one.
|
|
335
|
+
|
|
336
|
+
**Run parallel research sessions** to evaluate competing approaches simultaneously:
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Terminal 1: Research LangChain approach
|
|
340
|
+
atomic chat -a claude "/research-codebase Research implementing GraphRAG using \
|
|
341
|
+
LangChain's graph retrieval patterns. Look up langchain-ai/langchain for \
|
|
342
|
+
graph store integrations."
|
|
343
|
+
|
|
344
|
+
# Terminal 2: Research Microsoft's GraphRAG
|
|
345
|
+
atomic chat -a claude "/research-codebase Research implementing GraphRAG using \
|
|
346
|
+
Microsoft's GraphRAG library. Look up microsoft/graphrag for their \
|
|
347
|
+
community detection pipeline."
|
|
348
|
+
|
|
349
|
+
# Terminal 3: Research LlamaIndex approach
|
|
350
|
+
atomic chat -a claude "/research-codebase Research implementing GraphRAG using \
|
|
351
|
+
LlamaIndex's property graph index. Look up run-llama/llama_index."
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Each agent spawns sub-agents that query DeepWiki, pull external documentation, and cross-reference with your codebase. Then run `/create-spec` on each research doc, spin up git worktrees, and run `atomic workflow -n ralph` in each — wake up to three complete implementations on separate branches.
|
|
355
|
+
|
|
356
|
+
> Works identically with `atomic chat -a opencode` and `atomic chat -a copilot`.
|
|
357
|
+
|
|
358
|
+
Research outputs persist in your `research/` directory and specs persist in your `specs/` directory — both become context for future sessions, so every investigation and every specification compounds.
|
|
359
|
+
|
|
360
|
+
### Autonomous Execution (Ralph)
|
|
361
|
+
|
|
362
|
+
<p align="center">
|
|
363
|
+
<img src="assets/ralph-wiggum.jpg" alt="Ralph Wiggum" width="600">
|
|
364
|
+
</p>
|
|
365
|
+
|
|
366
|
+
The [Ralph Wiggum Method](https://ghuntley.com/ralph/) enables **multi-hour autonomous coding sessions**. After approving your spec, let Ralph work in the background while you focus on other tasks.
|
|
367
|
+
|
|
368
|
+
**How Ralph works:**
|
|
369
|
+
|
|
370
|
+
1. **Task Decomposition** — A `planner` sub-agent breaks your spec into a structured task list with dependency tracking, stored in a SQLite database with WAL mode for parallel access
|
|
371
|
+
2. **Worker Loop** — Dispatches `worker` sub-agents for ready tasks, executing up to 100 iterations with concurrent execution of independent tasks
|
|
372
|
+
3. **Review & Debug** — A `reviewer` sub-agent audits the implementation; if issues are found, a `debugger` sub-agent generates a report that feeds back to the planner on the next iteration
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
# From a prompt
|
|
376
|
+
atomic workflow -n ralph -a <claude|opencode|copilot> "Build a REST API for user management"
|
|
377
|
+
|
|
378
|
+
# From a spec file
|
|
379
|
+
atomic workflow -n ralph -a claude "specs/YYYY-MM-DD-my-feature.md"
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Best practice:** Run Ralph in a separate [git worktree](https://git-scm.com/docs/git-worktree) to isolate autonomous execution:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
git worktree add ../my-project-ralph feature-branch
|
|
386
|
+
cd ../my-project-ralph
|
|
387
|
+
atomic workflow -n ralph -a claude "Build the auth module"
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### Containerized Execution
|
|
391
|
+
|
|
392
|
+
Atomic ships as **devcontainer features** that bundle the CLI, agent, and all dependencies into isolated containers. This is the recommended way to run autonomous agents safely.
|
|
393
|
+
|
|
394
|
+
```jsonc
|
|
395
|
+
// .devcontainer/devcontainer.json
|
|
396
|
+
{
|
|
397
|
+
"image": "mcr.microsoft.com/devcontainers/rust:latest",
|
|
398
|
+
"features": {
|
|
399
|
+
"ghcr.io/flora131/atomic/claude:1": {},
|
|
400
|
+
"ghcr.io/devcontainers/features/github-cli:1": {}
|
|
401
|
+
},
|
|
402
|
+
"remoteEnv": {
|
|
403
|
+
"ANTHROPIC_API_KEY": "${localEnv:ANTHROPIC_API_KEY}"
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
**Why containerize?**
|
|
409
|
+
|
|
410
|
+
- Agents run `rm`, `git reset --hard`, and arbitrary shell commands — containers limit blast radius
|
|
411
|
+
- Reproducible environments across team members and CI
|
|
412
|
+
- Pre-installed dependencies: bun, playwright-cli, agent CLI, GitHub CLI
|
|
413
|
+
- Features are versioned in sync with Atomic releases
|
|
414
|
+
|
|
415
|
+
Each feature installs Atomic + one agent. Mix and match across projects:
|
|
416
|
+
|
|
417
|
+
| Feature | Installs |
|
|
418
|
+
| --- | --- |
|
|
419
|
+
| `ghcr.io/flora131/atomic/claude:1` | Atomic + Claude Code |
|
|
420
|
+
| `ghcr.io/flora131/atomic/opencode:1` | Atomic + OpenCode |
|
|
421
|
+
| `ghcr.io/flora131/atomic/copilot:1` | Atomic + Copilot CLI |
|
|
422
|
+
|
|
423
|
+
### Specialized Sub-Agents
|
|
424
|
+
|
|
425
|
+
Atomic doesn't use one general-purpose agent for everything. It dispatches **purpose-built sub-agents**, each with scoped context, tools, and termination conditions:
|
|
426
|
+
|
|
427
|
+
| Sub-Agent | Purpose |
|
|
428
|
+
| --- | --- |
|
|
429
|
+
| `planner` | Decompose specs into structured task lists with dependency tracking |
|
|
430
|
+
| `worker` | Implement single focused tasks (multiple workers run in parallel) |
|
|
431
|
+
| `reviewer` | Audit implementations against specs and best practices |
|
|
432
|
+
| `code-simplifier` | Simplify and refine code for clarity, consistency, and maintainability |
|
|
433
|
+
| `orchestrator` | Coordinate complex multi-step workflows |
|
|
434
|
+
| `codebase-analyzer` | Analyze implementation details of specific components |
|
|
435
|
+
| `codebase-locator` | Locate files, directories, and components |
|
|
436
|
+
| `codebase-pattern-finder` | Find similar implementations and usage examples |
|
|
437
|
+
| `codebase-online-researcher` | Research using web sources and DeepWiki |
|
|
438
|
+
| `codebase-research-analyzer` | Deep dive on research topics |
|
|
439
|
+
| `codebase-research-locator` | Find documents in `research/` directory |
|
|
440
|
+
| `debugger` | Debug errors, test failures, and unexpected behavior |
|
|
441
|
+
|
|
442
|
+
**Why specialize?**
|
|
443
|
+
|
|
444
|
+
LLMs have a core architectural limitation: the more context they hold, the harder it becomes to attend to the right information at the right time. A single agent juggling a spec, dozens of files, tool outputs, and its own reasoning chain will lose track of details, repeat work, or hallucinate connections between unrelated code. This isn't a solvable prompt-engineering problem — it's how attention mechanisms work.
|
|
445
|
+
|
|
446
|
+
Specialized sub-agents turn this limitation into an advantage:
|
|
447
|
+
|
|
448
|
+
- **Context isolation** — Each sub-agent gets a fresh, minimal context window scoped to exactly one job. A `codebase-locator` doesn't carry file contents; a `worker` doesn't carry the full spec. This keeps each agent reasoning over a small, high-signal context.
|
|
449
|
+
- **Tool scoping** — Agents only see tools relevant to their role. A `reviewer` has read-only analysis tools and cannot edit files. A `worker` has edit tools but cannot spawn other workers. This eliminates entire categories of mistakes.
|
|
450
|
+
- **Parallel execution** — Independent sub-agents run concurrently. While one worker implements a database migration, another writes the API handler, and a third generates tests — all in separate context windows, all at the same time.
|
|
451
|
+
- **Composability** — Sub-agents can be combined into workflows or dispatched ad-hoc. The same `reviewer` agent used by Ralph is the one invoked when you ask for a code review in chat.
|
|
452
|
+
|
|
453
|
+
The difference is measurable: a specialized `codebase-analyzer` reading three files produces more accurate analysis than a generalist agent that has already consumed 50,000 tokens of search results, tool calls, and prior reasoning. Specialization isn't a nice-to-have — it's how you get reliable output from LLMs on real-world codebases.
|
|
454
|
+
|
|
455
|
+
Use `/agents` in any chat session to see all available sub-agents.
|
|
456
|
+
|
|
457
|
+
### Built-in Skills
|
|
458
|
+
|
|
459
|
+
Skills are structured capability modules that give agents best practices and workflows for specific tasks. Atomic ships with the following skills:
|
|
460
|
+
|
|
461
|
+
| Category | Skill | Description |
|
|
462
|
+
| --- | --- | --- |
|
|
463
|
+
| **Development** | `create-spec` | Create detailed execution plans from research documents |
|
|
464
|
+
| | `research-codebase` | Analyze codebase with parallel sub-agents and document findings |
|
|
465
|
+
| | `explain-code` | Explain code functionality in detail using DeepWiki |
|
|
466
|
+
| | `workflow-creator` | Create multi-agent workflows using the session-based `defineWorkflow()` API |
|
|
467
|
+
| | `init` | Generate `CLAUDE.md` and `AGENTS.md` by exploring the codebase |
|
|
468
|
+
| | `find-skills` | Discover and install agent skills from the community |
|
|
469
|
+
| **Code Quality** | `test-driven-development` | Write tests first, then implement — includes testing anti-patterns guide |
|
|
470
|
+
| | `prompt-engineer` | Create, improve, and optimize prompts using best practices |
|
|
471
|
+
| | `frontend-design` | Create distinctive, production-grade frontend interfaces |
|
|
472
|
+
| **Documents** | `pdf` | Read, create, edit, split, merge, and OCR PDF files |
|
|
473
|
+
| | `xlsx` | Create, read, edit, and fix spreadsheet files (`.xlsx`, `.csv`, `.tsv`) |
|
|
474
|
+
| | `docx` | Create, read, edit, and manipulate Word (`.docx`) documents |
|
|
475
|
+
| | `pptx` | Create, read, edit, and manipulate PowerPoint (`.pptx`) slide decks |
|
|
476
|
+
| | `liteparse` | Parse and convert unstructured files (PDF, DOCX, PPTX, images) locally |
|
|
477
|
+
| **Git** | `gh-commit` | Create well-formatted commits using conventional commit format |
|
|
478
|
+
| | `gh-create-pr` | Commit unstaged changes, push, and submit a pull request |
|
|
479
|
+
| **Sapling / Phabricator** | `sl-commit` | Create well-formatted Sapling commits with conventional commit format |
|
|
480
|
+
| | `sl-submit-diff` | Submit Sapling commits as Phabricator diffs for code review |
|
|
481
|
+
| **Automation** | `playwright-cli` | Automate browser interactions for testing, screenshots, and data extraction |
|
|
482
|
+
| **Meta** | `skill-creator` | Create, modify, evaluate, and benchmark your own skills |
|
|
483
|
+
|
|
484
|
+
Skills are auto-invoked when relevant — `test-driven-development` activates before any test is written, `playwright-cli` activates for browser automation tasks.
|
|
485
|
+
|
|
486
|
+
### Interactive TUI
|
|
487
|
+
|
|
488
|
+
Atomic provides a rich terminal interface built on [OpenTUI](https://github.com/anomalyco/opentui):
|
|
489
|
+
|
|
490
|
+
- **@Mentions** — Reference files with autocomplete
|
|
491
|
+
- **Agent activity tree** — Watch parallel sub-agents execute in real-time
|
|
492
|
+
- **Task list tracking** — See Ralph's progress through your task list
|
|
493
|
+
- **Streaming messages** — Chat-style interface with live token streaming
|
|
494
|
+
- **Model selector** — Interactive picker with reasoning effort controls
|
|
495
|
+
- **Theme support** — Dark and light themes via `--theme` flag or `/theme` command
|
|
496
|
+
- **Verbose mode** — Toggle to see agent activity, tool calls, and token usage
|
|
497
|
+
|
|
498
|
+
| Shortcut | Action |
|
|
499
|
+
| --- | --- |
|
|
500
|
+
| `Ctrl+O` | Open transcript view |
|
|
501
|
+
| `Ctrl+C` | Interrupt current operation |
|
|
502
|
+
| `Shift+Enter` | Insert newline |
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
## Architecture
|
|
507
|
+
|
|
508
|
+
**You own the decisions. Agents own the execution.**
|
|
509
|
+
|
|
510
|
+
Every feature follows this cycle. Specs and research become persistent context for future sessions. You review at two critical points: after research (did the agent understand the codebase?) and after the spec (is the plan correct?).
|
|
511
|
+
|
|
512
|
+
```
|
|
513
|
+
Research → Specs → Execution → Outcomes → Specs (persistent context)
|
|
514
|
+
↑ ↓
|
|
515
|
+
└────────────────────────────────────┘
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
### Why Research → Plan → Implement → Verify Works
|
|
519
|
+
|
|
520
|
+
Most failures in AI-assisted coding come from the same root cause: **the agent didn't have enough context before it started writing code**. An agent that jumps straight to implementation is guessing at architecture, conventions, and constraints — and the further it gets, the more expensive it is to correct course. This is true regardless of model capability.
|
|
521
|
+
|
|
522
|
+
Atomic's architecture is built around a four-phase cycle that plays to how LLMs actually work best:
|
|
523
|
+
|
|
524
|
+
**1. Research** — Before touching any code, the agent builds a factual understanding of the codebase. Specialized research sub-agents fan out in parallel: locating relevant files, analyzing implementations, querying external documentation. The output is a structured research document — not a plan, not code, just facts. This gives the human a checkpoint: *did the agent actually understand the codebase?* If the research is wrong, you catch it here instead of after 500 lines of incorrect implementation.
|
|
525
|
+
|
|
526
|
+
**2. Plan (Spec)** — The agent produces a technical specification grounded in the research. This is the most important human review point. A spec is a contract: it defines what will be built, what files will be touched, what the expected behavior is. Specs are cheap to revise; implementations are expensive to rewrite. By forcing a planning phase, Atomic ensures the agent commits to a coherent strategy before writing any code.
|
|
527
|
+
|
|
528
|
+
**3. Implement** — With a validated spec, the planner decomposes work into discrete tasks with dependency tracking. Worker sub-agents execute tasks in parallel, each in its own context window, each focused on a single unit of work. This is where specialization pays off — a worker implementing a database migration doesn't need to hold the full API spec in context. It just needs its task, the relevant files, and the tools to edit them.
|
|
529
|
+
|
|
530
|
+
**4. Verify** — A reviewer sub-agent audits the implementation against the original spec. If issues are found, a debugger generates a report that feeds back to the planner on the next iteration. This catches errors before they compound — a misnamed field caught during review is a one-line fix; the same error caught by a user in production is a multi-file cascade.
|
|
531
|
+
|
|
532
|
+
**Why this matters for LLMs specifically:**
|
|
533
|
+
|
|
534
|
+
LLMs are stateless — they don't retain memory between turns beyond what's in the context window. Without structure, a long coding session becomes a degrading context window where early decisions get pushed out and the agent loses coherence. Atomic's phased approach solves this by externalizing state: research documents persist to disk, specs become files, task lists live in a SQLite database, and review feedback generates new tasks. Each phase produces artifacts that the next phase consumes, so no single agent needs to hold the entire problem in its context window.
|
|
535
|
+
|
|
536
|
+
This is also why the cycle is iterative. Research and specs become persistent context for future sessions — every investigation compounds. The agent that implements your next feature starts with richer context than the one that implemented the first, without anyone having to re-explain the codebase.
|
|
537
|
+
|
|
538
|
+
[](assets/architecture.svg)
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
## Commands Reference
|
|
543
|
+
|
|
544
|
+
### CLI Commands
|
|
545
|
+
|
|
546
|
+
| Command | Description |
|
|
547
|
+
| --- | --- |
|
|
548
|
+
| `atomic init` | Interactive project setup |
|
|
549
|
+
| `atomic chat` | Start TUI chat with a coding agent |
|
|
550
|
+
| `atomic workflow` | Run a multi-session agent workflow |
|
|
551
|
+
| `atomic config set <k> <v>` | Set configuration values |
|
|
552
|
+
| `atomic update` | Self-update (binary installs only) |
|
|
553
|
+
| `atomic uninstall` | Remove installation (binary installs only) |
|
|
554
|
+
|
|
555
|
+
#### `atomic chat` Flags
|
|
556
|
+
|
|
557
|
+
| Flag | Description |
|
|
558
|
+
| --- | --- |
|
|
559
|
+
| `-a, --agent <name>` | Agent: `claude`, `opencode`, `copilot` |
|
|
560
|
+
|
|
561
|
+
All other arguments are forwarded directly to the native agent CLI. For example:
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
atomic chat -a claude "fix the bug" # Initial prompt
|
|
565
|
+
atomic chat -a copilot --model gpt-4o # Custom model
|
|
566
|
+
atomic chat -a claude --verbose # Forward --verbose to claude
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
#### `atomic workflow` Flags
|
|
570
|
+
|
|
571
|
+
| Flag | Description |
|
|
572
|
+
| --- | --- |
|
|
573
|
+
| `-n, --name <name>` | Workflow name (matches directory under `.atomic/workflows/<name>/`) |
|
|
574
|
+
| `-a, --agent <name>` | Agent: `claude`, `opencode`, `copilot` |
|
|
575
|
+
| `-l, --list` | List available workflows |
|
|
576
|
+
| `[prompt...]` | Prompt for the workflow |
|
|
577
|
+
|
|
578
|
+
### Slash Commands
|
|
579
|
+
|
|
580
|
+
| Command | Arguments | Description |
|
|
581
|
+
| --- | --- | --- |
|
|
582
|
+
| `/help` | | Show available commands |
|
|
583
|
+
| `/clear` | | Clear messages and reset session |
|
|
584
|
+
| `/compact` | | Compact context to reduce token usage |
|
|
585
|
+
| `/model` | `[model\|list\|select]` | View/switch model |
|
|
586
|
+
| `/mcp` | `[enable\|disable]` | Toggle MCP servers |
|
|
587
|
+
| `/theme` | `[dark\|light]` | Toggle theme |
|
|
588
|
+
| `/agents` | | List discovered sub-agents |
|
|
589
|
+
| `/exit` | | Exit chat |
|
|
590
|
+
| `/init` | | Generate `CLAUDE.md` and `AGENTS.md` |
|
|
591
|
+
| `/research-codebase` | `"<question>"` | Analyze codebase and document findings |
|
|
592
|
+
| `/create-spec` | `"<research-path>"` | Generate technical specification |
|
|
593
|
+
| `/explain-code` | `"<path>"` | Explain code in detail |
|
|
594
|
+
| `/gh-commit` | | Create a Git commit |
|
|
595
|
+
| `/gh-create-pr` | | Commit, push, and open a PR |
|
|
596
|
+
| `/sl-commit` | | Create a Sapling commit |
|
|
597
|
+
| `/sl-submit-diff` | | Submit to Phabricator |
|
|
598
|
+
|
|
599
|
+
---
|
|
600
|
+
|
|
601
|
+
## Configuration
|
|
602
|
+
|
|
603
|
+
### `.atomic/settings.json`
|
|
604
|
+
|
|
605
|
+
Created automatically during `atomic init`. Resolution order:
|
|
606
|
+
|
|
607
|
+
1. Local: `.atomic/settings.json`
|
|
608
|
+
2. Global: `~/.atomic/settings.json`
|
|
609
|
+
|
|
610
|
+
```json
|
|
611
|
+
{
|
|
612
|
+
"version": 1,
|
|
613
|
+
"scm": "github",
|
|
614
|
+
"model": {
|
|
615
|
+
"claude": "sonnet",
|
|
616
|
+
"copilot": "gpt-4o"
|
|
617
|
+
},
|
|
618
|
+
"reasoningEffort": {
|
|
619
|
+
"claude": "high"
|
|
620
|
+
},
|
|
621
|
+
"lastUpdated": "2026-02-12T12:00:00.000Z"
|
|
622
|
+
}
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
| Field | Type | Description |
|
|
626
|
+
| --- | --- | --- |
|
|
627
|
+
| `version` | number | Config schema version (currently `1`) |
|
|
628
|
+
| `scm` | string | Source control: `github` or `sapling` |
|
|
629
|
+
| `model` | object | Default model per agent (e.g. `"claude": "opus"`) |
|
|
630
|
+
| `reasoningEffort` | object | Reasoning effort per agent (e.g. `"claude": "high"`) |
|
|
631
|
+
| `lastUpdated` | string | ISO 8601 timestamp |
|
|
632
|
+
|
|
633
|
+
You can also set the model per session via CLI flag or interactively during chat:
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
# CLI flag (single session only)
|
|
637
|
+
atomic chat -a claude -m opus
|
|
638
|
+
|
|
639
|
+
# Interactive selector (persists to global settings)
|
|
640
|
+
/model select
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
The `/model select` command opens an interactive picker that also lets you set reasoning effort for models that support it.
|
|
644
|
+
|
|
645
|
+
### Agent-Specific Files
|
|
646
|
+
|
|
647
|
+
| Agent | Folder | Skills | Context File |
|
|
648
|
+
| --- | --- | --- | --- |
|
|
649
|
+
| Claude Code | `.claude/` | `.claude/skills/` | `CLAUDE.md` |
|
|
650
|
+
| OpenCode | `.opencode/` | `.agents/skills/` (shared) | `AGENTS.md` |
|
|
651
|
+
| GitHub Copilot | `.github/` | `.agents/skills/` (shared) | `AGENTS.md` |
|
|
652
|
+
|
|
653
|
+
> **Note:** OpenCode and Copilot CLI share skills via the `.agents/skills/` directory to avoid duplication. Claude Code uses its own `.claude/skills/` directory.
|
|
654
|
+
|
|
655
|
+
---
|
|
656
|
+
|
|
657
|
+
## Installation Options
|
|
658
|
+
|
|
659
|
+
<details>
|
|
660
|
+
<summary>Install a specific version</summary>
|
|
661
|
+
|
|
662
|
+
**macOS / Linux:**
|
|
663
|
+
|
|
664
|
+
```bash
|
|
665
|
+
curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash -s -- v1.0.0
|
|
666
|
+
# or with VERSION env var:
|
|
667
|
+
VERSION=v1.0.0 curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
**Windows PowerShell:**
|
|
671
|
+
|
|
672
|
+
```powershell
|
|
673
|
+
iex "& { $(irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1) } -Version v1.0.0"
|
|
674
|
+
# or with VERSION env var:
|
|
675
|
+
$env:VERSION='v1.0.0'; irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1 | iex
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
</details>
|
|
679
|
+
|
|
680
|
+
<details>
|
|
681
|
+
<summary>Install a prerelease version</summary>
|
|
682
|
+
|
|
683
|
+
> **Warning:** Prerelease versions may contain breaking changes or bugs. Use for testing only.
|
|
684
|
+
|
|
685
|
+
**macOS / Linux:**
|
|
686
|
+
|
|
687
|
+
```bash
|
|
688
|
+
curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash -s -- --prerelease
|
|
689
|
+
# or with VERSION env var:
|
|
690
|
+
VERSION=prerelease curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
**Windows PowerShell:**
|
|
694
|
+
|
|
695
|
+
```powershell
|
|
696
|
+
iex "& { $(irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1) } -Prerelease"
|
|
697
|
+
# or with VERSION env var:
|
|
698
|
+
$env:VERSION='prerelease'; irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1 | iex
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
</details>
|
|
702
|
+
|
|
703
|
+
<details>
|
|
704
|
+
<summary>Authenticated downloads (CI / enterprise)</summary>
|
|
705
|
+
|
|
706
|
+
Set `GITHUB_TOKEN` to use authenticated GitHub API requests, which avoids rate limits in CI/CD or enterprise environments:
|
|
707
|
+
|
|
708
|
+
**macOS / Linux:**
|
|
709
|
+
|
|
710
|
+
```bash
|
|
711
|
+
GITHUB_TOKEN=ghp_... curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
**Windows PowerShell:**
|
|
715
|
+
|
|
716
|
+
```powershell
|
|
717
|
+
$env:GITHUB_TOKEN='ghp_...'; irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1 | iex
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
</details>
|
|
721
|
+
|
|
722
|
+
<details>
|
|
723
|
+
<summary>Devcontainer examples</summary>
|
|
724
|
+
|
|
725
|
+
**Atomic + Claude in a Rust project:**
|
|
726
|
+
|
|
727
|
+
```jsonc
|
|
728
|
+
{
|
|
729
|
+
"image": "mcr.microsoft.com/devcontainers/rust:latest",
|
|
730
|
+
"features": {
|
|
731
|
+
"ghcr.io/flora131/atomic/claude:1": {},
|
|
732
|
+
"ghcr.io/devcontainers/features/github-cli:1": {}
|
|
733
|
+
},
|
|
734
|
+
"remoteEnv": {
|
|
735
|
+
"ANTHROPIC_API_KEY": "${localEnv:ANTHROPIC_API_KEY}"
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
**Atomic + Copilot in a Python project:**
|
|
741
|
+
|
|
742
|
+
```jsonc
|
|
743
|
+
{
|
|
744
|
+
"image": "mcr.microsoft.com/devcontainers/python:3.12",
|
|
745
|
+
"features": {
|
|
746
|
+
"ghcr.io/flora131/atomic/copilot:1": {},
|
|
747
|
+
"ghcr.io/devcontainers/features/github-cli:1": {}
|
|
748
|
+
},
|
|
749
|
+
"remoteEnv": {
|
|
750
|
+
"GH_TOKEN": "${localEnv:GH_TOKEN}"
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
**Atomic + OpenCode in a Go project:**
|
|
756
|
+
|
|
757
|
+
```jsonc
|
|
758
|
+
{
|
|
759
|
+
"image": "mcr.microsoft.com/devcontainers/go:1.22",
|
|
760
|
+
"features": {
|
|
761
|
+
"ghcr.io/flora131/atomic/opencode:1": {},
|
|
762
|
+
"ghcr.io/devcontainers/features/github-cli:1": {}
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
```
|
|
766
|
+
|
|
767
|
+
</details>
|
|
768
|
+
|
|
769
|
+
<details>
|
|
770
|
+
<summary>Source control selection</summary>
|
|
771
|
+
|
|
772
|
+
During `atomic init`, you'll select your source control system:
|
|
773
|
+
|
|
774
|
+
| SCM Type | CLI Tool | Code Review | Use Case |
|
|
775
|
+
| --- | --- | --- | --- |
|
|
776
|
+
| GitHub / Git | `git` | Pull Requests | Most projects |
|
|
777
|
+
| Sapling + Phabricator | `sl` | Phabricator Diffs | Stacked workflows |
|
|
778
|
+
|
|
779
|
+
**Sapling + Phabricator:** Ensure `.arcconfig` exists in your repo root. Use `/sl-commit` and `/sl-submit-diff`.
|
|
780
|
+
|
|
781
|
+
**Windows note:** Sapling templates use the full path `& 'C:\Program Files\Sapling\sl.exe'` to avoid conflicts with PowerShell's `sl` alias.
|
|
782
|
+
|
|
783
|
+
</details>
|
|
784
|
+
|
|
785
|
+
---
|
|
786
|
+
|
|
787
|
+
## Updating & Uninstalling
|
|
788
|
+
|
|
789
|
+
### Update
|
|
790
|
+
|
|
791
|
+
```bash
|
|
792
|
+
atomic update
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
### Uninstall
|
|
796
|
+
|
|
797
|
+
```bash
|
|
798
|
+
atomic uninstall # Interactive uninstall
|
|
799
|
+
atomic uninstall --dry-run # Preview what will be removed
|
|
800
|
+
atomic uninstall --keep-config # Keep config, remove binary only
|
|
801
|
+
atomic uninstall --yes # Skip confirmation
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
<details>
|
|
805
|
+
<summary>Manual uninstall</summary>
|
|
806
|
+
|
|
807
|
+
**macOS / Linux:**
|
|
808
|
+
|
|
809
|
+
```bash
|
|
810
|
+
rm -f ~/.local/bin/atomic
|
|
811
|
+
rm -rf ~/.local/share/atomic
|
|
812
|
+
rm -rf ~/.atomic/.claude ~/.atomic/.opencode ~/.atomic/.copilot
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
**Windows PowerShell:**
|
|
816
|
+
|
|
817
|
+
```powershell
|
|
818
|
+
Remove-Item "$env:USERPROFILE\.local\bin\atomic.exe" -Force
|
|
819
|
+
Remove-Item "$env:LOCALAPPDATA\atomic" -Recurse -Force
|
|
820
|
+
Remove-Item "$env:USERPROFILE\.atomic\.claude" -Recurse -Force
|
|
821
|
+
Remove-Item "$env:USERPROFILE\.atomic\.opencode" -Recurse -Force
|
|
822
|
+
Remove-Item "$env:USERPROFILE\.atomic\.copilot" -Recurse -Force
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
</details>
|
|
826
|
+
|
|
827
|
+
<details>
|
|
828
|
+
<summary>Clean up project config files</summary>
|
|
829
|
+
|
|
830
|
+
> **Warning:** This deletes all project-specific settings, skills, and agents configured by Atomic.
|
|
831
|
+
|
|
832
|
+
**macOS / Linux:**
|
|
833
|
+
|
|
834
|
+
```bash
|
|
835
|
+
rm -rf .claude/ CLAUDE.md # Claude Code
|
|
836
|
+
rm -rf .opencode/ AGENTS.md # OpenCode
|
|
837
|
+
rm -f .github/copilot-instructions.md # Copilot
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
**Windows PowerShell:**
|
|
841
|
+
|
|
842
|
+
```powershell
|
|
843
|
+
Remove-Item -Path ".claude" -Recurse -Force; Remove-Item "CLAUDE.md" -Force
|
|
844
|
+
Remove-Item -Path ".opencode" -Recurse -Force; Remove-Item "AGENTS.md" -Force
|
|
845
|
+
Remove-Item -Path ".github\copilot-instructions.md" -Force
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
</details>
|
|
849
|
+
|
|
850
|
+
---
|
|
851
|
+
|
|
852
|
+
## Troubleshooting
|
|
853
|
+
|
|
854
|
+
<details>
|
|
855
|
+
<summary>Git identity error</summary>
|
|
856
|
+
|
|
857
|
+
```bash
|
|
858
|
+
git config --global user.name "Your Name"
|
|
859
|
+
git config --global user.email "you@example.com"
|
|
860
|
+
```
|
|
861
|
+
|
|
862
|
+
</details>
|
|
863
|
+
|
|
864
|
+
<details>
|
|
865
|
+
<summary>Windows command resolution</summary>
|
|
866
|
+
|
|
867
|
+
If agents fail to spawn on Windows, ensure the agent CLI is in your PATH. Atomic uses `Bun.which()` which handles `.cmd`, `.exe`, and `.bat` extensions automatically.
|
|
868
|
+
|
|
869
|
+
</details>
|
|
870
|
+
|
|
871
|
+
<details>
|
|
872
|
+
<summary>Generating CLAUDE.md / AGENTS.md</summary>
|
|
873
|
+
|
|
874
|
+
`atomic init` does **not** create these files. Run `/init` inside a chat session to generate them.
|
|
875
|
+
|
|
876
|
+
</details>
|
|
877
|
+
|
|
878
|
+
<details>
|
|
879
|
+
<summary>Sub-agent tree stuck on "Initializing..."</summary>
|
|
880
|
+
|
|
881
|
+
1. Update to the latest release (`atomic update`) and retry
|
|
882
|
+
2. Check for terminal progress events in verbose mode
|
|
883
|
+
3. Press `Ctrl+F` twice to terminate stuck background agents, then resend your prompt
|
|
884
|
+
4. If the issue persists, capture reproduction steps and [open an issue](https://github.com/flora131/atomic/issues)
|
|
885
|
+
|
|
886
|
+
</details>
|
|
887
|
+
|
|
888
|
+
<details>
|
|
889
|
+
<summary>Shift+Enter not inserting newline</summary>
|
|
890
|
+
|
|
891
|
+
- **VS Code terminal:** Keep `terminal.integrated.enableKittyKeyboardProtocol` enabled
|
|
892
|
+
- **GNOME Terminal, xterm, Alacritty, WezTerm, iTerm2:** `modifyOtherKeys` mode is enabled automatically
|
|
893
|
+
- **Universal fallback:** Use `Ctrl+J` for newline
|
|
894
|
+
- **Last resort:** End line with `\` and press Enter
|
|
895
|
+
|
|
896
|
+
</details>
|
|
897
|
+
|
|
898
|
+
---
|
|
899
|
+
|
|
900
|
+
## FAQ
|
|
901
|
+
|
|
902
|
+
<details>
|
|
903
|
+
<summary>How does Atomic differ from Spec-Kit?</summary>
|
|
904
|
+
|
|
905
|
+
[Spec Kit](https://github.com/github/spec-kit) is GitHub's toolkit for "Spec-Driven Development." Both improve AI-assisted development, but solve different problems:
|
|
906
|
+
|
|
907
|
+
| Aspect | Spec-Kit | Atomic |
|
|
908
|
+
| --- | --- | --- |
|
|
909
|
+
| **Focus** | Greenfield projects | Large existing codebases + greenfield |
|
|
910
|
+
| **First Step** | Define project principles | Analyze existing architecture |
|
|
911
|
+
| **Context** | Per-feature specs | Research → Specs → Execution → Outcomes |
|
|
912
|
+
| **Agents** | Single agent with shell scripts | 12+ specialized sub-agents across 3 SDKs |
|
|
913
|
+
| **Workflows** | Not available | Session-based pipelines with transcript passing |
|
|
914
|
+
| **Human Review** | Implicit | Explicit checkpoints |
|
|
915
|
+
| **Debugging** | Not addressed | Dedicated debugging workflow |
|
|
916
|
+
| **Autonomous** | Not available | Ralph for multi-hour execution |
|
|
917
|
+
| **Isolation** | Not addressed | Devcontainer features for safe execution |
|
|
918
|
+
|
|
919
|
+
</details>
|
|
920
|
+
|
|
921
|
+
<details>
|
|
922
|
+
<summary>How does Atomic differ from DeerFlow?</summary>
|
|
923
|
+
|
|
924
|
+
[DeerFlow](https://github.com/bytedance/deer-flow) is ByteDance's agent harness built on LangGraph/LangChain. Both are multi-agent orchestrators, but take different approaches:
|
|
925
|
+
|
|
926
|
+
| Aspect | DeerFlow | Atomic |
|
|
927
|
+
| --- | --- | --- |
|
|
928
|
+
| **Runtime** | Python (LangGraph) | TypeScript (Bun) |
|
|
929
|
+
| **Agent SDKs** | OpenAI-compatible API | Claude Code + OpenCode + Copilot CLI SDKs natively |
|
|
930
|
+
| **Focus** | General-purpose agent tasks | Coding-specific: research, spec, implement, review |
|
|
931
|
+
| **Workflows** | LangGraph state machines | Session-based chainable API with `.compile()` |
|
|
932
|
+
| **Execution** | Sandbox containers | Devcontainer features + git worktrees |
|
|
933
|
+
| **Interface** | Web UI | Terminal TUI with agent activity tree |
|
|
934
|
+
| **Autonomous** | Not available | Ralph for multi-hour coding sessions |
|
|
935
|
+
|
|
936
|
+
</details>
|
|
937
|
+
|
|
938
|
+
---
|
|
939
|
+
|
|
940
|
+
## Contributing
|
|
941
|
+
|
|
942
|
+
See [DEV_SETUP.md](DEV_SETUP.md) for development setup, testing guidelines, and contribution workflow.
|
|
943
|
+
|
|
944
|
+
---
|
|
945
|
+
|
|
946
|
+
## License
|
|
947
|
+
|
|
948
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
949
|
+
|
|
950
|
+
## Credits
|
|
951
|
+
|
|
952
|
+
- [Superpowers](https://github.com/obra/superpowers)
|
|
953
|
+
- [Anthropic Skills](https://github.com/anthropics/skills)
|
|
954
|
+
- [Ralph Wiggum Method](https://ghuntley.com/ralph/)
|
|
955
|
+
- [OpenAI Codex Cookbook](https://github.com/openai/openai-cookbook)
|
|
956
|
+
- [HumanLayer](https://github.com/humanlayer/humanlayer)
|