atom-agent 1.4.0 → 1.5.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/CHANGELOG.md +70 -0
- package/README.md +221 -224
- package/dist/App.js +922 -341
- package/dist/adapters.js +502 -21
- package/dist/agent/goal-evaluator.js +3 -0
- package/dist/agent/loop.js +250 -434
- package/dist/agent/tool-pipeline.js +398 -0
- package/dist/agent/turn-events.js +12 -0
- package/dist/cli.js +57 -8
- package/dist/compact.js +72 -8
- package/dist/config.js +19 -0
- package/dist/context-manager.js +6 -2
- package/dist/extensions.js +6 -0
- package/dist/file-diffs.js +108 -0
- package/dist/kilo.js +1 -1
- package/dist/local-discovery.js +2 -2
- package/dist/media.js +276 -0
- package/dist/overflow.js +140 -0
- package/dist/policy.js +8 -0
- package/dist/providers.js +11 -3
- package/dist/scheduler.js +38 -9
- package/dist/session-revert.js +125 -0
- package/dist/sessions.js +101 -0
- package/dist/snapshots.js +69 -0
- package/dist/system.js +2 -89
- package/dist/telemetry.js +79 -5
- package/dist/todos.js +241 -0
- package/dist/tools/filesystem.js +102 -22
- package/dist/tools/registry.js +184 -45
- package/dist/tools/ripgrep.js +7 -6
- package/dist/tools/search.js +172 -17
- package/dist/tools/shared.js +6 -0
- package/dist/tools.js +7 -39
- package/dist/ui/diff-panel.js +1 -1
- package/dist/ui/diff-view.js +13 -5
- package/dist/ui/diff.js +67 -0
- package/dist/ui/errors.js +20 -6
- package/dist/ui/input.js +24 -20
- package/dist/ui/live-tail.js +36 -1
- package/dist/ui/markdown.js +9 -4
- package/dist/ui/modals.js +7 -5
- package/dist/ui/paint-scheduler.js +120 -0
- package/dist/ui/palette.js +4 -2
- package/dist/ui/pickers.js +4 -1
- package/dist/ui/side-by-side.js +81 -22
- package/dist/ui/status-bar.js +63 -8
- package/dist/ui/stream-store.js +7 -0
- package/dist/ui/theme.js +23 -1
- package/dist/ui/todo-panel.js +5 -2
- package/dist/ui/tool-inspector.js +33 -4
- package/dist/ui/transcript.js +8 -5
- package/dist/web/events.js +93 -0
- package/dist/web/runtime.js +790 -0
- package/dist/web/server.js +570 -0
- package/dist/web/ui/app.js +1925 -0
- package/dist/web/ui/index.html +135 -0
- package/dist/web/ui/styles.css +515 -0
- package/dist/zen.js +532 -34
- package/documentation/cli.md +5 -5
- package/documentation/configuration.md +11 -6
- package/documentation/development.md +4 -3
- package/documentation/goals.md +1 -1
- package/documentation/index.md +4 -4
- package/documentation/providers.md +2 -3
- package/documentation/skills.md +3 -3
- package/documentation/tools.md +8 -3
- package/documentation/troubleshooting.md +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,75 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.5.1 — 2026-09-12
|
|
4
|
+
|
|
5
|
+
- OpenCode Zen free tiers all usable (`src/adapters.ts`, `src/zen.ts`,
|
|
6
|
+
`src/providers.ts`): every request now carries the official-client
|
|
7
|
+
identity (`User-Agent: opencode/*` plus `x-opencode-session` /
|
|
8
|
+
`x-opencode-request`), clearing the upstream `429 FreeUsageLimitError`
|
|
9
|
+
and `400 MissingSessionID` gates for anonymous and keyed calls alike.
|
|
10
|
+
Suites in `tests/zen-headers.test.ts`
|
|
11
|
+
- New Responses-family transport (`src/adapters.ts`,
|
|
12
|
+
`src/zen.ts`): `muse-spark-1.2` / `muse-spark-1.3` (including the free
|
|
13
|
+
contributor tiers) ride Zen's `/responses` endpoint with full
|
|
14
|
+
retry/hook/compaction/media parity — tool calls, streaming tokens,
|
|
15
|
+
reasoning-effort mapping, and `incomplete` → `truncated` handling.
|
|
16
|
+
Routing is automatic by model family; every other provider is
|
|
17
|
+
byte-identical. Suites in `tests/zen-responses.test.ts`
|
|
18
|
+
- Picker lists all eight free Zen models (`FALLBACK_MODELS` in
|
|
19
|
+
`src/zen.ts`, `fallbackModels` in `src/providers.ts`): `big-pickle`,
|
|
20
|
+
`mimo-v2.5-free`, `ling-3.0-flash-fin-free`, `nemotron-3-ultra-free`,
|
|
21
|
+
`nemotron-3.5-lightning-free`, `deepseek-v4-flash-free`,
|
|
22
|
+
`muse-spark-1.3-contributor-free`, `muse-spark-1.2-contributor-free`
|
|
23
|
+
- Loop/telemetry phase timing (`src/agent/loop.ts`,
|
|
24
|
+
`src/agent/types.ts`, `src/telemetry.ts`): per-turn model vs tool
|
|
25
|
+
totals, slowest model call, and truncation notices surfaced through
|
|
26
|
+
`LoopStats`; telemetry schema v2 with v1 back-compat, failed-turn
|
|
27
|
+
partial replies preserved for post-mortem. Accuracy fixes: each failed
|
|
28
|
+
POST and each truncation counts exactly once; timeline events fire for
|
|
29
|
+
failed turns only
|
|
30
|
+
- Housekeeping: downloaded third-party skills (`.agents/skills/`,
|
|
31
|
+
`skills-lock.json`) are now gitignored
|
|
32
|
+
|
|
33
|
+
## 1.5.0 — 2026-09-12
|
|
34
|
+
|
|
35
|
+
- Local agentic Web UI (`src/web/server.ts`, `src/web/runtime.ts`,
|
|
36
|
+
`src/web/events.ts`, `src/web/ui/`): `atom --web [--port <n>]` serves a
|
|
37
|
+
loopback-only agentic frontend over the same runtime as the TUI, with a
|
|
38
|
+
read-only JSON API (`/api/health`, `/api/providers`, `/api/sessions`).
|
|
39
|
+
The web runtime shares the pure diff engine (`src/ui/diff.ts`) with the
|
|
40
|
+
TUI so both surfaces compute identical hunks/rows; suites in
|
|
41
|
+
`tests/web-server.test.ts`, `tests/web-runtime.test.ts`,
|
|
42
|
+
`tests/web-events.test.ts`, `tests/web-slash.test.ts`. The build copies
|
|
43
|
+
the client assets into `dist/web/ui/` (`scripts/copy-web-ui.mjs`, wired
|
|
44
|
+
into `npm run build`), so the published tarball serves them with no
|
|
45
|
+
extra step
|
|
46
|
+
- Shared loop core (`src/agent/tool-pipeline.ts`,
|
|
47
|
+
`src/agent/turn-events.ts`): tool dispatch and turn-event fan-out
|
|
48
|
+
extracted from the loop with parity coverage
|
|
49
|
+
(`tests/tool-pipeline.test.ts`, `tests/parallel-pipeline-parity.test.ts`,
|
|
50
|
+
`tests/loop-turn-events.test.ts`, `tests/turn-events-consume.test.ts`)
|
|
51
|
+
- New focused modules with suites: media/vision accounting (`src/media.ts`),
|
|
52
|
+
overflow spills (`src/overflow.ts`), session revert (`src/session-revert.ts`),
|
|
53
|
+
file diffs (`src/file-diffs.ts`), session todos (`src/todos.ts`), and the
|
|
54
|
+
paint scheduler (`src/ui/paint-scheduler.ts`)
|
|
55
|
+
- Docs audit: fixed `documentation/` agent links, documented `--web` and the
|
|
56
|
+
extension flags in `cli.md`, corrected the `maxToolSteps` default
|
|
57
|
+
(uncapped; the shipped example sets `30`), added `compactAuto` /
|
|
58
|
+
`compactReserve` keys, corrected `update_goal` payload visibility, and
|
|
59
|
+
refreshed the project layout in `README.md` / `development.md`
|
|
60
|
+
- Current-behavior suites pinning post-1.4.0 contracts
|
|
61
|
+
(`tests/diff-panes-current.test.tsx`,
|
|
62
|
+
`tests/ui-boundary-current.test.ts`,
|
|
63
|
+
`tests/turn-diff-current.test.tsx`, `tests/turn-error-current.test.tsx`,
|
|
64
|
+
`tests/session-new-current.test.tsx`,
|
|
65
|
+
`tests/session-switch-todo-current.test.tsx`). Known stale: pre-web
|
|
66
|
+
assertions in `tests/architecture.test.ts` (blanket `ui/*` ban),
|
|
67
|
+
`tests/hostile-perf.test.tsx`, `tests/turn-events-consume.test.tsx`
|
|
68
|
+
(`BEFORE`/`AFTER` labels), `tests/session.test.tsx` (retired system
|
|
69
|
+
wording), `tests/session-lifecycle.test.tsx` (retired notice text), and
|
|
70
|
+
`tests/turn-failure.test.tsx` (retired marker) — slated for retirement
|
|
71
|
+
in a follow-up; the new suites are the current contracts
|
|
72
|
+
|
|
3
73
|
## 1.4.0 — 2026-09-11
|
|
4
74
|
|
|
5
75
|
- Uncapped TUI diffs (`src/ui/diff.ts`, `src/ui/side-by-side.tsx`,
|
package/README.md
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ATOM
|
|
2
|
+
|
|
3
|
+
> A fast, transparent AI coding agent for your terminal.
|
|
2
4
|
|
|
3
5
|
[](https://www.npmjs.com/package/atom-agent)
|
|
4
|
-
[](https://www.npmjs.com/package/atom-agent)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](LICENSE)
|
|
5
9
|
|
|
6
|
-
```
|
|
10
|
+
```text
|
|
7
11
|
█████╗ ████████╗ ██████╗ ███╗ ███╗
|
|
8
12
|
██╔══██╗╚══██╔══╝██╔═══██╗████╗ ████║
|
|
9
13
|
███████║ ██║ ██║ ██║██╔████╔██║
|
|
@@ -12,264 +16,257 @@
|
|
|
12
16
|
╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
|
|
13
17
|
```
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
it runs an **observe → act → inspect → adjust** loop with **13 real,
|
|
17
|
-
locally-executed tools** (files, shell, web), streaming output, and an
|
|
18
|
-
interactive Ink TUI. Powered by [Kilo Gateway](https://kilo.ai)
|
|
19
|
-
as the default model provider. Zero ceremony: no key, one command, you're chatting
|
|
20
|
-
with an agent that can read your code, edit it, run it, and search the web.
|
|
19
|
+
ATOM is a terminal-native coding agent built with [Ink](https://github.com/vadimdemedes/ink) and React. It combines a multi-step agent loop with local file, shell, and web tools, persistent sessions, permission controls, and local observability.
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
Instead of returning a static answer, ATOM can inspect your repository, plan a task, edit files, run commands, inspect the results, and adjust its approach. The terminal interface keeps tool activity, approvals, and progress visible while you stay in control.
|
|
22
|
+
|
|
23
|
+
Kilo Gateway is the default provider. Eligible free models can be used without an API key, and you can switch providers or configure a key at any time.
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
- [Troubleshooting](documentation/troubleshooting.md) — auth, models, approvals, TUI fixes
|
|
25
|
+
## Highlights
|
|
26
|
+
|
|
27
|
+
- **Agentic execution** — an observe, plan, act, inspect, and adjust loop with optional task checklists.
|
|
28
|
+
- **Terminal-first interface** — streaming output, keyboard controls, slash commands, and a compact status line.
|
|
29
|
+
- **Local tools** — file operations, search, shell commands, background processes, and web retrieval.
|
|
30
|
+
- **Flexible providers** — Kilo Gateway, major hosted model providers, OpenAI-compatible servers, and local runtimes.
|
|
31
|
+
- **Permission modes** — normal, YOLO, and plan modes, plus session-scoped allow and deny rules.
|
|
32
|
+
- **Persistent work** — named sessions, resume and rewind support, and goals that continue across turns.
|
|
33
|
+
- **Local observability** — traces, summaries, and a self-contained dashboard stored on your machine.
|
|
34
|
+
- **Extensible** — skills and extensions can add workflows, tools, and custom behavior.
|
|
35
|
+
|
|
36
|
+
## Requirements
|
|
37
|
+
|
|
38
|
+
- Node.js 18 or newer
|
|
39
|
+
- A terminal with TTY support for the interactive interface
|
|
40
40
|
|
|
41
41
|
## Quickstart
|
|
42
42
|
|
|
43
|
-
Install the
|
|
44
|
-
binary):
|
|
43
|
+
### Install the package
|
|
45
44
|
|
|
46
45
|
```bash
|
|
47
|
-
npm
|
|
46
|
+
npm install -g atom-agent
|
|
48
47
|
atom
|
|
49
48
|
```
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
The global installation provides the `atom` command.
|
|
51
|
+
|
|
52
|
+
### Run from source
|
|
52
53
|
|
|
53
54
|
```bash
|
|
54
55
|
npm install
|
|
56
|
+
npm start
|
|
55
57
|
```
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
work anonymously:
|
|
59
|
+
`npm start` launches the interactive TUI and requires a TTY.
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
npm start
|
|
62
|
-
```
|
|
61
|
+
### First run
|
|
63
62
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
paste one via `/provider` to unlock more. Type `/` to see every command.
|
|
69
|
-
Full command reference: [CLI and TUI](documentation/cli.md).
|
|
63
|
+
1. Start ATOM with `atom` or `npm start`.
|
|
64
|
+
2. Ask a question about your current repository.
|
|
65
|
+
3. Type `/` at any time to view the available commands.
|
|
66
|
+
4. Use `/model` to choose a model and `/provider` to configure a provider key.
|
|
70
67
|
|
|
71
|
-
|
|
68
|
+
No key is required to try the default Kilo free-model route. Free-model availability and limits are controlled by Kilo and may change. Add `KILO_API_KEY` or use `/provider` when you need broader access.
|
|
72
69
|
|
|
73
|
-
|
|
70
|
+
### Update
|
|
74
71
|
|
|
75
72
|
```bash
|
|
76
|
-
npm ls -g atom-agent
|
|
77
|
-
npm
|
|
73
|
+
npm ls -g atom-agent
|
|
74
|
+
npm install -g atom-agent@latest
|
|
78
75
|
```
|
|
79
76
|
|
|
80
|
-
If
|
|
77
|
+
If npm continues to use an older cached installation, clear the npm cache and install again:
|
|
81
78
|
|
|
82
79
|
```bash
|
|
83
80
|
npm cache clean --force
|
|
84
|
-
npm
|
|
81
|
+
npm install -g atom-agent@latest
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Source installations can be updated with `git pull` followed by `npm install`.
|
|
85
|
+
|
|
86
|
+
## How ATOM works
|
|
87
|
+
|
|
88
|
+
ATOM follows a long-running agent loop:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
observe → plan → act → inspect → adjust
|
|
85
92
|
```
|
|
86
93
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
##
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
exploration (`read`/`grep`/`glob`/web/todos/`ask_question`) runs free while
|
|
109
|
-
`write`/`edit`/`bash` are blocked pre-execution with a replan note (never a
|
|
110
|
-
prompt). `/yolo`·`/trust` can't punch through
|
|
111
|
-
it, `/deny` still wins. `Tab` out of plan approves the recorded todo checklist
|
|
112
|
-
into implementation (lands in normal, never yolo)
|
|
113
|
-
- ⌨️ **Slash commands** — `/model` (unified picker across keyed providers,
|
|
114
|
-
type to filter), `/provider` (provider + key picker, keys in
|
|
115
|
-
`~/.atom/auth.json`), `/effort` (reasoning-effort picker), `/tools`,
|
|
116
|
-
`/skills`, `/skill:name` (invoke a skill; skills complete in `/`), `/context`
|
|
117
|
-
(context usage by source), `/queue` + `/steer <text>` (follow-ups while
|
|
118
|
-
busy: queue until the turn ends, or inject into the running turn),
|
|
119
|
-
`/goal <objective>` (pin one session objective; bare shows it,
|
|
120
|
-
`pause`/`resume`/`clear` manage it), `/compact`, `/telemetry`,
|
|
121
|
-
`/dashboard`, `/rewind`, `/session`, `/resume`, `/rename`, `/new`, `/help`, `/mode`, `/trust`,
|
|
122
|
-
`/clear`, `/exit` — plus `/`-autocomplete as you type (`/yolo` and `/plan` are retired as typed commands — `Tab` switches modes). Full list: [CLI and TUI](documentation/cli.md)
|
|
123
|
-
- 📊 **Status line** — provider · model · session token usage (`token:
|
|
124
|
-
(P%) NK`: NK is the cumulative spend in K, P% is the current context load
|
|
125
|
-
over the model's verified window — last `prompt_tokens`, else the
|
|
126
|
-
4ch/token estimate; bare `token: NK` where no window is verified,
|
|
127
|
-
`token: n/a` until reported — never estimated) · reasoning · mode, plus
|
|
128
|
-
`goal: <objective> [active|paused]` while a goal is live (lowest priority,
|
|
129
|
-
yields first under width pressure), plus
|
|
130
|
-
live phase/elapsed/waiting while busy. It is the sole info bar: there is
|
|
131
|
-
no persistent header, only the launch-time banner art.
|
|
132
|
-
- 🗜️ **Context compaction** — auto-compacts at ~83% of the verified window
|
|
133
|
-
(`ATOM_COMPACT_PCT` percent, 50–95) plus manual `/compact [focus text]`
|
|
134
|
-
(structured summary, tools disabled, newest tail kept, thrash guard).
|
|
135
|
-
- 📖 **AGENTS.md-aware** — Atom loads your project's `AGENTS.md` into its
|
|
136
|
-
system prompt, so it knows your tools, rules, and permission model
|
|
137
|
-
- 📊 **Local observability** — every turn is traced (iterations, model calls
|
|
138
|
-
with reported-only tokens, per-tool durations and ok/fail, retries,
|
|
139
|
-
outcomes) into `~/.atom/telemetry/`; `/telemetry` summarizes, `/dashboard`
|
|
140
|
-
(or `atom --dashboard`) writes a self-contained drill-down page, and
|
|
141
|
-
`atom --serve` offers the same view live in the browser plus a read-only
|
|
142
|
-
JSON API. Local-only, secret-scrubbed, off via `ATOM_TELEMETRY=0`. See
|
|
143
|
-
[Observability](documentation/observability.md)
|
|
144
|
-
- 🔓 **No path sandbox** — file tools read/write anywhere on the computer
|
|
145
|
-
(absolute paths and `..` escapes allowed, including sensitive locations
|
|
146
|
-
like `~/.ssh/` — treat contents as untrusted, never exfiltrate or commit
|
|
147
|
-
secrets); the permission mode is the control plane. Everything is capped
|
|
148
|
-
and truncated
|
|
149
|
-
|
|
150
|
-
## Tools
|
|
151
|
-
|
|
152
|
-
Full reference: [Tools](documentation/tools.md) plus [Permissions and Modes](documentation/permissions.md).
|
|
153
|
-
|
|
154
|
-
| Tool | What it does | Permission (normal mode) |
|
|
94
|
+
For larger tasks, it can maintain a session checklist with at most one active item. After making code changes, it can run a verification command before reporting the task complete. Tool results are returned to the model, so the next step can respond to the actual state of the repository.
|
|
95
|
+
|
|
96
|
+
The interface streams tokens, tool activity, phase changes, approvals, and elapsed time. Reasoning output is kept separate from the answer draft so the final response remains easy to follow.
|
|
97
|
+
|
|
98
|
+
## Permission modes
|
|
99
|
+
|
|
100
|
+
| Mode | Behavior |
|
|
101
|
+
|---|---|
|
|
102
|
+
| **Normal** | Read-only tools run automatically. `write`, `edit`, and `bash` requests require approval. |
|
|
103
|
+
| **YOLO** | Tools run without approval prompts. Use only when you are comfortable with automatic local changes and commands. |
|
|
104
|
+
| **Plan** | Read-only exploration is allowed; writes, edits, and shell commands are blocked so you can review a proposed approach. |
|
|
105
|
+
|
|
106
|
+
Press `Tab` to cycle through Normal, YOLO, and Plan. `/trust` provides a session-scoped trust level without switching to YOLO. `/allow` and `/deny` create more precise session rules, and deny rules always take precedence.
|
|
107
|
+
|
|
108
|
+
## Core capabilities
|
|
109
|
+
|
|
110
|
+
### Built-in tools
|
|
111
|
+
|
|
112
|
+
ATOM includes 13 built-in tools:
|
|
113
|
+
|
|
114
|
+
| Tool | Purpose | Normal mode |
|
|
155
115
|
|---|---|---|
|
|
156
|
-
| `read` | Read
|
|
157
|
-
| `
|
|
158
|
-
| `
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
162
|
-
| `
|
|
163
|
-
| `todowrite` / `todo_get` / `todo_update` |
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
`
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
`
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
`
|
|
212
|
-
|
|
213
|
-
|
|
|
214
|
-
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
219
|
-
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
## Develop
|
|
227
|
-
|
|
228
|
-
Full guide: [Development](documentation/development.md). Fixes start at [Troubleshooting](documentation/troubleshooting.md).
|
|
116
|
+
| `read` | Read text or supported images, and list directories | Automatic |
|
|
117
|
+
| `write` / `edit` | Create, overwrite, or patch files | Approval |
|
|
118
|
+
| `grep` / `glob` | Search file contents or locate files | Automatic |
|
|
119
|
+
| `bash` | Run a shell command, including background tasks | Approval |
|
|
120
|
+
| `bash_output` | Poll a background shell task | Automatic |
|
|
121
|
+
| `websearch` / `webfetch` | Discover and retrieve web content | Automatic, subject to network policy |
|
|
122
|
+
| `ask_question` | Ask the user an interactive clarification question | User interaction |
|
|
123
|
+
| `todowrite` / `todo_get` / `todo_update` | Manage the session task checklist and TUI panel | Automatic |
|
|
124
|
+
|
|
125
|
+
Extensions can register additional tools. Custom tools are validated before execution and require approval by default unless explicitly configured otherwise.
|
|
126
|
+
|
|
127
|
+
### Sessions and goals
|
|
128
|
+
|
|
129
|
+
Sessions preserve conversation history, usage information, preferences, and the active goal. Use `/session` to switch sessions, `/resume` to restore the most recent saved session, and `/rewind` to restore files from a session checkpoint.
|
|
130
|
+
|
|
131
|
+
A pinned goal can keep the agent working across turns until it is completed, blocked, paused, or cleared:
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
/goal <objective>
|
|
135
|
+
/goal pause
|
|
136
|
+
/goal resume
|
|
137
|
+
/goal clear
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Context and project instructions
|
|
141
|
+
|
|
142
|
+
ATOM automatically compacts long conversations to stay within the model's context window. Manual compaction is available through `/compact`. When present, the project's `AGENTS.md` is loaded into the system prompt so the agent can follow repository-specific instructions and conventions.
|
|
143
|
+
|
|
144
|
+
### Providers and models
|
|
145
|
+
|
|
146
|
+
ATOM supports a unified model picker across:
|
|
147
|
+
|
|
148
|
+
- Kilo Gateway (default; free models available anonymously where eligible)
|
|
149
|
+
- OpenCode Zen
|
|
150
|
+
- OpenAI
|
|
151
|
+
- Anthropic
|
|
152
|
+
- DeepSeek
|
|
153
|
+
- Mistral
|
|
154
|
+
- Google Gemini
|
|
155
|
+
- OpenAI-compatible servers
|
|
156
|
+
- Local Ollama, LM Studio, and llama.cpp runtimes
|
|
157
|
+
|
|
158
|
+
Provider keys can be supplied through environment variables or the `/provider` command. Stored keys live in `~/.atom/auth.json`; environment variables take precedence. Keys are masked in the interface and are not printed in logs.
|
|
159
|
+
|
|
160
|
+
Use `/model` to select a model, `/provider` to switch or configure a provider, and `/effort` to adjust reasoning effort. See [Providers and Models](documentation/providers.md) for endpoints, key resolution, local runtimes, and model-selection behavior.
|
|
161
|
+
|
|
162
|
+
## Useful commands
|
|
163
|
+
|
|
164
|
+
| Command | Description |
|
|
165
|
+
|---|---|
|
|
166
|
+
| `/model` | Select a model from the unified picker |
|
|
167
|
+
| `/provider` | Select a provider and configure its key |
|
|
168
|
+
| `/effort` | Set reasoning effort |
|
|
169
|
+
| `/mode` | Show the current permission mode |
|
|
170
|
+
| `/trust` | Toggle session trust |
|
|
171
|
+
| `/allow` / `/deny` | Add a scoped session rule |
|
|
172
|
+
| `/tools` | List available tools |
|
|
173
|
+
| `/skills` / `/skill:name` | List or invoke a skill |
|
|
174
|
+
| `/goal` | Create or manage a long-running goal |
|
|
175
|
+
| `/session` / `/resume` | Switch or restore a session |
|
|
176
|
+
| `/compact` | Compact older conversation context |
|
|
177
|
+
| `/telemetry` / `/dashboard` | View local usage traces and generate a report |
|
|
178
|
+
| `/rewind` | Restore files from a session checkpoint |
|
|
179
|
+
| `/help` | Show the command reference |
|
|
180
|
+
|
|
181
|
+
Type `/` to use command autocomplete. The complete command and keyboard reference is in [CLI and TUI](documentation/cli.md).
|
|
182
|
+
|
|
183
|
+
## Observability
|
|
184
|
+
|
|
185
|
+
ATOM records local traces for completed, failed, and cancelled turns. The data is stored under `~/.atom/telemetry/`; it is not sent to a remote service.
|
|
229
186
|
|
|
230
187
|
```bash
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
npm run build # emit dist/ (the `atom` binary entry is dist/cli.js)
|
|
188
|
+
atom --dashboard # write a static dashboard and exit
|
|
189
|
+
atom --serve # serve the live observability dashboard on loopback
|
|
190
|
+
atom --web # start the local agentic Web UI
|
|
235
191
|
```
|
|
236
192
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
193
|
+
The dashboard includes session and turn summaries, model and tool-call metrics, outcomes, durations, filters, and timelines. Telemetry can be disabled with `ATOM_TELEMETRY=0` or through the `telemetry` setting in `atom.json`.
|
|
194
|
+
|
|
195
|
+
See [Observability](documentation/observability.md) for details about the stored data, dashboard, privacy rules, and local server.
|
|
196
|
+
|
|
197
|
+
## Documentation
|
|
198
|
+
|
|
199
|
+
The README is an overview. Detailed guides live in [`documentation/`](documentation/index.md):
|
|
200
|
+
|
|
201
|
+
- [Getting Started](documentation/getting-started.md) — installation, first run, and key setup
|
|
202
|
+
- [CLI and TUI](documentation/cli.md) — commands, keyboard controls, and status line
|
|
203
|
+
- [Tools](documentation/tools.md) — tool reference, limits, scheduling, and safety behavior
|
|
204
|
+
- [Permissions and Modes](documentation/permissions.md) — approval modes and scoped rules
|
|
205
|
+
- [Providers and Models](documentation/providers.md) — provider endpoints and model selection
|
|
206
|
+
- [Sessions](documentation/sessions.md) — persistence, resume, rewind, and session management
|
|
207
|
+
- [Goals](documentation/goals.md) — long-running objectives and goal controls
|
|
208
|
+
- [Skills](documentation/skills.md) and [Extensions](documentation/extensions.md)
|
|
209
|
+
- [Configuration](documentation/configuration.md) — environment variables and `atom.json`
|
|
210
|
+
- [Observability](documentation/observability.md) — local traces and dashboards
|
|
211
|
+
- [Development](documentation/development.md) — contributor setup and verification
|
|
212
|
+
- [Troubleshooting](documentation/troubleshooting.md) — common setup and runtime issues
|
|
213
|
+
|
|
214
|
+
## Development
|
|
242
215
|
|
|
216
|
+
Clone the repository and install dependencies:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
git clone https://github.com/beast-ofcourse/Atom.git
|
|
220
|
+
cd Atom
|
|
221
|
+
npm install
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Common development commands:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npm start # launch the TUI from source
|
|
228
|
+
npm test # run the Vitest suite
|
|
229
|
+
npm run typecheck # run TypeScript checks
|
|
230
|
+
npm run build # emit the distributable files in dist/
|
|
243
231
|
```
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
├── tests/ # fully mocked (never live APIs; keys use "test-key")
|
|
267
|
-
├── documentation/ # user manual (getting started → troubleshooting)
|
|
268
|
-
├── AGENTS.md # agent instructions overlay (loaded at startup, minimal)
|
|
269
|
-
├── tsconfig.build.json # build-only config (src -> dist)
|
|
270
|
-
└── .env.example # env template (never commit a real key)
|
|
232
|
+
|
|
233
|
+
`dist/` is generated output and is not committed. The package build is run automatically before publishing. Tests are mocked and do not call live provider APIs; use placeholder keys only in fixtures and examples.
|
|
234
|
+
|
|
235
|
+
See [Development](documentation/development.md) and [Architecture](documentation/architecture.md) before making substantial changes.
|
|
236
|
+
|
|
237
|
+
## Project layout
|
|
238
|
+
|
|
239
|
+
```text
|
|
240
|
+
src/
|
|
241
|
+
├── cli.tsx # entry: --help/--dashboard/--serve/--web, extension flags
|
|
242
|
+
├── App.tsx # Ink TUI root (transcript, pickers, modes, status line)
|
|
243
|
+
├── agent/ # shared loop core, gates, types, goal evaluator
|
|
244
|
+
├── tools/ # per-tool executors plus registry (names, validation, dispatch)
|
|
245
|
+
├── tools.ts # pure barrel re-exporting tools/* (stable import path)
|
|
246
|
+
├── ui/ # transcript, diff stack, panels, pickers, status line
|
|
247
|
+
├── web/ # local agentic Web UI runtime (served by atom --web)
|
|
248
|
+
├── providers.ts # 8 remote providers + 3 local runtimes (kilo default)
|
|
249
|
+
├── telemetry.ts # local trace recording (+ dashboard/server siblings)
|
|
250
|
+
└── sessions.ts # durable multi-session store (+ session.json compat)
|
|
251
|
+
tests/ # unit and interface tests (mocked, never live APIs)
|
|
252
|
+
documentation/ # user and contributor guides
|
|
253
|
+
scripts/ # build and maintenance utilities
|
|
271
254
|
```
|
|
272
255
|
|
|
256
|
+
See [Development](documentation/development.md) and [Architecture](documentation/architecture.md) for the full module map and boundary rules.
|
|
257
|
+
|
|
258
|
+
## Security and privacy
|
|
259
|
+
|
|
260
|
+
ATOM is designed to execute real local actions. File tools have no path sandbox, and shell commands run with the permissions of the current user. Treat repository contents, tool output, and untrusted extensions as untrusted input. Never commit or expose API keys, credentials, or sensitive files.
|
|
261
|
+
|
|
262
|
+
Normal mode prompts before writes, edits, and shell commands. YOLO mode intentionally bypasses those prompts. Scoped `/deny` rules provide an additional safeguard and take precedence over trust and YOLO. Network retrieval is governed by the configured network policy; private and link-local destinations are blocked by default.
|
|
263
|
+
|
|
264
|
+
API keys are stored outside the repository in `~/.atom/auth.json`. Telemetry is local by default and can be disabled entirely.
|
|
265
|
+
|
|
273
266
|
## License
|
|
274
267
|
|
|
275
268
|
MIT — see [LICENSE](LICENSE).
|
|
269
|
+
|
|
270
|
+
## Contributing
|
|
271
|
+
|
|
272
|
+
Contributions are welcome. Please open an [issue](https://github.com/beast-ofcourse/Atom/issues) for bugs or proposals, and include the relevant test or typecheck results with pull requests.
|