orbitmap 0.3.0 → 0.4.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/README.md +546 -212
- package/dist/adapters/cloud.d.ts +367 -0
- package/dist/adapters/cloud.js +582 -0
- package/dist/adapters/cloud.js.map +1 -0
- package/dist/adapters/factory.d.ts +15 -0
- package/dist/adapters/factory.js +31 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/local/adapter.d.ts +351 -0
- package/dist/adapters/local/adapter.js +346 -0
- package/dist/adapters/local/adapter.js.map +1 -0
- package/dist/adapters/local/context.d.ts +112 -0
- package/dist/adapters/local/context.js +137 -0
- package/dist/adapters/local/context.js.map +1 -0
- package/dist/adapters/local/entities/documents.d.ts +85 -0
- package/dist/adapters/local/entities/documents.js +251 -0
- package/dist/adapters/local/entities/documents.js.map +1 -0
- package/dist/adapters/local/entities/planning.d.ts +108 -0
- package/dist/adapters/local/entities/planning.js +540 -0
- package/dist/adapters/local/entities/planning.js.map +1 -0
- package/dist/adapters/local/entities/tasks.d.ts +95 -0
- package/dist/adapters/local/entities/tasks.js +442 -0
- package/dist/adapters/local/entities/tasks.js.map +1 -0
- package/dist/adapters/local/entities/work-items.d.ts +110 -0
- package/dist/adapters/local/entities/work-items.js +623 -0
- package/dist/adapters/local/entities/work-items.js.map +1 -0
- package/dist/adapters/local/rules.d.ts +172 -0
- package/dist/adapters/local/rules.js +319 -0
- package/dist/adapters/local/rules.js.map +1 -0
- package/dist/adapters/local/shapes.d.ts +209 -0
- package/dist/adapters/local/shapes.js +558 -0
- package/dist/adapters/local/shapes.js.map +1 -0
- package/dist/adapters/local/store.d.ts +200 -0
- package/dist/adapters/local/store.js +665 -0
- package/dist/adapters/local/store.js.map +1 -0
- package/dist/adapters/local/types.d.ts +226 -0
- package/dist/adapters/local/types.js +41 -0
- package/dist/adapters/local/types.js.map +1 -0
- package/dist/adapters/types.d.ts +332 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/agent-instructions.d.ts +25 -9
- package/dist/agent-instructions.js +285 -237
- package/dist/agent-instructions.js.map +1 -1
- package/dist/api-client.d.ts +8 -239
- package/dist/api-client.js +8 -403
- package/dist/api-client.js.map +1 -1
- package/dist/commands/agents.d.ts +1 -1
- package/dist/commands/agents.js +10 -10
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/areas.d.ts +3 -0
- package/dist/commands/areas.js +29 -0
- package/dist/commands/areas.js.map +1 -0
- package/dist/commands/assign.d.ts +3 -2
- package/dist/commands/assign.js +52 -15
- package/dist/commands/assign.js.map +1 -1
- package/dist/commands/context.d.ts +1 -1
- package/dist/commands/context.js +18 -12
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/create-area.d.ts +7 -0
- package/dist/commands/create-area.js +29 -0
- package/dist/commands/create-area.js.map +1 -0
- package/dist/commands/create.d.ts +3 -1
- package/dist/commands/create.js +5 -8
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dep.d.ts +2 -2
- package/dist/commands/dep.js +3 -3
- package/dist/commands/dep.js.map +1 -1
- package/dist/commands/doc-import.d.ts +1 -1
- package/dist/commands/doc-import.js +2 -2
- package/dist/commands/doc-import.js.map +1 -1
- package/dist/commands/doc-patch.d.ts +1 -1
- package/dist/commands/doc-patch.js +2 -2
- package/dist/commands/doc-patch.js.map +1 -1
- package/dist/commands/doc-share.d.ts +6 -6
- package/dist/commands/doc-share.js +13 -13
- package/dist/commands/doc-share.js.map +1 -1
- package/dist/commands/doc-update.d.ts +1 -1
- package/dist/commands/doc-update.js +2 -2
- package/dist/commands/doc-update.js.map +1 -1
- package/dist/commands/doc.d.ts +1 -1
- package/dist/commands/doc.js +5 -4
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/docs-cache.d.ts +2 -2
- package/dist/commands/docs-cache.js +3 -3
- package/dist/commands/docs-cache.js.map +1 -1
- package/dist/commands/docs.d.ts +1 -1
- package/dist/commands/docs.js +2 -2
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/get.d.ts +1 -1
- package/dist/commands/get.js +43 -3
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/ideas.d.ts +4 -4
- package/dist/commands/ideas.js +6 -11
- package/dist/commands/ideas.js.map +1 -1
- package/dist/commands/init.d.ts +45 -3
- package/dist/commands/init.js +452 -104
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/intent.d.ts +41 -0
- package/dist/commands/intent.js +237 -0
- package/dist/commands/intent.js.map +1 -0
- package/dist/commands/issues.d.ts +6 -5
- package/dist/commands/issues.js +8 -12
- package/dist/commands/issues.js.map +1 -1
- package/dist/commands/log.d.ts +1 -1
- package/dist/commands/log.js +2 -2
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mission.d.ts +42 -0
- package/dist/commands/mission.js +219 -0
- package/dist/commands/mission.js.map +1 -0
- package/dist/commands/orbit.d.ts +40 -3
- package/dist/commands/orbit.js +231 -58
- package/dist/commands/orbit.js.map +1 -1
- package/dist/commands/overview.d.ts +2 -2
- package/dist/commands/overview.js +25 -28
- package/dist/commands/overview.js.map +1 -1
- package/dist/commands/setup-agent.d.ts +27 -0
- package/dist/commands/setup-agent.js +85 -30
- package/dist/commands/setup-agent.js.map +1 -1
- package/dist/commands/setup-mcp.d.ts +1 -1
- package/dist/commands/setup-mcp.js +20 -49
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/start.js +2 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts +2 -1
- package/dist/commands/status.js +3 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/subtask.d.ts +1 -1
- package/dist/commands/subtask.js +2 -2
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/task-edit-content.d.ts +1 -1
- package/dist/commands/task-edit-content.js +2 -2
- package/dist/commands/task-edit-content.js.map +1 -1
- package/dist/commands/task.d.ts +10 -3
- package/dist/commands/task.js +19 -21
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tasks.d.ts +1 -1
- package/dist/commands/tasks.js +2 -2
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/vibes.d.ts +4 -4
- package/dist/commands/vibes.js +5 -5
- package/dist/commands/vibes.js.map +1 -1
- package/dist/config.d.ts +69 -9
- package/dist/config.js +206 -23
- package/dist/config.js.map +1 -1
- package/dist/doc-cache.d.ts +23 -3
- package/dist/doc-cache.js +72 -12
- package/dist/doc-cache.js.map +1 -1
- package/dist/errors.d.ts +19 -2
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -1
- package/dist/id-resolve.d.ts +61 -0
- package/dist/id-resolve.js +87 -0
- package/dist/id-resolve.js.map +1 -0
- package/dist/index.js +477 -104
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +36 -0
- package/dist/mcp-config.js +51 -0
- package/dist/mcp-config.js.map +1 -0
- package/dist/oauth.d.ts +8 -0
- package/dist/oauth.js +54 -15
- package/dist/oauth.js.map +1 -1
- package/dist/output.js +7 -2
- package/dist/output.js.map +1 -1
- package/dist/paths.d.ts +97 -0
- package/dist/paths.js +178 -0
- package/dist/paths.js.map +1 -0
- package/dist/project-config.d.ts +75 -0
- package/dist/project-config.js +55 -0
- package/dist/project-config.js.map +1 -0
- package/dist/workspace-resolve.d.ts +158 -0
- package/dist/workspace-resolve.js +284 -0
- package/dist/workspace-resolve.js.map +1 -0
- package/package.json +53 -50
package/README.md
CHANGED
|
@@ -1,212 +1,546 @@
|
|
|
1
|
-
# OrbitMap CLI
|
|
2
|
-
|
|
3
|
-
> Project management for AI coding agents — without MCP.
|
|
4
|
-
|
|
5
|
-
## What is this?
|
|
6
|
-
|
|
7
|
-
OrbitMap CLI gives AI agents (Gemini CLI, GPT Codex, Claude Code without MCP, etc.) access to [OrbitMap](https://orbitmap.
|
|
8
|
-
|
|
9
|
-
**Use cases:**
|
|
10
|
-
- AI agents that can run shell commands but don't support MCP (Gemini CLI, GPT Codex CLI)
|
|
11
|
-
- Environments where MCP configuration is impractical
|
|
12
|
-
- Quick task management from your terminal
|
|
13
|
-
|
|
14
|
-
## Quick Start
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
# 1. Run the setup wizard
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# -
|
|
23
|
-
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
orbitmap
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
|
|
1
|
+
# OrbitMap CLI
|
|
2
|
+
|
|
3
|
+
> Project management for AI coding agents — without MCP.
|
|
4
|
+
|
|
5
|
+
## What is this?
|
|
6
|
+
|
|
7
|
+
OrbitMap CLI gives AI agents (Gemini CLI, GPT Codex, Claude Code without MCP, etc.) access to [OrbitMap](https://orbitmap.ai) project management through simple shell commands. It's the non-MCP alternative to [orbitmap-mcp](https://github.com/BTA-Systems/orbitmap-mcp), and tracks the same Agent API contract (currently **schema_version 6.3.0**).
|
|
8
|
+
|
|
9
|
+
**Use cases:**
|
|
10
|
+
- AI agents that can run shell commands but don't support MCP (Gemini CLI, GPT Codex CLI)
|
|
11
|
+
- Environments where MCP configuration is impractical
|
|
12
|
+
- Quick task management from your terminal
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 1. Run the setup wizard — it asks where your data should live:
|
|
18
|
+
# [1] Orbitmap.ai account (cloud) [2] Local files (no account)
|
|
19
|
+
npx orbitmap init
|
|
20
|
+
|
|
21
|
+
# 2. Cloud: enter your credentials
|
|
22
|
+
# - API Key (from OrbitMap dashboard)
|
|
23
|
+
# - Area ID (optional — auto-detected if you belong to a single area)
|
|
24
|
+
# Local: pick a workspace directory, a workspace name and a first area
|
|
25
|
+
|
|
26
|
+
# 3. Confirm the agent skills — `init` installs them in the same run, creating
|
|
27
|
+
# CLAUDE.md / AGENTS.md if this directory has none yet. `--agent claude`
|
|
28
|
+
# picks the type without asking; `--no-skills` opts out.
|
|
29
|
+
|
|
30
|
+
# 4. Start working
|
|
31
|
+
npx orbitmap start
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`init` is the whole install: config, credentials, MCP block and the agent skills. There is no
|
|
35
|
+
mandatory second command.
|
|
36
|
+
|
|
37
|
+
## Local mode
|
|
38
|
+
|
|
39
|
+
The CLI runs in one of two modes, chosen once during `orbitmap init`:
|
|
40
|
+
|
|
41
|
+
| | **Cloud mode** | **Local mode** |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| Storage | Orbitmap.ai workspace (Agent API) | Markdown files with YAML frontmatter on your disk |
|
|
44
|
+
| Account | required | none |
|
|
45
|
+
| Web UI, team, multiple agents | yes | no — solo developer |
|
|
46
|
+
| Commands | all of them | all of them, minus the limitations below |
|
|
47
|
+
|
|
48
|
+
Both modes speak the **same commands with the same output** — `orbitmap start`, `orbitmap log`,
|
|
49
|
+
`orbitmap tasks --json` behave identically, and agent skills installed by `orbitmap init` never
|
|
50
|
+
need to know which mode is active.
|
|
51
|
+
|
|
52
|
+
### Set up local mode
|
|
53
|
+
|
|
54
|
+
Interactive — answer `2` at the mode question, then accept or override the three defaults
|
|
55
|
+
(workspace directory `./.orbitmap`, workspace name, first area):
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx orbitmap init
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Scripted / CI:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx orbitmap init --local \
|
|
65
|
+
--workspace ~/orbits/personal \ # where the files live (default: ./.orbitmap)
|
|
66
|
+
--workspace-name "My Orbit" \ # default: current directory name
|
|
67
|
+
--area "My App" \ # first area (default: current directory name)
|
|
68
|
+
--no-skills # skip installing agent skills
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If the workspace directory is **outside** the project, `init` writes a pointer at
|
|
72
|
+
`<project>/.orbitmap/link.json` (`{"workspace": "…", "area": "…"}`) and adds
|
|
73
|
+
`.orbitmap/link.json` and `.orbitmap/docs/` to `.gitignore` (not the whole `.orbitmap/`
|
|
74
|
+
directory — `.orbitmap/config.json`, see [Configuration](#configuration), is meant to be
|
|
75
|
+
committed). The pointer is found by walking up from the current directory, like `.git`, so
|
|
76
|
+
commands work from any subdirectory. If the workspace *is* `./.orbitmap`, nothing is gitignored —
|
|
77
|
+
the data is meant to be committable.
|
|
78
|
+
|
|
79
|
+
Resolution order for the workspace directory: `--workspace` → `ORBITMAP_WORKSPACE` →
|
|
80
|
+
`.orbitmap/link.json` → `./.orbitmap/workspace.yml` → `workspace_path` in
|
|
81
|
+
`~/.orbitmap/config.json`. The mode itself is resolved per-project, first match wins: `--workspace`
|
|
82
|
+
(explicit → local) → `ORBITMAP_MODE=local|cloud` → nearest `.orbitmap/config.json` `mode` field →
|
|
83
|
+
auto-detect (walk up from cwd looking for `.orbitmap/workspace.yml` or `.orbitmap/link.json`, same
|
|
84
|
+
as git looking for `.git` → local) → `mode` in the global config file, defaulting to `cloud` when
|
|
85
|
+
absent. The auto-detect rung (and the project config rung above it) is what lets one project stay
|
|
86
|
+
local and another stay cloud on the same machine — `init` never writes `mode` to the global config
|
|
87
|
+
for the local path.
|
|
88
|
+
|
|
89
|
+
### Where the data lives
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
<workspace-dir>/
|
|
93
|
+
workspace.yml # workspace header, default area + entity-number counters
|
|
94
|
+
missions/MS-<num>.md
|
|
95
|
+
intents/IN-<num>.md
|
|
96
|
+
ideas/ID-<num>.md
|
|
97
|
+
documents/<slug>.md
|
|
98
|
+
issues/IS-<num>.md # workspace-level issues (no area)
|
|
99
|
+
areas/
|
|
100
|
+
<area-slug>/
|
|
101
|
+
area.yml # area header (git url, default branch, …)
|
|
102
|
+
tasks/TS-<num>.md
|
|
103
|
+
issues/IS-<num>.md # area-scoped issues
|
|
104
|
+
vibes/VB-<num>.md
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Every entity is one Markdown file: the YAML frontmatter holds the fields, the body holds the long
|
|
108
|
+
text (`## Description`, and for tasks an append-only `## Work Log`). Relations are stored as entity
|
|
109
|
+
numbers and slugs, so the files stay readable and diff cleanly in git.
|
|
110
|
+
|
|
111
|
+
**The CLI is the only writer.** Editing these files by hand (or letting an agent do it) bypasses
|
|
112
|
+
validation and the counters — always go through `orbitmap` commands.
|
|
113
|
+
|
|
114
|
+
### Current limitations
|
|
115
|
+
|
|
116
|
+
Local mode is a proof of concept. Not supported yet:
|
|
117
|
+
|
|
118
|
+
- **No import/export between a local workspace and the cloud** (planned next; entity-number format
|
|
119
|
+
and response shapes are already identical so the future import is a data copy).
|
|
120
|
+
- **No orbits** — `orbit *` commands fail with `NOT_SUPPORTED_IN_LOCAL_MODE` and exit 1.
|
|
121
|
+
- **No document section-patching, sharing or presigned uploads** — `doc-patch`, `doc-share`,
|
|
122
|
+
`doc-unshare`, `doc-visibility` fail the same way. `docs`, `doc`, `doc-import` and `doc-update`
|
|
123
|
+
work.
|
|
124
|
+
- **No OAuth** (`login` / `logout`) — meaningless without a server.
|
|
125
|
+
- **No human team members**: exactly one implicit user (`me`) and one implicit agent
|
|
126
|
+
(`local-agent`). `members` returns them; `assign` accepts only them.
|
|
127
|
+
- **No sync or merge between machines** — you may sync the workspace directory with git yourself,
|
|
128
|
+
the CLI does not mediate conflicts.
|
|
129
|
+
|
|
130
|
+
See [`docs/architecture.md`](docs/architecture.md) for the adapter split and
|
|
131
|
+
[`docs/adr/0001-local-mode.md`](docs/adr/0001-local-mode.md) for why local storage exists at all.
|
|
132
|
+
|
|
133
|
+
## Object model
|
|
134
|
+
|
|
135
|
+
OrbitMap organises work on several levels. The CLI mirrors them 1:1:
|
|
136
|
+
|
|
137
|
+
| Level | Prefix | What it is |
|
|
138
|
+
|-------|--------|-----------|
|
|
139
|
+
| **Workspace** | — | Top-level container that owns areas, orbits, intents and missions |
|
|
140
|
+
| **Area** | — | A single product/repo/domain (formerly called *project*) — the default scope of most commands |
|
|
141
|
+
| **Orbit** | — | Cross-area grouping of work (a theme, an initiative); items of any type can be attached |
|
|
142
|
+
| **Intent** | `IN-` | A desired outcome at workspace level; tasks and issues can be linked to it |
|
|
143
|
+
| **Mission** | `MS-` | A time-boxed workspace focus; only one mission can be `active` |
|
|
144
|
+
| **Task** | `TS-` | The unit of work agents execute |
|
|
145
|
+
| **Issue** | `IS-` | A reported problem |
|
|
146
|
+
| **Idea** | `ID-` | A future possibility |
|
|
147
|
+
| **Vibe** | `VB-` | Ad-hoc work context outside the task lifecycle |
|
|
148
|
+
|
|
149
|
+
> **Project → Area rename.** What used to be called a *project* is now an **area**. The global flag is `--area`, the env var is `ORBITMAP_AREA`, and the config key is `area`. The legacy `ORBITMAP_PROJECT_ID` env var and `project_id` config key were read-only fallbacks for one release and were removed by [ADR 0002](docs/adr/0002-project-scoped-config.md) — they had the same cross-project leak as the machine-wide `area` they aliased. Set `area` in your project's `.orbitmap/config.json` instead.
|
|
150
|
+
|
|
151
|
+
## Commands
|
|
152
|
+
|
|
153
|
+
### Task Management
|
|
154
|
+
|
|
155
|
+
| Command | Description |
|
|
156
|
+
|---------|-------------|
|
|
157
|
+
| `orbitmap tasks` | List your assigned tasks (`--status`, `--priority`, `--orbit`) |
|
|
158
|
+
| `orbitmap task <id-or-number>` | Show full task details |
|
|
159
|
+
| `orbitmap start [id-or-number]` | Start working on a task (auto-picks next TODO if no ID) |
|
|
160
|
+
| `orbitmap status <id-or-number> <status>` | Update task status (`--force` to move a parent to `done` with unfinished subtasks) |
|
|
161
|
+
| `orbitmap create <title>` | Create a new task (`--from-issue`, `--intent`, `--orbit`) |
|
|
162
|
+
| `orbitmap subtask <parent-id-or-number> <title>` | Create a subtask |
|
|
163
|
+
| `orbitmap assign <id-or-number> [agent-id]` | Assign a task, issue, idea, or intent to an agent or user |
|
|
164
|
+
| `orbitmap get <prefixed-id>` | Show any object by prefixed ID (TS-, IS-, ID-, VB-, IN-, MS-) |
|
|
165
|
+
| `orbitmap dep add <id-or-number> <target-id-or-number>` | Add a dependency between tasks |
|
|
166
|
+
| `orbitmap dep remove <id-or-number> <target-id-or-number>` | Remove a dependency |
|
|
167
|
+
| `orbitmap task-edit-content <id-or-number>` | Edit task title, description, or agent instructions |
|
|
168
|
+
|
|
169
|
+
**Valid statuses:** `backlog`, `todo`, `in_progress`, `in_review`, `review_changes`, `done`, `blocked`
|
|
170
|
+
|
|
171
|
+
### Referring to objects: `<id-or-number>`
|
|
172
|
+
|
|
173
|
+
Every command that takes an object reference accepts all three forms interchangeably:
|
|
174
|
+
|
|
175
|
+
- the prefixed display ID the CLI prints — `TS-uw9yh5`, `IS-4k2p9q`, `IN-6htga8`
|
|
176
|
+
- the bare 6-character code — `uw9yh5`
|
|
177
|
+
- the UUID
|
|
178
|
+
|
|
179
|
+
You can therefore paste any identifier straight out of `orbitmap tasks`, `orbitmap context` or
|
|
180
|
+
the message `orbitmap create` prints. This was previously true of `orbitmap task` and
|
|
181
|
+
`orbitmap get` only: `status`, `log`, `subtask`, `start`, `assign`, `task-edit-content` and
|
|
182
|
+
`dep add`/`dep remove` rejected prefixed IDs with a 404, including identifiers the CLI had
|
|
183
|
+
just printed itself.
|
|
184
|
+
|
|
185
|
+
The Agent API resolves a prefixed ID inline for issues, ideas, intents and missions, but not
|
|
186
|
+
for tasks — a task reference that is not a UUID needs a `/tasks/by-number/{n}` lookup first.
|
|
187
|
+
The CLI now does that once, in the adapter layer, so every task command behaves the same and a
|
|
188
|
+
UUID still costs exactly one request. See `src/id-resolve.ts`.
|
|
189
|
+
|
|
190
|
+
`assign` auto-detects the object type from the prefix (`IS-…` → issue, `IN-…` → intent, …);
|
|
191
|
+
pass `--type task|issue|idea|intent` for bare UUIDs and bare codes.
|
|
192
|
+
|
|
193
|
+
### Work Logging
|
|
194
|
+
|
|
195
|
+
| Command | Description |
|
|
196
|
+
|---------|-------------|
|
|
197
|
+
| `orbitmap log <id-or-number> <message>` | Log work on a task |
|
|
198
|
+
|
|
199
|
+
**Options:**
|
|
200
|
+
- `--type <type>` — Log type: `note` (default), `code_change`, `decision`, `blocker`, `discovery`, `exploration`, `fix`
|
|
201
|
+
- `--meta <json>` — JSON metadata, e.g. `'{"files":["src/app.ts"]}'`
|
|
202
|
+
|
|
203
|
+
**Examples:**
|
|
204
|
+
```bash
|
|
205
|
+
orbitmap log abc123 "Implemented user auth endpoint" --type code_change
|
|
206
|
+
orbitmap log abc123 "Using JWT over sessions for stateless auth" --type decision
|
|
207
|
+
orbitmap log abc123 "Blocked on missing API credentials" --type blocker
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Documents
|
|
211
|
+
|
|
212
|
+
| Command | Description |
|
|
213
|
+
|---------|-------------|
|
|
214
|
+
| `orbitmap docs` | List area documents |
|
|
215
|
+
| `orbitmap doc <id-or-slug>` | Show document (TOC by default, `--full`, `--section`) |
|
|
216
|
+
| `orbitmap doc-import <title>` | Import a markdown file (`--context` to set when-to-use hint) |
|
|
217
|
+
| `orbitmap doc-update <id-or-slug>` | Replace a document from a file |
|
|
218
|
+
| `orbitmap doc-patch <id-or-slug>` | Patch a document with section operations |
|
|
219
|
+
| `orbitmap doc-share <doc-id> <area-id>` | Share a document with another area |
|
|
220
|
+
| `orbitmap doc-unshare <doc-id> <area-id>` | Remove document sharing |
|
|
221
|
+
| `orbitmap doc-visibility <doc-id> <area-id>` | Restrict a share to specific agents (or allow all) |
|
|
222
|
+
| `orbitmap docs pull [slug]` | Download document(s) to local cache |
|
|
223
|
+
| `orbitmap docs list-cache` | Show locally cached documents |
|
|
224
|
+
| `orbitmap docs clean` | Remove stale cached documents |
|
|
225
|
+
|
|
226
|
+
**Examples:**
|
|
227
|
+
```bash
|
|
228
|
+
# List all API docs
|
|
229
|
+
orbitmap docs --type api
|
|
230
|
+
|
|
231
|
+
# Search documents by title
|
|
232
|
+
orbitmap docs --search "auth"
|
|
233
|
+
|
|
234
|
+
# Read cheaply: TOC → one section → full content
|
|
235
|
+
orbitmap doc api-specification
|
|
236
|
+
orbitmap doc api-specification --section "## Authentication"
|
|
237
|
+
orbitmap doc api-specification --full
|
|
238
|
+
|
|
239
|
+
# Import a new document
|
|
240
|
+
orbitmap doc-import "API Spec" --type api --file ./docs/api-spec.md
|
|
241
|
+
|
|
242
|
+
# Update existing document
|
|
243
|
+
orbitmap doc-update api-specification --file ./docs/api-spec.md --changelog "Added auth section"
|
|
244
|
+
|
|
245
|
+
# Patch a single section (optimistic locking via --base-version)
|
|
246
|
+
orbitmap doc-patch api-specification --base-version 7 \
|
|
247
|
+
--replace-section "## Authentication" --content "Bearer tokens only." \
|
|
248
|
+
--changelog "Reworded auth"
|
|
249
|
+
|
|
250
|
+
# Share with another area
|
|
251
|
+
orbitmap doc-share <doc-uuid> <area-uuid> --agents agent1-uuid,agent2-uuid
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Area & Agent Info
|
|
255
|
+
|
|
256
|
+
| Command | Description |
|
|
257
|
+
|---------|-------------|
|
|
258
|
+
| `orbitmap context` | Show agent identity and current area |
|
|
259
|
+
| `orbitmap areas` | List all areas assigned to this agent |
|
|
260
|
+
| `orbitmap create-area <name>` | Create a new area (`--desc`, `--slug`, `--workspace-id`) |
|
|
261
|
+
| `orbitmap members <area-id>` | List agents and users in an area (accepts slug) |
|
|
262
|
+
| `orbitmap overview [area-id]` | Area overview with task statistics (uses default area) |
|
|
263
|
+
|
|
264
|
+
### Issues, Ideas & Vibes
|
|
265
|
+
|
|
266
|
+
| Command | Description |
|
|
267
|
+
|---------|-------------|
|
|
268
|
+
| `orbitmap issues` | List open issues |
|
|
269
|
+
| `orbitmap issue show <id>` | Show issue details (UUID or number) |
|
|
270
|
+
| `orbitmap issue register` | Register a new issue (`--intent` to link it to an intent) |
|
|
271
|
+
| `orbitmap issue status <id> <status>` | Update issue status |
|
|
272
|
+
| `orbitmap issue resolve <id>` | Resolve an issue |
|
|
273
|
+
| `orbitmap ideas` | List ideas |
|
|
274
|
+
| `orbitmap idea add` | Add a new idea |
|
|
275
|
+
| `orbitmap idea show <id>` | Show idea details (UUID or number) |
|
|
276
|
+
| `orbitmap idea status <id>` | Update idea status |
|
|
277
|
+
| `orbitmap vibes` | List vibes |
|
|
278
|
+
| `orbitmap vibe log` | Log a new vibe |
|
|
279
|
+
| `orbitmap vibe show <id>` | Show vibe details |
|
|
280
|
+
| `orbitmap vibe update <id>` | Update a vibe |
|
|
281
|
+
|
|
282
|
+
### Intents
|
|
283
|
+
|
|
284
|
+
Workspace-level desired outcomes. Tasks and issues hang off an intent; an intent can sit in an orbit.
|
|
285
|
+
|
|
286
|
+
| Command | Description |
|
|
287
|
+
|---------|-------------|
|
|
288
|
+
| `orbitmap intents` | List intents (shortcut for `intent list`) |
|
|
289
|
+
| `orbitmap intent show <id-or-number>` | Show an intent (UUID or `IN-xxxxxx`) |
|
|
290
|
+
| `orbitmap intent create <title>` | Create an intent (`--outcome`, `--status`, `--orbit`) |
|
|
291
|
+
| `orbitmap intent update <id>` | Update title, outcome, or status |
|
|
292
|
+
| `orbitmap intent link <id> --type task\|issue --id <uuid>` | Link a task or issue |
|
|
293
|
+
| `orbitmap intent unlink <id> --type task\|issue --id <uuid>` | Unlink a task or issue |
|
|
294
|
+
| `orbitmap intent orbit <id> [orbit-id]` | Set the intent's orbit (`--clear` to remove) |
|
|
295
|
+
|
|
296
|
+
**Statuses:** `new`, `design`, `plan`, `build`, `done`, `cancelled`
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
orbitmap intent create "Cut onboarding time in half" \
|
|
300
|
+
--outcome "New users reach first value in under 5 minutes" \
|
|
301
|
+
--status design --orbit growth-q3
|
|
302
|
+
|
|
303
|
+
orbitmap intent link IN-a1b2c3 --type task --id <task-uuid>
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
`intent create --orbit` is create-then-attach. If the attach step fails the intent is still created — the CLI reports the failure and does not retry.
|
|
307
|
+
|
|
308
|
+
### Missions
|
|
309
|
+
|
|
310
|
+
Time-boxed workspace focus. Only one mission can be `active` at a time.
|
|
311
|
+
|
|
312
|
+
| Command | Description |
|
|
313
|
+
|---------|-------------|
|
|
314
|
+
| `orbitmap missions` | List missions (shortcut for `mission list`) |
|
|
315
|
+
| `orbitmap mission show <id-or-number>` | Show a mission (UUID or `MS-xxxxxx`) |
|
|
316
|
+
| `orbitmap mission create <title>` | Create a mission (`--desc`, `--outcome`, `--end-date`) |
|
|
317
|
+
| `orbitmap mission update <id>` | Update title, description, outcome, or end date |
|
|
318
|
+
| `orbitmap mission status <id> <status>` | Set lifecycle status (`--move-to` to relocate unfinished work) |
|
|
319
|
+
| `orbitmap mission link <id> --type <t> --id <uuid>` | Link a task, issue, idea, or intent |
|
|
320
|
+
| `orbitmap mission unlink <id> --type <t> --id <uuid>` | Unlink a directly-linked item |
|
|
321
|
+
|
|
322
|
+
**Statuses:** created as `new`; then `active`, `completed`, `cancelled`.
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
orbitmap mission create "Ship v2 beta" --outcome "Beta live for 50 customers" --end-date 2026-09-30
|
|
326
|
+
orbitmap mission status MS-a1b2c3 active
|
|
327
|
+
orbitmap mission status MS-a1b2c3 completed --move-to MS-d4e5f6
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Linking a task or issue to a mission clears its `intent_id` — an item belongs either to an intent or directly to a mission.
|
|
331
|
+
|
|
332
|
+
### Orbits
|
|
333
|
+
|
|
334
|
+
| Command | Description |
|
|
335
|
+
|---------|-------------|
|
|
336
|
+
| `orbitmap orbit list` | List orbits (workspace-scoped from the area context, `--workspace`) |
|
|
337
|
+
| `orbitmap orbit show <id-or-slug>` | Show orbit details (areas, task counts, resources) |
|
|
338
|
+
| `orbitmap orbit create <name>` | Create an orbit (`--desc`, `--color`, `--areas`) |
|
|
339
|
+
| `orbitmap orbit update <id-or-slug>` | Update name, description, status, or color |
|
|
340
|
+
| `orbitmap orbit items <id-or-slug>` | List items in an orbit (`--type`) |
|
|
341
|
+
| `orbitmap orbit attach <id-or-slug>` | Attach an object to an orbit |
|
|
342
|
+
| `orbitmap orbit detach <id-or-slug>` | Detach an object from an orbit |
|
|
343
|
+
| `orbitmap orbit area link <id-or-slug> <area-id>` | Link an area to an orbit |
|
|
344
|
+
| `orbitmap orbit area unlink <id-or-slug> <area-id>` | Unlink an area from an orbit |
|
|
345
|
+
| `orbitmap orbit dep <id-or-slug> <target-orbit-id>` | Add an orbit-to-orbit dependency |
|
|
346
|
+
|
|
347
|
+
**Item types:** `task`, `issue`, `vibe`, `idea`, `document`
|
|
348
|
+
**Orbit statuses:** `active`, `completed`, `archived`
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
orbitmap orbit create "Growth Q3" --color "#5B8DEF" --areas <area-uuid>,<area-uuid>
|
|
352
|
+
orbitmap orbit attach growth-q3 --type task --id <task-uuid> --note "core flow"
|
|
353
|
+
orbitmap orbit items growth-q3 --type task
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
There is no orbit delete and no dependency remove in the API — archive via `orbit update --status archived`.
|
|
357
|
+
|
|
358
|
+
### Delivery Status
|
|
359
|
+
|
|
360
|
+
Track code delivery lifecycle on tasks:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
orbitmap status abc123 done --delivery on_branch
|
|
364
|
+
orbitmap status abc123 done --delivery merged
|
|
365
|
+
orbitmap status abc123 done --delivery released
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Setup helpers
|
|
369
|
+
|
|
370
|
+
| Command | Description |
|
|
371
|
+
|---------|-------------|
|
|
372
|
+
| `orbitmap init` | Full setup — mode, then credentials or workspace, then the agent skills (`--key`, `--area`, `--profile`, `--advanced`, `--global`; `--local`, `--workspace`, `--workspace-name`; `--agent <type>`, `--no-skills`) |
|
|
373
|
+
| `orbitmap login` / `orbitmap logout` | Browser-based OAuth login / token revocation |
|
|
374
|
+
| `orbitmap setup-agent` | Refresh the installed instructions (after a CLI upgrade) or add another agent type — `init` installs them once already |
|
|
375
|
+
| `orbitmap setup-mcp` | Write/merge an `orbitmap` entry into `.mcp.json` (no API calls) |
|
|
376
|
+
|
|
377
|
+
### Global Options
|
|
378
|
+
|
|
379
|
+
| Option | Description |
|
|
380
|
+
|--------|-------------|
|
|
381
|
+
| `--json` | Output raw JSON (for scripting/piping) |
|
|
382
|
+
| `--area <id>` | Override area context (UUID or slug) |
|
|
383
|
+
| `--workspace <path>` | Override the local workspace directory (local mode only) |
|
|
384
|
+
|
|
385
|
+
## Configuration
|
|
386
|
+
|
|
387
|
+
See `docs/adr/0002-project-scoped-config.md` for the full design and rationale (this
|
|
388
|
+
replaced a single global config file — breaking for scripted `init` callers that relied on
|
|
389
|
+
that, see the ADR's Consequences section).
|
|
390
|
+
|
|
391
|
+
### Setup
|
|
392
|
+
|
|
393
|
+
Run `npx orbitmap init` for interactive setup. For cloud mode, it writes
|
|
394
|
+
`<project>/.orbitmap/config.json` (committable, no secrets) by default; pass `--global` to
|
|
395
|
+
write `~/.orbitmap/config.json` instead (a machine-wide default, like `git config --global`).
|
|
396
|
+
The API key always goes to `~/.orbitmap/credentials.json`, under a named **agent profile** —
|
|
397
|
+
never into a config file, either way.
|
|
398
|
+
|
|
399
|
+
### Project config file — `<project>/.orbitmap/config.json`
|
|
400
|
+
|
|
401
|
+
```json
|
|
402
|
+
{
|
|
403
|
+
"schema_version": 1,
|
|
404
|
+
"mode": "cloud",
|
|
405
|
+
"agent": "orbitmap-app-bot",
|
|
406
|
+
"area": "my-area-slug"
|
|
407
|
+
}
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
`mode` is `"cloud"` (the default when the key is absent) or `"local"`. `agent` names a
|
|
411
|
+
profile in `~/.orbitmap/credentials.json` — the project says *which* agent to use, the
|
|
412
|
+
credentials file (below) holds *that agent's* key. This file is meant to be committed: a
|
|
413
|
+
team shares the `agent` name and `area` pinning through version control, and each member's
|
|
414
|
+
own copy of `credentials.json` supplies their own agent's key.
|
|
415
|
+
|
|
416
|
+
### Global config file — `~/.orbitmap/config.json`
|
|
417
|
+
|
|
418
|
+
Same shape, used as the fallback for any field a project's own config doesn't set, and as
|
|
419
|
+
the only place `workspace_path` (the default local workspace directory) is read from. Only
|
|
420
|
+
written by `orbitmap init --global`, or left over from before ADR 0002 — in which case a
|
|
421
|
+
lingering `area` is still honoured but prints a one-time deprecation warning telling you to
|
|
422
|
+
move it into a project's own `.orbitmap/config.json`.
|
|
423
|
+
|
|
424
|
+
### Credentials file — `~/.orbitmap/credentials.json`
|
|
425
|
+
|
|
426
|
+
Never committed, never leaves the machine. Also holds the OAuth session used by
|
|
427
|
+
`orbitmap login`/`orbitmap logout` (unrelated top-level fields, unchanged shape):
|
|
428
|
+
|
|
429
|
+
```json
|
|
430
|
+
{
|
|
431
|
+
"agents": {
|
|
432
|
+
"orbitmap-app-bot": { "api_key": "orbitmap_..." },
|
|
433
|
+
"orbitmap-cli-bot": { "api_key": "orbitmap_..." }
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
An agent name that resolves to nothing here (nothing named `agent` anywhere, including the
|
|
439
|
+
global config) falls back to the `"default"` profile — which is also where a pre-ADR-0002
|
|
440
|
+
global `api_key` is migrated to. That migration runs inside `loadConfig()`, i.e. on the
|
|
441
|
+
first command of any kind after upgrading, not only on `orbitmap init`; it rewrites
|
|
442
|
+
`~/.orbitmap/config.json` without the key (preserving every other key in the file) and
|
|
443
|
+
prints a one-time notice. If the write fails — read-only `$HOME`, a `credentials.json` owned
|
|
444
|
+
by another user — it says so and keeps using the key from the config file, so the CLI never
|
|
445
|
+
locks you out over a key that is right there on disk.
|
|
446
|
+
|
|
447
|
+
`~/.orbitmap` itself can be relocated with `ORBITMAP_CONFIG_HOME` or the standard
|
|
448
|
+
`XDG_CONFIG_HOME` (as `$XDG_CONFIG_HOME/orbitmap`); reads fall back to the legacy
|
|
449
|
+
`~/.orbitmap` location when the new one has nothing yet.
|
|
450
|
+
|
|
451
|
+
### Environment Variables
|
|
452
|
+
|
|
453
|
+
Environment variables take precedence over every config file:
|
|
454
|
+
|
|
455
|
+
| Variable | Description |
|
|
456
|
+
|----------|-------------|
|
|
457
|
+
| `ORBITMAP_API_KEY` | Agent API key (bypasses agent-profile lookup entirely) |
|
|
458
|
+
| `ORBITMAP_API_URL` | API base URL — the only remaining override; there is no config-file equivalent any more (see the ADR) |
|
|
459
|
+
| `ORBITMAP_AGENT` | Name of the agent profile in `credentials.json` to use |
|
|
460
|
+
| `ORBITMAP_AREA` | Area UUID or slug |
|
|
461
|
+
| `ORBITMAP_MODE` | `cloud` or `local` — overrides the config `mode` |
|
|
462
|
+
| `ORBITMAP_WORKSPACE` | Local workspace directory (local mode) |
|
|
463
|
+
| `ORBITMAP_CONFIG_HOME` / `XDG_CONFIG_HOME` | Relocate `~/.orbitmap` |
|
|
464
|
+
|
|
465
|
+
### Resolution Priority
|
|
466
|
+
|
|
467
|
+
**Area** (first match wins):
|
|
468
|
+
1. Explicit `--area` flag
|
|
469
|
+
2. `ORBITMAP_AREA` env
|
|
470
|
+
3. `.orbitmap/link.json` (`area`) found by walking up from the current directory — local mode
|
|
471
|
+
4. Nearest `.orbitmap/config.json` **that sets `area`**, found the same way. Resolution is
|
|
472
|
+
per field: a `packages/api/.orbitmap/config.json` that sets only `agent` does not hide an
|
|
473
|
+
`area` pinned by the repository root
|
|
474
|
+
5. `default_area` in the workspace's `workspace.yml` — local mode; written by `orbitmap init` for
|
|
475
|
+
the first area, so a workspace outranks the machine-wide default of an unrelated project
|
|
476
|
+
6. Global config `area` (deprecated — prints a warning when hit)
|
|
477
|
+
7. Defaults (local mode: the only area in the workspace, when there is exactly one)
|
|
478
|
+
|
|
479
|
+
**Agent / API key** (first match wins):
|
|
480
|
+
1. `ORBITMAP_API_KEY` env — used directly, no profile lookup
|
|
481
|
+
2. Otherwise resolve an agent name (`ORBITMAP_AGENT` env → nearest `.orbitmap/config.json`
|
|
482
|
+
that sets `agent` → global config `agent` → `"default"`) and look up its key in
|
|
483
|
+
`credentials.json`
|
|
484
|
+
|
|
485
|
+
**Mode** (first match wins): `--workspace` (explicit → local) → `ORBITMAP_MODE` → nearest
|
|
486
|
+
`.orbitmap/config.json` that sets `mode` → local auto-detect (`.orbitmap/workspace.yml` or
|
|
487
|
+
`.orbitmap/link.json` found by walking up) → `mode` in the global config, defaulting to
|
|
488
|
+
`cloud`.
|
|
489
|
+
|
|
490
|
+
**Workspace directory** (local mode, first match wins): `--workspace` → `ORBITMAP_WORKSPACE`
|
|
491
|
+
→ `.orbitmap/link.json` (`workspace`) → nearest `.orbitmap/workspace.yml` → the `.orbitmap/`
|
|
492
|
+
directory of the nearest config that sets `mode: "local"`, when it is itself a workspace →
|
|
493
|
+
`workspace_path` in the global config, **which must be an absolute path** (a relative one
|
|
494
|
+
would mean a different directory in every project, so it is ignored with a warning).
|
|
495
|
+
|
|
496
|
+
## Authentication
|
|
497
|
+
|
|
498
|
+
In cloud mode, OrbitMap CLI uses a single **Agent API Key** for authentication (`Authorization: Bearer` header). Local mode has no authentication at all — access to the workspace directory is the only credential. Each agent has its own key, named by an agent profile in `~/.orbitmap/credentials.json` — get the key itself from the OrbitMap dashboard. Area context travels in the `X-Orbitmap-Area` header.
|
|
499
|
+
|
|
500
|
+
Optionally, set a default **Area ID** if your agent is assigned to multiple areas.
|
|
501
|
+
|
|
502
|
+
## Error handling
|
|
503
|
+
|
|
504
|
+
API errors are printed as `Error [CODE] (status): message`. Alongside the regular envelope, the client normalises the flat billing/usage shape returned by 402/429 responses into:
|
|
505
|
+
|
|
506
|
+
| Code | When |
|
|
507
|
+
|------|------|
|
|
508
|
+
| `PAYMENT_REQUIRED` | HTTP 402 — billing action needed |
|
|
509
|
+
| `RATE_LIMITED` | HTTP 429 — too many requests |
|
|
510
|
+
| `USAGE_LIMIT` | Other flat-error responses |
|
|
511
|
+
| `TIMEOUT` | No response within 30s |
|
|
512
|
+
|
|
513
|
+
## For AI Agents
|
|
514
|
+
|
|
515
|
+
`orbitmap init` already teaches your agent about OrbitMap — the skills are its last step, in
|
|
516
|
+
both cloud and local mode, and it creates the agent config file when the directory has none:
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
npx orbitmap init --agent claude # or let it detect / ask; --no-skills opts out
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
`setup-agent` does the same install on its own, for the two cases `init` does not cover:
|
|
523
|
+
refreshing the content after upgrading the CLI, and adding a second agent type to a directory
|
|
524
|
+
that is already set up.
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
npx orbitmap setup-agent # auto-detects your agent
|
|
528
|
+
npx orbitmap setup-agent --agent claude
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
Either way it installs two layers, mirroring the OrbitMap MCP server:
|
|
532
|
+
|
|
533
|
+
- A **thin always-on hook** (~10 lines) in your agent config (`CLAUDE.md`, `AGENTS.md`, …) so the agent always knows the project uses OrbitMap and knows the workflow skeleton.
|
|
534
|
+
- The **deep, on-demand instructions** — full parity with the MCP `full` profile. For **Claude Code** these are installed as loaded-on-demand skills (`.claude/skills/orbitmap`, `orbitmap-working`, `orbitmap-planning`, `orbitmap-docs`, zero per-turn context cost); for other agents they're inlined as a markdown fallback.
|
|
535
|
+
|
|
536
|
+
The instructions are mode-agnostic: they reference CLI commands only, so the same skills drive an agent whether the data goes to the cloud or to local files.
|
|
537
|
+
|
|
538
|
+
See [Agent Instructions](docs/agent-instructions.md) for details.
|
|
539
|
+
|
|
540
|
+
## Requirements
|
|
541
|
+
|
|
542
|
+
- Node.js 18+
|
|
543
|
+
|
|
544
|
+
## License
|
|
545
|
+
|
|
546
|
+
MIT
|