aiur-cli 0.0.3 → 0.0.5-nightly.24dcc4d
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 +89 -53
- package/bin/aiur.js +5 -4
- package/libexec/aiur-engine.sh +2085 -112
- package/libexec/guard-pr-deletions.sh +70 -0
- package/package.json +9 -8
- package/scripts/postinstall.mjs +5 -4
package/README.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
Oversee a fleet of coding agents that **coordinate via events**.
|
|
6
6
|
|
|
7
|
+
Aiur watches your issue tracker, dispatches one agent per ticket into its own
|
|
8
|
+
workspace and checkout, and gives you four ways to supervise the fleet instead
|
|
9
|
+
of babysitting individual coding sessions.
|
|
10
|
+
|
|
7
11
|
> [!WARNING]
|
|
8
12
|
> **Use at your own risk.** Aiur is an unstable, vibecoded engineering preview for trusted
|
|
9
13
|
> environments only. It **bypasses all agent permission prompts** and has very few efficiency
|
|
@@ -12,72 +16,104 @@ Oversee a fleet of coding agents that **coordinate via events**.
|
|
|
12
16
|
> Provided "as is", without warranty of any kind. You assume all risk for any cost, token
|
|
13
17
|
> spend, data loss, or damage from running it.
|
|
14
18
|
|
|
15
|
-
## Install
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm install -g aiur-cli
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Requires [tmux](https://github.com/tmux/tmux) at runtime. Install
|
|
22
|
-
[opencode](https://opencode.ai) too for in-pane agent chat.
|
|
23
|
-
|
|
24
|
-
When a newer `aiur-cli` is published, a one-line update notice is printed to
|
|
25
|
-
stderr (checked in the background at most once a day, never blocking your
|
|
26
|
-
command). Set `AIUR_NO_UPDATE_NOTIFIER=1` to silence it; it is also skipped under
|
|
27
|
-
CI (`CI=true`).
|
|
28
|
-
|
|
29
19
|
## Get started
|
|
30
20
|
|
|
31
21
|
```bash
|
|
22
|
+
npm install -g aiur-cli # Node.js 18+
|
|
23
|
+
|
|
32
24
|
cd your-repo
|
|
33
|
-
aiur init
|
|
34
|
-
aiur
|
|
25
|
+
aiur init # interactive setup wizard
|
|
26
|
+
aiur # start the run
|
|
35
27
|
```
|
|
36
28
|
|
|
37
|
-
`aiur init` scaffolds `.
|
|
29
|
+
`aiur init` scaffolds `.aiur/config` and provisions the repo: tracker and
|
|
30
|
+
repository, agent backends and routing, concurrency and turn limits, the GitHub
|
|
31
|
+
token, and the `agent:*` lifecycle labels. Re-running resumes from your saved
|
|
32
|
+
answers.
|
|
33
|
+
|
|
34
|
+
When setup finishes, label the issues you want worked `agent:todo` and run
|
|
35
|
+
`aiur`.
|
|
36
|
+
|
|
37
|
+
| Requirement | Why |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| [tmux](https://github.com/tmux/tmux) | Runtime for the TUI and agent panes |
|
|
40
|
+
| [opencode](https://opencode.ai) | In-pane agent chat (provisioned on install) |
|
|
41
|
+
| Claude Code or Codex | The agents themselves |
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
2. **Tracker** — GitHub or Linear, plus the repo.
|
|
41
|
-
3. **Agents & routing** — Claude and/or Codex, optional per-complexity model
|
|
42
|
-
routing, and the permission mode.
|
|
43
|
-
4. **Limits** — max concurrent agents, turns, duration, pre-warmed sessions, and
|
|
44
|
-
polling interval.
|
|
45
|
-
5. **GitHub token** — to create labels and act as the bot account.
|
|
46
|
-
6. **Labels** — the lifecycle (`agent:*`), complexity, model, and remote-control
|
|
47
|
-
labels aiur routes on. Only missing labels are created; a group that already
|
|
48
|
-
exists is reported as created and skipped.
|
|
43
|
+
## The four surfaces
|
|
49
44
|
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
| Surface | What it gives you | How to open it |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| **CLI** | Scriptable control of a run from any shell | `aiur status`, `aiur pause 142` |
|
|
48
|
+
| **TUI** | Live agent board plus chat panes, in your terminal | `aiur` (foreground) |
|
|
49
|
+
| **Dashboard** | Browser view of the fleet, decisions, and analytics | `http://127.0.0.1:4000` |
|
|
50
|
+
| **Stream Deck** | Physical keys and dictation for the fleet | Separate sidecar, see below |
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
### CLI
|
|
54
53
|
|
|
55
54
|
| Command | What it does |
|
|
56
|
-
|
|
57
|
-
| `aiur init` | Interactive setup wizard
|
|
58
|
-
| `aiur` | Start the
|
|
59
|
-
| `aiur --bg` | Start a headless
|
|
60
|
-
| `aiur status` |
|
|
61
|
-
| `aiur
|
|
62
|
-
| `aiur
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| `aiur init` | Interactive setup wizard |
|
|
57
|
+
| `aiur` | Start the run in the foreground with the TUI |
|
|
58
|
+
| `aiur --bg` | Start a detached headless run, dashboard still served |
|
|
59
|
+
| `aiur status` | Daemon state, active agents, and the current concurrency cap |
|
|
60
|
+
| `aiur alerts --needs-attention` | Unresolved items waiting on you |
|
|
61
|
+
| `aiur pause <id…>` / `aiur resume <id…>` | Pause or resume agents by issue id |
|
|
62
|
+
| `aiur message <id> "<text>"` | Send text into a live agent session |
|
|
63
|
+
| `aiur set max-agents <n>` | Change the concurrency cap without restarting |
|
|
64
|
+
| `aiur --todo <id…> [--only]` | Queue tickets; `--only` dequeues the rest |
|
|
65
|
+
| `aiur stop` / `aiur restart` | Stop the session, or refresh the release and restart |
|
|
66
|
+
|
|
67
|
+
Add `--no-dashboard` to either mode to skip the web listener.
|
|
68
|
+
|
|
69
|
+
### TUI
|
|
70
|
+
|
|
71
|
+
The foreground run opens a tmux board with one row per ticket, showing runtime,
|
|
72
|
+
turn count, backend, pinned model, and a state glyph. Press `enter` on a row to
|
|
73
|
+
open that agent's chat pane beside the board, `space` to pause or resume, `←`
|
|
74
|
+
and `→` to change the concurrency cap, and `?` for the full keymap.
|
|
75
|
+
|
|
76
|
+
### Dashboard
|
|
77
|
+
|
|
78
|
+
Served on foreground and `--bg` runs at the host and port in your config,
|
|
79
|
+
`http://127.0.0.1:4000` by default. The launch output prints the real URL.
|
|
80
|
+
|
|
81
|
+
| Page | What it shows |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| Units | Fleet table, ticket backlog, provider rate meters |
|
|
84
|
+
| Commands | Durable decision inbox: answer, revise, retry delivery |
|
|
85
|
+
| Build Order | Ticket dependency graph and phases |
|
|
86
|
+
| Analytics | Throughput, complexity tiers, and spend over a chosen window |
|
|
87
|
+
|
|
88
|
+
Writable mode is the default and requires `AIUR_DASHBOARD_USERNAME` and
|
|
89
|
+
`AIUR_DASHBOARD_PASSWORD`, even on loopback. Set
|
|
90
|
+
`observability.dashboard_writable: false` for an unauthenticated read-only
|
|
91
|
+
loopback dashboard. Basic Auth is unencrypted, so put a TLS proxy in front of any
|
|
92
|
+
non-loopback bind.
|
|
93
|
+
|
|
94
|
+
### Stream Deck
|
|
95
|
+
|
|
96
|
+
An Elgato Stream Deck + can drive the fleet: agent keys ranked by urgency, pause
|
|
97
|
+
and resume, a live log surface, and hold-to-dictate voice messages. A browser
|
|
98
|
+
emulator of the same layout is at `/streamdeck` on the dashboard.
|
|
99
|
+
|
|
100
|
+
> The physical sidecar is **experimental** and ships separately from this
|
|
101
|
+
> package, as a Linux x64 archive (glibc 2.28+, systemd user session). It is not
|
|
102
|
+
> installed by `npm install aiur-cli`. See the
|
|
103
|
+
> [Stream Deck guide](https://aiur.team/docs/guide/stream-deck).
|
|
104
|
+
|
|
105
|
+
## Update notices
|
|
106
|
+
|
|
107
|
+
When a newer `aiur-cli` is published, a one-line notice is printed to stderr,
|
|
108
|
+
checked in the background at most once a day and never blocking your command.
|
|
109
|
+
Set `AIUR_NO_UPDATE_NOTIFIER=1` to silence it; it is skipped under CI.
|
|
110
|
+
|
|
111
|
+
Prerelease builds are published under the `nightly` dist-tag and never reach
|
|
112
|
+
`latest`, so a plain `npm install -g aiur-cli` always gives you a stable release.
|
|
113
|
+
To try one: `npm install -g aiur-cli@nightly`.
|
|
78
114
|
|
|
79
115
|
---
|
|
80
116
|
|
|
81
117
|
_Command macro, delegate micro, maximize APM._
|
|
82
118
|
|
|
83
|
-
[github.com/
|
|
119
|
+
[github.com/aiur-team/aiur](https://github.com/aiur-team/aiur)
|
package/bin/aiur.js
CHANGED
|
@@ -50,7 +50,7 @@ function resolveReleaseDir() {
|
|
|
50
50
|
fail(
|
|
51
51
|
`unsupported platform ${process.platform}/${process.arch}. ` +
|
|
52
52
|
"Supported: darwin/linux on arm64/x64. " +
|
|
53
|
-
"See https://github.com/
|
|
53
|
+
"See https://github.com/aiur-team/aiur",
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -64,7 +64,7 @@ function resolveReleaseDir() {
|
|
|
64
64
|
`platform package "${pkg}" is not installed. ` +
|
|
65
65
|
"This usually means optional dependencies were skipped " +
|
|
66
66
|
"(--no-optional, a shared lockfile, or a known npm install bug). " +
|
|
67
|
-
"Reinstall aiur-cli, or see https://github.com/
|
|
67
|
+
"Reinstall aiur-cli, or see https://github.com/aiur-team/aiur",
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
throw err;
|
|
@@ -162,8 +162,9 @@ function ensureTmux() {
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
// True only when the pinned opencode is on PATH; a wrong
|
|
166
|
-
//
|
|
165
|
+
// True only when the pinned opencode is on PATH; a wrong (e.g. newer,
|
|
166
|
+
// unverified) version must be replaced with the pin, so presence alone
|
|
167
|
+
// isn't enough.
|
|
167
168
|
function opencodeMatchesPin() {
|
|
168
169
|
const result = safeSpawn("opencode", ["--version"], { encoding: "utf8" });
|
|
169
170
|
return !result.error && result.status === 0 && (result.stdout || "").trim() === opencodeVersion();
|