@shardflux/cli 0.24.1 → 0.28.0
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 +159 -1
- package/README.md +182 -35
- package/dist/account-pool.d.ts +11 -1
- package/dist/account-pool.js +48 -0
- package/dist/acp-journal.js +23 -1
- package/dist/agent-commands.js +4 -3
- package/dist/agent-models.d.ts +31 -1
- package/dist/agent-models.js +27 -4
- package/dist/args.d.ts +1 -1
- package/dist/args.js +97 -14
- package/dist/board-args.js +26 -4
- package/dist/board-commands.d.ts +9 -5
- package/dist/board-commands.js +43 -16
- package/dist/brain-commands.d.ts +2 -0
- package/dist/brain-commands.js +78 -0
- package/dist/client-settings.d.ts +2 -1
- package/dist/client-settings.js +14 -2
- package/dist/codex-cloud.d.ts +2 -0
- package/dist/codex-cloud.js +14 -11
- package/dist/commands.js +8 -0
- package/dist/conversation-commands.d.ts +5 -1
- package/dist/conversation-commands.js +76 -8
- package/dist/conversation-terminal.js +2 -2
- package/dist/conversations.d.ts +2 -1
- package/dist/desktop-linux.d.ts +12 -1
- package/dist/desktop-linux.js +47 -18
- package/dist/device-approvals.js +24 -2
- package/dist/device-bridge.d.ts +21 -4
- package/dist/device-bridge.js +173 -7
- package/dist/device-folders.d.ts +14 -1
- package/dist/device-folders.js +20 -8
- package/dist/device-helper.d.ts +8 -0
- package/dist/device-helper.js +83 -13
- package/dist/device-mode.d.ts +44 -0
- package/dist/device-mode.js +119 -0
- package/dist/drive-commands.d.ts +2 -2
- package/dist/drive-commands.js +1 -1
- package/dist/errors.js +2 -1
- package/dist/format.js +6 -2
- package/dist/handlers.js +5 -2
- package/dist/land.d.ts +121 -0
- package/dist/land.js +284 -0
- package/dist/mac-app.d.ts +11 -0
- package/dist/mac-app.js +11 -0
- package/dist/main.js +9 -1
- package/dist/menubar.d.ts +18 -13
- package/dist/menubar.js +60 -50
- package/dist/onboarding.d.ts +4 -4
- package/dist/orchestrator-args.d.ts +7 -0
- package/dist/orchestrator-args.js +64 -0
- package/dist/orchestrator-commands.d.ts +43 -0
- package/dist/orchestrator-commands.js +262 -0
- package/dist/person-scope.d.ts +20 -0
- package/dist/person-scope.js +61 -0
- package/dist/project-hub-seed.d.ts +20 -0
- package/dist/project-hub-seed.js +59 -0
- package/dist/registry.d.ts +1 -1
- package/dist/registry.js +2 -1
- package/dist/router-commands.d.ts +12 -10
- package/dist/router-commands.js +5 -59
- package/dist/t3-launch.js +2 -2
- package/dist/task-land-hub.py +165 -0
- package/dist/this-computer.d.ts +4 -2
- package/dist/this-computer.js +20 -2
- package/dist/thread-on-computer.js +2 -2
- package/dist/timing.js +3 -1
- package/dist/transcribe-commands.d.ts +7 -0
- package/dist/transcribe-commands.js +84 -0
- package/dist/update.js +4 -2
- package/dist/wait-status.d.ts +1 -1
- package/dist/wait-status.js +2 -0
- package/dist/worktree-twin-engine.d.ts +8 -0
- package/dist/worktree-twin-engine.js +29 -23
- package/dist/worktree-twin.d.ts +6 -0
- package/dist/worktree-twin.js +8 -1
- package/package.json +6 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,145 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- `shard orchestrator say` (0.28.0+, SDK 0.30.0): every input waits its turn in order,
|
|
6
|
+
however many wait (no more 429), and one of your orchestrator's threads hears each input at once, all in parallel: a
|
|
7
|
+
follow-up reaches the thread of the request it is about (the input reads merged), the row you point at reaches the
|
|
8
|
+
thread of that row's input, and anything new gets a thread of its own. The help text says so.
|
|
9
|
+
- Your inbox on every device (0.28.0+, SDK 0.30.0): `shard conversations archive <id...>` archives conversations from
|
|
10
|
+
your own inbox, `shard conversations unarchive <id...>` brings them back and `shard conversations seen <id...>` records
|
|
11
|
+
that you opened them now, the same in the Shardflux app and every client you use (`shard c archive|unarchive|seen`).
|
|
12
|
+
Each takes up to 200 ids in one request and prints `Archived <id> <title>`, `Unarchived <id> <title>` or
|
|
13
|
+
`Marked seen <id> <title>` per conversation, and `Not found: <id>` on stderr for an id you cannot read; it exits 3
|
|
14
|
+
when none was found. `--json` prints the API's answer, `{data, skipped}`, the conversations with your `seen_at` and
|
|
15
|
+
`dismissed_at`. Only your view changes: the conversations, their agents and computers carry on. `shard conversations
|
|
16
|
+
get --json` and `list --json` carry the same `seen_at`, `dismissed_at` and `needs_you_reason`.
|
|
17
|
+
- Restore an orchestrator input (0.28.0+, SDK 0.30.0): `shard orchestrator restore <input-id>` brings an input you
|
|
18
|
+
dismissed back into `shard orchestrator list` on every device and prints `Restored: <your words>` (`--json`:
|
|
19
|
+
`{input}`). Restoring an input that is not dismissed changes nothing.
|
|
20
|
+
- Orchestrator answer media (0.27.0+, SDK 0.29.0): `shard orchestrator say --wait` prints a line for each picture,
|
|
21
|
+
video or file the answer shows, after its points: ` media: loss-curve.png (image, 1200×800, 84.0 KB)` (the size in
|
|
22
|
+
pixels once measured). `--json` adds the answer's `media`; `shard drive get <file.path> --sha256 <file.sha256>` reads
|
|
23
|
+
one.
|
|
24
|
+
|
|
25
|
+
- Orchestrator report cards (0.27.0+, SDK 0.29.0): `shard orchestrator say --wait` prints an answer the orchestrator
|
|
26
|
+
wrote as a report as its verdict, then its points under their group headings, one line each:
|
|
27
|
+
`- Loss is down to 1.84: from 2.31 at step 5,000 (14:02)`, the time short and in this computer's local time; a point
|
|
28
|
+
written without a lead prints its words. Every point, source and follow-up prints whole, however long. An answer
|
|
29
|
+
written as facts prints its facts as before. `--json` adds the answer's `points`.
|
|
30
|
+
|
|
31
|
+
- Board content at any length (0.27.0+, SDK 0.29.0): `shard task show` prints a task's title, its plan steps and each
|
|
32
|
+
report's title and outcome whole, however long the agent wrote them (the terminal wraps them); `shard task edit
|
|
33
|
+
--title` takes a title of any length.
|
|
34
|
+
|
|
35
|
+
- Your brain (0.27.0+, SDK 0.29.0): `shard brain ls [prefix]` lists your brain's files (size, saved time, type and
|
|
36
|
+
path; `--all`, `--limit`, `--cursor`; `--json` adds `next_cursor` and the brain's `version`) and `shard brain get
|
|
37
|
+
<path>` writes a file's bytes to standard output, to a file with `-o`, or as `--json` (`--sha256` reads exactly that
|
|
38
|
+
version). Your brain is your archive in an organization, kept by your orchestrator: its published answers as
|
|
39
|
+
`reports/<YYYY-MM-DD>/<folder>/report.md` with their media, its own notes and files, and `index.md`. Signed in it is
|
|
40
|
+
your brain in the saved organization, your only one, or `--org <id|slug>`; with `SHARDFLUX_API_KEY`, the brain of the
|
|
41
|
+
person who created the key.
|
|
42
|
+
- 0.28.0: shard files delete removes a file or, with --recursive, a directory through the files API; disk-full errors give cleanup guidance without a retry loop.
|
|
43
|
+
- Hung checkpoint recovery: `guest_unresponsive` identifies a cold boot after bounded restore readiness failures. Retained files are kept; memory is not restored and processes restart. Conversation moves can use their last durable copy after a bounded source restore failure; the newer source disk stays kept under its retention policy.
|
|
44
|
+
|
|
45
|
+
- A linked folder's start point (0.28.0+): when an agent links a folder of yours (a device's
|
|
46
|
+
`project_link`), the folder as it is now (its commit, uncommitted files as a snapshot on top) goes to the project hub
|
|
47
|
+
under `refs/shard/seed/link-<folder>`, and the link's result names that `commit` and the folder's `branch`. A task can
|
|
48
|
+
then name exactly where its work starts, and its agent starts there with no conversation of that folder yet. Linking
|
|
49
|
+
from the app or `shard projects link` copies nothing to the hub. An API without the fields takes the link without them.
|
|
50
|
+
|
|
51
|
+
- Landing per repository (0.28.0+): a project holds every folder its people linked, so a task's result lands only in a
|
|
52
|
+
folder of the repository it was started from (its workers' `repo_remote`). When the project hub's default branch is
|
|
53
|
+
another repository's, the result lands in its own folder and the hub's default branch stays as it is; with no folder
|
|
54
|
+
of that repository on this computer it answers `land_unrelated`.
|
|
55
|
+
|
|
56
|
+
- A result from another repository (0.28.0+): `shard task land` and `shard conversations land` answer `land_unrelated`
|
|
57
|
+
when the result has no history in common with the branch it lands in (it was started from another repository than
|
|
58
|
+
the one that branch holds, or two of its workers were), with what to do instead; nothing moves on the project hub or
|
|
59
|
+
in your folder. It was a Git error ("refusing to merge unrelated histories") that read as if trying again could help.
|
|
60
|
+
|
|
61
|
+
- Auto land switch (0.27.0+): `shard settings --auto-land on|off` turns automatic landing on or off for every project
|
|
62
|
+
on this computer (on by default). Off, the live twin lands no conversation and new conversations start from your
|
|
63
|
+
HEAD; `shard task land` and `shard conversations land` still land on request. `shard settings` shows it and `--json`
|
|
64
|
+
adds `auto_land`. The Shardflux app reads the same switch to land finished board tasks with no click.
|
|
65
|
+
|
|
66
|
+
- Message delivery (0.27.0+, SDK 0.29.0): `shard conversations send` reaches a working agent in its running turn
|
|
67
|
+
(Claude Code, Codex and Codex Cloud) and starts an idle one's next turn; its help says so instead of "next turn".
|
|
68
|
+
`--wait` waits up to 60 s and prints what happened: `Steered into the running turn.`, `Started the next turn.` or
|
|
69
|
+
`Not delivered yet.` (`Delivery not confirmed yet: …` when Codex Cloud has not confirmed it); `--json` adds
|
|
70
|
+
`delivery`. Without `--wait` the output stays `Message sent (<seq>).`
|
|
71
|
+
|
|
72
|
+
- One Shardflux app (0.27.0+): `shard` installs and updates the one desktop app (menu bar or tray, onboarding,
|
|
73
|
+
launcher, conversations with their computers, device approvals, one Settings window) from
|
|
74
|
+
`@shardflux/desktop-darwin-arm64` / `-x64` 0.9.0 on macOS (replacing `@shardflux/menubar-darwin`) and from
|
|
75
|
+
`@shardflux/desktop-linux-x64` / `-arm64` 0.9.0 on Linux (replacing the GTK tray app), at the same places as before
|
|
76
|
+
(`~/Applications/Shardflux.app`, `~/.local/share/shardflux/desktop`). It keeps the menu bar app's bundle id,
|
|
77
|
+
executable and signature, so `shard menubar start|stop|status|--login` and the running app's own update work
|
|
78
|
+
unchanged, and its first start retires the apps it replaces, keeping where each agent's conversations open (the
|
|
79
|
+
places `agents targets --open-in` saved) and, on Linux, the tray app's settings. The Linux autostart entry starts it with `--background`
|
|
80
|
+
(tray icon only). The launcher shortcut lines read the app's own choice (`desktop-app.json`). `shard update` lists it
|
|
81
|
+
as "Shardflux app". Retired: the CGWindowList window probe used for menu bar apps before 0.3.2.
|
|
82
|
+
On Linux the running app is found by its executable (`/proc/<pid>/exe`): Electron rewrites its command line, so
|
|
83
|
+
`shard menubar start|stop|status` and the refresh no longer miss it; the library check probes the Electron
|
|
84
|
+
executable behind the app's launcher and names each library the computer is missing.
|
|
85
|
+
- 0.27.0 includes the changes prepared as 0.26.0 (not released on its own): the entries marked 0.27.0 below.
|
|
86
|
+
|
|
87
|
+
- Device registration (0.27.0+): isolate each project, back off transient failures and stop after eight attempts with
|
|
88
|
+
an actionable needs-attention message. A device id another sign-in registered (the API key `shard setup` replaced,
|
|
89
|
+
or another account) is replaced by a new one (at most once every 10 minutes), with one line in the helper's log, and every project
|
|
90
|
+
registers again at once, so your agents reach this computer without a restart. The old id is kept in
|
|
91
|
+
`device-id-history.json`.
|
|
92
|
+
- Your agents on this computer (0.27.0+): `shard device approvals auto|read|ask` chooses how this computer answers
|
|
93
|
+
your own agents: `auto` runs everything they ask without asking, `read` runs folder listings and files copied to a
|
|
94
|
+
conversation and asks before anything else (commands, files saved here, ports, linking a folder), `ask` asks every
|
|
95
|
+
time. The first request asks for the choice (the Shardflux app's prompt; without the app, `shard` prints the two
|
|
96
|
+
commands once) and runs under the mode chosen. A teammate's request always asks. What ran without asking is listed
|
|
97
|
+
by `shard device approvals` (`--json`: `recent`) and the app's Settings. Approvals carry `choose_mode: true` while
|
|
98
|
+
nothing is chosen.
|
|
99
|
+
- First prompts (0.27.0+): a Codex Cloud start queues its initial prompt while the executor prepares. Resuming an accepted start uses the same prompt key; an unconfirmed send keeps its created conversation.
|
|
100
|
+
|
|
101
|
+
- Device helper (0.27.0+): a command your orchestrator asks your computer to run (a home conversation, so no folder of
|
|
102
|
+
it on this computer) asks you once with the exact command and folder ("Run on your Mac: sh -c tail -n 5 train.log ·
|
|
103
|
+
in ~/code/lm-train"), Allow once or Deny, and runs in your home folder or the ~/ folder it names. A request whose
|
|
104
|
+
conversation has no folder on this computer is refused with the reason instead of staying pending.
|
|
105
|
+
- Filesystem recovery (0.27.0+): resume JSON/timing keeps `cold_boot_reason: guest_filesystem`; the existing note reports restarted processes. Ships with SDK 0.29.0.
|
|
106
|
+
|
|
107
|
+
- Admission queue waits (0.27.0+, SDK 0.29.0): workspace opens retry `429 admission_queued` within the admission timeout with the same body/key, honor full `Retry-After`, and display `queued for admission; retrying in 2 s` while waiting.
|
|
108
|
+
- 0.27.0: workspace disk caps report the admitted and acknowledged size. Completed disk grows refresh the disk grant; resize results retain the original request.
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
- `shard orchestrator` (0.27.0+, SDK 0.29.0): your orchestrator agent from a terminal. `shard orchestrator say <words>`
|
|
112
|
+
sends your exact words (`--task`, `--report`, `--needs-you`, `--input`, `--conversation` point at a row) and prints
|
|
113
|
+
the input id and its place in line; every input is handled in parallel by its own thread. `--wait` follows it until
|
|
114
|
+
it is done, merged, failed or waiting and prints its curated result: the answer's headline and facts with their
|
|
115
|
+
sources and follow-ups, the tasks it created, the line it waits on (a question names its `shard needs-you answer
|
|
116
|
+
oq_…` command), or the input it was added to; exit 6 when it failed, 5 when `--timeout` (default 10m) passed first.
|
|
117
|
+
`shard orchestrator list [--all]` shows your inputs newest first, one line each; `shard orchestrator retry
|
|
118
|
+
<input-id>` sends a failed one again and `shard orchestrator dismiss <input-id>` takes one out of the list. Signed in
|
|
119
|
+
they reach your orchestrator; with `SHARDFLUX_API_KEY`, the orchestrator of the person who created the key. `--json`
|
|
120
|
+
prints `{input}` / `{inputs, cursor}`.
|
|
121
|
+
- `shard needs-you` (0.27.0+, SDK 0.29.0) lists your orchestrator's questions (`oq_…`, answered with `--text`) and what
|
|
122
|
+
it asked your computer while it was offline (`dev_…`, "Waiting for your computer: list ~/code"; `shard needs-you
|
|
123
|
+
answer dev_… cancel` drops it).
|
|
124
|
+
- Deprecated (0.27.0): `shard route` (POST /v1/router) and `shard ask` (POST /v1/questions); use the orchestrator
|
|
125
|
+
instead (`shard orchestrator say`). Each prints a one-line notice on stderr.
|
|
126
|
+
|
|
127
|
+
- `shard agents models` (0.27.0+): the models each active account can use, as Claude and ChatGPT list them for that
|
|
128
|
+
account (asked server side the way Claude Code and Codex fill their pickers; never starts a computer): effort levels
|
|
129
|
+
with the default starred, the default model, and unavailable models with the provider's reason. `--account <ref>`,
|
|
130
|
+
`--provider`, `--all`, `--refresh`; `--json` prints the API answer. `--model` on `shard agents new` (and `shard ./`)
|
|
131
|
+
also takes a model id from that list (`claude-fable-5-1`, `gpt-5.6-terra`) next to the aliases.
|
|
132
|
+
|
|
133
|
+
- Device requests reach the right computer (0.25.0+): the background helper tells the API which conversations are
|
|
134
|
+
local to this computer (started or opened here), so their requests come here first, then to the computer you used
|
|
135
|
+
last, never to whichever was seen last. A project link with a first task (`project_link` with `brief`) reads the
|
|
136
|
+
start's whole JSON output; before, it failed with "Unexpected token '}'" although the conversation started.
|
|
137
|
+
|
|
138
|
+
- `shard board` and `shard task show` show what a working task does now ("working (Fixing the login cookie)") and
|
|
139
|
+
what each working step does, next to the plain waiting line of a task that waits to start.
|
|
140
|
+
- `shard transcribe <file>` (0.25.0+, SDK 0.28.0) prints what a recording says (WebM/Opus or PCM WAV from the file;
|
|
141
|
+
raw PCM with `--format pcm16 --sample-rate`); `--words` adds each word's start and end, `--json` prints the
|
|
142
|
+
transcript. Where cloud transcription is not on for the organization it says so in one line
|
|
143
|
+
(`cloud_transcription_off`) and exits 1 (0.27.0+, SDK 0.29.0).
|
|
5
144
|
- Faster conversation starts (0.24.1): the project's dependency fingerprint is read from Git's own file list instead of walking the whole folder, so ignored and untracked trees beside the project (agent worktrees, build output) no longer hold a start on **Getting your project…**. A folder with 1.2 million such files took 32 s per start; it now takes 0.3 s, with the same fingerprint.
|
|
6
145
|
- A folder without Git that `shard` makes a repository of (a first chat, `shard projects link`) starts with its files as
|
|
7
146
|
the first commit (0.25.0+; `.gitignore` respected, large media stay untracked), so a conversation starts from the
|
|
@@ -18,6 +157,26 @@
|
|
|
18
157
|
could no longer open. Key and sign-in stores (`~/.ssh`, `~/.aws`, `.env` files, private keys) stay here. Up to 64
|
|
19
158
|
files, 64 MiB in all, 16 MiB each; the command names what it brings and what stays, and `--json` adds `files` and
|
|
20
159
|
`files_left`.
|
|
160
|
+
- 0.25.0 (pending): Allowance hints respect unavailable overage; operation errors retain the service’s recovery message and retry delay.
|
|
161
|
+
|
|
162
|
+
- Landing that lands (0.25.0+): `shard task land <task>` merges a finished task's result (`shard/<task id>`, where its
|
|
163
|
+
master merged its workers' branches; when a master did not, their branches are merged into it here when they merge
|
|
164
|
+
cleanly) into the project's default branch on the project hub, a fast-forward or a clean merge commit, never by
|
|
165
|
+
force; brings it into your folder on this computer the way finished conversations land (your branch moves, your
|
|
166
|
+
uncommitted edits stay, rewritten files are backed up first); checks the commit is in the branch; and only then
|
|
167
|
+
records it on the board (`Landed in ~/code/best-todo · 3f2a1c9`). A conflict changes nothing and asks the task's
|
|
168
|
+
master to merge (`land_conflict`). `shard needs-you answer land_… land` does the same, and
|
|
169
|
+
`shard conversations land <id> merge` now lands the conversation's branch the same way before it records it (before,
|
|
170
|
+
both only recorded a landing). `--path <folder>` picks the folder; `--json` returns `{landed, result, hub, folder,
|
|
171
|
+
recorded, message}`.
|
|
172
|
+
|
|
173
|
+
- `shard conversations delete <id> --yes` (`shard c delete`, 0.25.0+, SDK 0.28.0) deletes a conversation everywhere at
|
|
174
|
+
once: its agent stops, its computer is deleted (a computer other conversations share stays for them), and its
|
|
175
|
+
messages, transcript and branch go with it, on every device. Without `--yes` it is refused before any request, as
|
|
176
|
+
every deletion is. `--json` prints the API's answer, `{id, deleted, deleted_at, operation}`; deleting it again answers
|
|
177
|
+
the same. The person who started it (or created the API key that did) and organization owners and admins delete
|
|
178
|
+
conversations. `shard conversations feed` shows a deleted conversation once as `<id> Deleted conversation deleted`.
|
|
179
|
+
- ACP input recovery (0.25.0): temporary guest-agent interruptions use bounded backoff with the same native input identity. The editor retains its running turn; permanent errors and unverified receipts still require loading the session.
|
|
21
180
|
|
|
22
181
|
- Tunnel recovery (0.24.1, SDK 0.27.3): a foreground reverse tunnel replaces its guest helper automatically when replay is lost. Existing TCP peers reset; fresh connections reach the new listener. SSH and device port-forward connections close cleanly for a new connection instead of looping on an unrecoverable cursor.
|
|
23
182
|
- Folders on this computer (0.25.0+): an agent can list a folder here (`dir_list`: names, kinds, sizes and Git
|
|
@@ -87,7 +246,6 @@
|
|
|
87
246
|
`codex_sign_in_required` and that line. The Codex remote device is never restarted for a sign-in (its Cloud threads
|
|
88
247
|
keep running), and one starting again with the new login reads as connecting.
|
|
89
248
|
|
|
90
|
-
|
|
91
249
|
- `shard conversations start` starts a conversation without a folder: from the project hub (`--repo`, `--branch`), or with `--home` a coordinator on your machine that spawns threads in the project's repositories. `--app`, `--model`, `--effort`, `--title`, `--project`; `--prompt` sends the first message, with `--file` attachments. Prints the conversation's id, key and state (`--json`: the conversation, its workspace and the message).
|
|
92
250
|
|
|
93
251
|
- `shard conversations send <id> <text> --file <path>` (repeatable, up to 20 files of 64 MiB each) puts each file in the conversation's computer before the message, which lists their paths, and prints `Attached <path>` for each. The text may be left out when files are attached, and unquoted words are sent as one message.
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @shardflux/cli: `shard`
|
|
2
2
|
|
|
3
|
+
For error codes, retry timing, and plan recovery, see the [error reference](https://docs.shardflux.dev/reference/errors).
|
|
4
|
+
|
|
3
5
|
Historical template file lists: reads queue checksum-verified reconstruction when a cold list is absent from the SQL cache. TypeScript SDK 0.27.0+ / Python 0.23.0+ wait full Retry-After for retryable API 409 file_list_indexing on GET/HEAD within the admission timeout. Template objects and version history stay available.
|
|
4
6
|
|
|
5
7
|
Plan-derived API budgets (0.23.0+, SDK 0.27.0): `--json` error output includes `rate_limit` and `retry_after_seconds`; the text hint names the shared scope and delay. API request pacing follows the SDK admission timeout and preserves the request body. Reuse workspace credentials and reduce status polling when the returned budget asks for a delay.
|
|
@@ -28,6 +30,8 @@ T3 Connect (0.22.0+): `shard setup --inspect --t3-connect --org <id|slug>` signs
|
|
|
28
30
|
project. Status and Connect use the same person and organization, including a saved session without an API key;
|
|
29
31
|
an explicit selection keeps the default credentials and target status. An approved T3 sign-in is reused.
|
|
30
32
|
|
|
33
|
+
Filesystem recovery timing (0.28.0+): cold resume output identifies `guest_filesystem` in JSON and the restart notice. See the [workspace lifecycle](https://docs.shardflux.dev/concepts/lifecycle) for retained files and process restart semantics.
|
|
34
|
+
|
|
31
35
|
## Support and bug reports
|
|
32
36
|
|
|
33
37
|
[Report a bug](https://github.com/shardfluxdev/community/issues/new?template=bug_report.yml) or
|
|
@@ -49,6 +53,8 @@ Both the task and project are required, and the task becomes the first user-auth
|
|
|
49
53
|
|
|
50
54
|
## Reverse tunnels (0.11.0+)
|
|
51
55
|
|
|
56
|
+
Reverse listener recovery (0.24.1+): the foreground tunnel replaces its helper automatically after replay is lost and accepts fresh connections. Keep the command running for callbacks; Ctrl-C closes it.
|
|
57
|
+
|
|
52
58
|
Run a foreground TCP tunnel from a workspace to a service on this machine:
|
|
53
59
|
|
|
54
60
|
```sh
|
|
@@ -72,18 +78,24 @@ Linux (Ubuntu 24.04, x64 and arm64) and macOS are supported. On Linux, run `shar
|
|
|
72
78
|
connect Claude, Codex or both (0.17.0+), then run `shard ./` in your project to attach Claude Code or Codex in place. Sign-in opens your browser;
|
|
73
79
|
on a headless terminal, follow the displayed URL and device code. `--accept-terms` accepts the terms notice.
|
|
74
80
|
|
|
75
|
-
In a desktop session, `shard` opens the Shardflux app
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
81
|
+
In a desktop session, `shard` opens the Shardflux app (0.18.0+): guided sign-in, your conversations with their
|
|
82
|
+
computers, approvals for this computer, a launcher on Alt+Shift+Space and one Settings window. It lives in the tray
|
|
83
|
+
and the app grid and starts at login; `shard menubar start|stop|status` and `--login on|off` manage it as on macOS.
|
|
84
|
+
|
|
85
|
+
The Shardflux app (0.28.0+) is one desktop app on macOS and Linux: the menu bar or tray, onboarding, the launcher,
|
|
86
|
+
conversations with their computers, device approvals and one Settings window. `shard` installs it from the optional
|
|
87
|
+
`@shardflux/desktop-darwin-arm64` / `-x64` package on macOS (at `~/Applications/Shardflux.app`, in place of the menu
|
|
88
|
+
bar app, keeping its login item and privacy grants) and from `@shardflux/desktop-linux-x64` / `-arm64` on Linux (at
|
|
89
|
+
`~/.local/share/shardflux/desktop`), and `shard update` keeps it current.
|
|
79
90
|
|
|
80
91
|
The Linux helper starts automatically after setup as `~/.config/systemd/user/shardflux-helper.service`
|
|
81
92
|
and restarts after a CLI update. It keeps the live twin, `~/Shardflux` files and conversation history in sync.
|
|
82
|
-
Use `shard device requests`, `shard device approve <id>` or `shard device deny <id>` for local approvals
|
|
93
|
+
Use `shard device requests`, `shard device approve <id>` or `shard device deny <id>` for local approvals, and
|
|
94
|
+
`shard device approvals auto|read|ask` to choose whether your agents ask first (0.28.0+);
|
|
83
95
|
desktop notifications point to pending requests. On systems without a systemd user session, the helper runs
|
|
84
96
|
while your `shard` commands are open. `shard agents open` opens a terminal when launched outside one, using
|
|
85
|
-
`$TERMINAL`, `x-terminal-emulator` or `gnome-terminal`, or prints the attach command.
|
|
86
|
-
|
|
97
|
+
`$TERMINAL`, `x-terminal-emulator` or `gnome-terminal`, or prints the attach command. On macOS the same app lives in
|
|
98
|
+
the menu bar.
|
|
87
99
|
|
|
88
100
|
```sh
|
|
89
101
|
npm i -g shardflux
|
|
@@ -107,7 +119,7 @@ shard ./
|
|
|
107
119
|
|
|
108
120
|
Choose Claude Code or Codex. Claude asks for one cloud sign-in per Shardflux account; Codex uses your copied login.
|
|
109
121
|
Each `shard ./` starts its own conversation VM and opens your agent’s native terminal. Later turns stay in that
|
|
110
|
-
VM; `shard ./ --resume` selects a saved project conversation. Native terminal and ACP sessions receive the conversation tools for their own conversation, so the agent can fork, ask for a review, and report to its parent (0.14.0+). You can open conversations in separate terminals at the same time; each stays in the project's local history. On macOS, `shard` opens the optional command center.
|
|
122
|
+
VM; `shard ./ --resume` selects a saved project conversation. Native terminal and ACP sessions receive the conversation tools for their own conversation, so the agent can fork, ask for a review, and report to its parent (0.14.0+). You can open conversations in separate terminals at the same time; each stays in the project's local history. On macOS, `shard` opens the optional command center. The Shardflux app starts automatically the first
|
|
111
123
|
time `shard` runs, with launch at login enabled; `shard menubar stop` turns it off. See [Cloud agents](https://docs.shardflux.dev/guides/cloud-agents).
|
|
112
124
|
|
|
113
125
|
T3 Code uses one **Shardflux** provider; choose a Claude Code or Codex model to start that agent in the cloud.
|
|
@@ -122,7 +134,7 @@ and Codex, skipping every step that is already done (0.15.0+). Editors that laun
|
|
|
122
134
|
run the same sign-in as `shard --login` (0.22.0+).
|
|
123
135
|
With T3 Code 0.0.45, `shard agents new --in t3` adds the project as an SSH environment instead.
|
|
124
136
|
|
|
125
|
-
ACP journal read reattachment uses bounded backoff through temporary lifecycle interruptions (0.23.0+). It keeps the saved sequence and never resubmits an uncertain turn.
|
|
137
|
+
ACP journal read reattachment uses bounded backoff through temporary lifecycle interruptions (0.23.0+). It keeps the saved sequence and never resubmits an uncertain turn. ACP input reattachment (0.25.0+) retains the native request identity and running turn while reconnecting.
|
|
126
138
|
|
|
127
139
|
In CLI 0.22.0+, `shard setup --inspect` shows a stopped T3 Connect workspace link and its remedy without restarting
|
|
128
140
|
the link or replacing your approved sign-in. `shard agents open t3` brings T3 Code up once the workspace is linked
|
|
@@ -153,12 +165,24 @@ shard conversations start --home --title "Plan the billing work"
|
|
|
153
165
|
shard conversations send conv_6qz2dmu4kd3xa7v5l2hgmfnpjy "Here is the failing run" --file ci.log
|
|
154
166
|
```
|
|
155
167
|
|
|
156
|
-
`--repo` and `--branch` choose the repository and the branch it starts from (default: the project's
|
|
157
|
-
|
|
168
|
+
`--repo` and `--branch` choose the repository and the branch it starts from (default: the project's only
|
|
169
|
+
repository, from `main`, then `master`; a project with several asks you to name one with `--repo`); `--app`, `--model` and `--effort` work as for `shard ./`. It prints the
|
|
158
170
|
conversation's id, key and state; `shard agents open <id>` opens it. `--file` (repeatable, up to 20 files of 64 MiB
|
|
159
171
|
each) puts each file in the conversation's computer before the message and prints where it landed; `--json` returns
|
|
160
172
|
the stored paths.
|
|
161
173
|
|
|
174
|
+
A message reaches the agent at once: a working agent takes it into its running turn (Claude Code, Codex and Codex
|
|
175
|
+
Cloud), and an idle one starts its next turn with it. `--wait` (0.28.0+) says which:
|
|
176
|
+
|
|
177
|
+
```sh
|
|
178
|
+
$ shard conversations send conv_6qz2dmu4kd3xa7v5l2hgmfnpjy "Use the staging database instead" --wait
|
|
179
|
+
Message sent (12).
|
|
180
|
+
Steered into the running turn.
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
It prints `Started the next turn.` when the agent was idle; `--json` adds `delivery` (`state`, `delivered_at`,
|
|
184
|
+
`steered`).
|
|
185
|
+
|
|
162
186
|
Choose the model and reasoning effort a new thread starts with (0.17.0+):
|
|
163
187
|
|
|
164
188
|
```sh
|
|
@@ -200,14 +224,14 @@ resolution before preserve-all can upload; a registration whose folder is gone h
|
|
|
200
224
|
With CLI 0.24.0+, a move during a reply stops the local turn and continues the same reply in the cloud automatically, redoing the interrupted step. An agent calling `move_to_cloud` inside its own turn waits for that turn to finish. Uncommitted edits come along, and your working tree, index and branch stay as
|
|
201
225
|
they are. The cloud work comes back to your checkout by itself, and typing in the local Claude Code copy shows one line
|
|
202
226
|
that it continues in the cloud. Sessions from Claude Desktop's Code tab and the Codex app move the same way; in the
|
|
203
|
-
|
|
227
|
+
Shardflux app's menu, a project's recent sessions under **On this Mac** (**On this computer** on Ubuntu) have
|
|
228
|
+
**Move to cloud**, and with the Shardflux MCP server
|
|
204
229
|
you can ask the agent itself to continue in the cloud. A session is listed under every repository it worked in, also
|
|
205
230
|
one that began in another folder such as Claude Desktop's scratch folder, and `--path <repository>` moves it from
|
|
206
231
|
anywhere (0.22.0+).
|
|
207
232
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
and menu bar 0.8.5+ recovers Node.js after an upgrade removes the recorded binary.
|
|
233
|
+
In the Shardflux app, a failed move stays at its session’s row as **Couldn’t move**, with its reason on hover:
|
|
234
|
+
choose it to try again (**Retry move to cloud** in the row's menu). CLI 0.23.0+ records a matching stable Node.js path on macOS.
|
|
211
235
|
|
|
212
236
|
Start a thread in T3 Code from the command line (0.17.0+):
|
|
213
237
|
|
|
@@ -227,6 +251,11 @@ conversation with `shard conversations send <id> "<answer>"` (0.23.0+ names it w
|
|
|
227
251
|
with in claude.ai and the Claude app (default `☁`: "☁ Fix login bug · todo-app"); `shard settings` shows it with where
|
|
228
252
|
conversations open.
|
|
229
253
|
|
|
254
|
+
Finished cloud work lands in your folder by itself: a conversation's commits come into the branch it started from, a
|
|
255
|
+
board task's result into your linked folder and the project's default branch. `shard settings --auto-land off`
|
|
256
|
+
(0.28.0+) keeps it in the cloud on this computer (`shard task land` and `shard conversations land` still land on
|
|
257
|
+
request); `--auto-land on` turns it back on. The Shardflux app's Settings → Projects changes the same switch.
|
|
258
|
+
|
|
230
259
|
Terminal conversations open in the terminal you choose (0.22.0+):
|
|
231
260
|
|
|
232
261
|
```sh
|
|
@@ -249,7 +278,7 @@ shard conversations try <conversation>
|
|
|
249
278
|
|
|
250
279
|
Your branch opens in `.shard/worktrees/<name>`, syncs both ways, and its dev servers appear at localhost.
|
|
251
280
|
Ctrl-C stops local sync. Your main checkout stays available for your own work.
|
|
252
|
-
Device tools ask for approval on your computer before preparing the conversation’s local worktree. With CLI 0.15.0
|
|
281
|
+
Device tools ask for approval on your computer before preparing the conversation’s local worktree. With CLI 0.15.0+, Review shows the exact command, file direction, paths or port mapping; access outside the conversation folder only offers Allow once. Live transcripts stay in
|
|
253
282
|
|
|
254
283
|
From 0.25.0, an agent can also list a folder on your computer, make one of your projects from it, and move a file to or from anywhere on it by an absolute or `~/` path. Each asks first: **Allow once**, or **Always for this folder**, which covers that kind of request for that folder and everything inside it. `shard projects link <path> [--prompt <text>]` does the same from a terminal: the folder is prepared in the background, kept as this computer’s live copy, and `--prompt` starts a conversation there.
|
|
255
284
|
`~/.config/shardflux/conversations/`; ended sessions enter Claude Code’s or Codex’s native history. Transcript files up to 64 MiB are supported (0.14.0+).
|
|
@@ -257,14 +286,14 @@ From 0.14.3, transcript copying runs independently of device approvals. Unknown
|
|
|
257
286
|
|
|
258
287
|
Every conversation's committed files are on your computer too (with the helper running; macOS 0.16.0+, Linux 0.17.0+):
|
|
259
288
|
`~/Shardflux/<repository>/<base branch>/<conversation>/` holds what each conversation changed or added, read-only,
|
|
260
|
-
and updates when its branch moves. Large files are listed as `<file>.placeholder.txt`;
|
|
261
|
-
|
|
289
|
+
and updates when its branch moves. Large files are listed as `<file>.placeholder.txt`; open one from the
|
|
290
|
+
conversation's computer in the Shardflux app and choose **Save to Downloads**, or:
|
|
262
291
|
|
|
263
292
|
```sh
|
|
264
293
|
shard files pull hype-video out/hype.mp4
|
|
265
294
|
```
|
|
266
295
|
|
|
267
|
-
Finished conversations land in your checkout by themselves (0.16.0+, with the
|
|
296
|
+
Finished conversations land in your checkout by themselves (0.16.0+, with the Shardflux app running). When a
|
|
268
297
|
conversation's turn ends with its work committed, the branch it started from moves to its commits and the changed
|
|
269
298
|
files are written in place, next to your own uncommitted edits, which stay as they are (where both touched the same
|
|
270
299
|
lines, your text is kept). `git status` keeps showing only your edits. A conversation started from a checkout with
|
|
@@ -377,7 +406,7 @@ answer) or their product (it runs VMs for its customers through the API, SDK or
|
|
|
377
406
|
Commands that wait for your user in the browser (sign-ins, `--ask`) take up to 10 minutes: run them with a long timeout
|
|
378
407
|
or in the background.
|
|
379
408
|
|
|
380
|
-
**Their product** (no agent sign-ins,
|
|
409
|
+
**Their product** (no agent sign-ins, Shardflux app or machine):
|
|
381
410
|
|
|
382
411
|
2. `eval "$(shard env)"` exports `SHARDFLUX_API_KEY` for the SDKs, the MCP server and your product's server. Keep it in
|
|
383
412
|
server-side secrets.
|
|
@@ -647,9 +676,11 @@ and the session renewals of step-up and password changes).
|
|
|
647
676
|
## Update
|
|
648
677
|
|
|
649
678
|
`shard update` **(0.13.5+)** brings everything Shardflux installed on this computer up to date: shard itself
|
|
650
|
-
(the `shardflux` package or `@shardflux/cli`), its SDK, the
|
|
679
|
+
(the `shardflux` package or `@shardflux/cli`), its SDK, the Shardflux app and a globally installed
|
|
651
680
|
`@shardflux/mcp`. It runs one install of the latest versions with the package manager that installed shard (npm,
|
|
652
|
-
pnpm, bun or Volta) and restarts the
|
|
681
|
+
pnpm, bun or Volta) and restarts the app on its new version; **Update now** in the app's Settings → Updates runs the
|
|
682
|
+
same command. After `npm i -g shardflux` the app moves to the new version by itself once no window is open and no
|
|
683
|
+
approval or move is in progress.
|
|
653
684
|
|
|
654
685
|
```sh
|
|
655
686
|
shard update --check # what is behind, without installing
|
|
@@ -704,7 +735,9 @@ shows the status; `shard version --check` asks now (`--json`: `{"cli", "sdk", "u
|
|
|
704
735
|
| `version [--check]` | Print the CLI and SDK versions and the update status (`--check` asks the API now). |
|
|
705
736
|
| `usage [--org <id>] [--estimate \| --series \| --workspace <id\|key>] [--from T] [--to T] [--granularity hour\|day] [--meter M]` | Usage summary for the current period: plan, meters and allowances. `--estimate`: the bill so far and projected allowance use; `--series`: usage over time; `--workspace`: one workspace's usage over time (0.5.0+). The summary includes the [overage](#usage-and-overage) block (0.5.1+). |
|
|
706
737
|
| `feedback [--yes] [--category C] [--workspace W] [--request-id ID] [--error-code CODE] [--command TEXT] [--from-file F\|-] <message...>` | Preview feedback; `--yes` sends after explicit user authorization (0.22.0+). See [Feedback](#feedback-preview-and-user-approval). |
|
|
707
|
-
| `
|
|
738
|
+
| `orchestrator say [--wait [--timeout D]] [--task ID\|--report ID\|--needs-you ID\|--input ID\|--conversation ID] <words...>`, `orchestrator list [--all]`, `orchestrator retry\|dismiss <input-id>` | Your orchestrator (0.28.0+): say something and every input is handled at once by its own thread; `--wait` prints its curated result. See [Your orchestrator](#your-orchestrator-0270). |
|
|
739
|
+
| `route [--task ID] [--org O] [--project P] <text...>`, `ask [--task ID] [--org O] [--project P] <question...>` | Deprecated; use `shard orchestrator say`. The board's input bar (0.25.0+): where a line of input goes, and a quick question about your work. |
|
|
740
|
+
| `conversations delete <id> --yes` (`c delete`) | Delete a conversation everywhere at once (0.25.0+): its agent stops, its computer is deleted, and its messages, transcript and branch go with it. `--json` prints `{id, deleted, deleted_at, operation}`. See [Conversations](#conversations). |
|
|
708
741
|
| `workspaces open <key> --template <slug> [--secret NAME]... [--input NAME=value]... [--input-file F] [--lifetime persistent\|session] [--mode processful\|file-first] [--cpu-millis N --memory-mib N --disk-gib N] [--allocation-mode fixed\|elastic] [--memory-held N] [--no-wait] [--timeout 5m] [--timing]` | Open by key. Creates the workspace on first use and reconnects or resumes it afterwards, never resetting it. Waits until it is ready (the template's start commands and services included) unless you pass `--no-wait`. `--secret` binds secret names (replacing the binding of an existing workspace). `--input` (0.4.0+) passes the template's text inputs (replacing those of an existing workspace); `--input-file` reads `NAME=value` lines or a JSON object. `--lifetime session`: the workspace is discarded when the session ends (`workspaces close` or the idle timeout), and the key then opens a new workspace. `--mode file-first` (0.5.0+) opens a [file-first workspace](#file-first-workspaces); the default is processful for a new key and the stored mode for an existing one. `--allocation-mode elastic` (0.8.0+): [elastic memory](#elastic-memory-080). |
|
|
709
742
|
| `workspaces list [--state S] [--prefix P] [--lifetime persistent\|session\|any] [--purpose standard\|template_draft\|template_test\|any] [--include-deleted] [--all] [--limit N] [--cursor C]` | One page, or every page with `--all`. The next cursor is printed on stderr. By default only persistent standard workspaces are listed. A file-first workspace's state reads `running (file-first)` (0.5.0+). |
|
|
710
743
|
| `workspaces get <id\|key>` | One workspace (deleted ones included), with the startup of its template's start commands and services (0.4.0+): a failed step shows its exit code, reason and output tail. Its mode, and a file-first workspace's tree revision (0.5.0+). Its memory (0.8.0+): `fixed 4096 MiB`, or `elastic: promised …, held …, plugged +… MiB`. The template version whose [immutable paths](#immutable-paths-080) it has mounted (0.8.0+): `immutable paths v3 (mounted read-only)`. |
|
|
@@ -938,6 +971,7 @@ without waking it (the state at suspension); `files search` then notes it on std
|
|
|
938
971
|
is still queued after 120000 ms`). The operation continues server side:
|
|
939
972
|
`shard operations wait <id>` keeps waiting. Without either (0.16.0+), a resume queued for capacity is waited for
|
|
940
973
|
until its deadline, its place shown on stderr (see [Start deadlines](#start-deadlines)).
|
|
974
|
+
- Admission queues (0.28.0+, SDK 0.29.0): an open keeps its body and Idempotency-Key while waiting, and stderr says `queued for admission; retrying in 2 s`. Each wait honors `Retry-After` within the SDK admission timeout (default 2 minutes).
|
|
941
975
|
- A call refused while the workspace's host makes room to wake it (503 `host_capacity`) or while every workspace the
|
|
942
976
|
plan lets work at once is busy (429 `quota_exceeded`) did not run: `shard` sends it again after each `Retry-After`,
|
|
943
977
|
for up to 2 minutes (0.16.0+), and stderr says `waiting for room on the workspace's host (position 2)` once.
|
|
@@ -1021,7 +1055,8 @@ $ shard ws resize acme/demo --elastic --held 1024 # switch modes live
|
|
|
1021
1055
|
Memory changes live, and disks grow online. A suspended workspace gets its new size when it resumes, before its first
|
|
1022
1056
|
call. CPU changes live within the vCPUs the workspace booted with; a larger CPU size applies at the next start. Each
|
|
1023
1057
|
resource says when it applies (`now`, `on resume` or `next start`), and the new caps are stored, so every later start
|
|
1024
|
-
uses them. `--json` prints the result with `applies_at` per resource and
|
|
1058
|
+
uses them. `--json` prints the result with `applies_at` per resource and `caps`. A non-null `caps.disk_gib` is bounded
|
|
1059
|
+
by the admitted plan and template ceiling and the acknowledged disk size. `disk.requested_gib` retains the resize request.
|
|
1025
1060
|
|
|
1026
1061
|
## Burst execution (0.8.0+)
|
|
1027
1062
|
|
|
@@ -1503,8 +1538,8 @@ machine on its next use (0.20.0+).
|
|
|
1503
1538
|
Skills, commands, agents, output styles, memories and `CLAUDE.md` / `AGENTS.md` lines that Claude or Codex saves in a
|
|
1504
1539
|
cloud conversation come back to this computer by themselves, seconds after the turn ends, and into your saved
|
|
1505
1540
|
machine too (0.20.0+). A file you changed here at the same time keeps your version, with the cloud's next to it
|
|
1506
|
-
(`CLAUDE.cloud.md`); a deleted one goes to the Trash. Project memory follows the project both ways. The
|
|
1507
|
-
what arrived in one line, and `agent-config-return.jsonl` in the config directory lists every change.
|
|
1541
|
+
(`CLAUDE.cloud.md`); a deleted one goes to the Trash. Project memory follows the project both ways. The Shardflux app
|
|
1542
|
+
says what arrived in one line, and `agent-config-return.jsonl` in the config directory lists every change.
|
|
1508
1543
|
`shard machine save --wait` and `shard template save --wait` return once the new version is ready (0.13.3+).
|
|
1509
1544
|
A version larger than the plan's workspace disk names its size and the disk, with `retryable: false` and a hint: delete
|
|
1510
1545
|
what the VM does not need, then save again, or move to a plan with a larger disk (`shard billing plans`); `--json`
|
|
@@ -1521,7 +1556,7 @@ see the [settings and billing reference](https://docs.shardflux.dev/limits#cloud
|
|
|
1521
1556
|
Claude needs one cloud sign-in per account; Codex uses your copied login.
|
|
1522
1557
|
|
|
1523
1558
|
Import project secrets from hsec, 1Password, Bitwarden or Keychain. Approve browser fills from the attached CLI or
|
|
1524
|
-
|
|
1559
|
+
the Shardflux app; remember a selected login for unattended work with automatic relay renewal. Bound secret values are
|
|
1525
1560
|
redacted from command output and saved logs.
|
|
1526
1561
|
|
|
1527
1562
|
Imported secrets: stored encrypted with AWS KMS; only this project's workspaces can load it, and every load is logged.
|
|
@@ -1573,6 +1608,22 @@ Another member's personal account can be made active only by that member.
|
|
|
1573
1608
|
another account in a cloud VM and `shard agents accounts remove claude:2` removes one. To remove someone else's active
|
|
1574
1609
|
account, make another one active first; your own you can always remove. `--json` prints the API's account list.
|
|
1575
1610
|
|
|
1611
|
+
From 0.28.0, `shard agents models` shows the models each active account can use, as Claude and ChatGPT list them
|
|
1612
|
+
for that account (the same lists Claude Code and Codex fill their pickers with): effort levels with the default
|
|
1613
|
+
starred, the default model, and what the plan does not include.
|
|
1614
|
+
|
|
1615
|
+
```text
|
|
1616
|
+
Claude · marc@example.com (active)
|
|
1617
|
+
claude-opus-5-5 Opus 5.5 low medium* high xhigh max (default)
|
|
1618
|
+
claude-fable-5-1 Fable 5.1 low medium high* xhigh max
|
|
1619
|
+
claude-sonnet-5-5 Sonnet 5.5 low medium* high xhigh max
|
|
1620
|
+
More models
|
|
1621
|
+
claude-haiku-4-5-20251001 Haiku 4.5 no effort levels
|
|
1622
|
+
```
|
|
1623
|
+
|
|
1624
|
+
`--account claude:2` shows another account, `--all` every account, `--refresh` asks again (lists are kept for an
|
|
1625
|
+
hour), and `--json` prints the API's answer. Pass an id to `shard agents new --model` (with `--effort`).
|
|
1626
|
+
|
|
1576
1627
|
## Conversations
|
|
1577
1628
|
|
|
1578
1629
|
From 0.14.0, `shard conversations list|get|send|wait|land|move` manages project conversations. `shard c` is the short form. Conversations retain their branch and transcript as their VM binding changes.
|
|
@@ -1620,8 +1671,74 @@ Conversation JSON includes `join_mode` and the worktree used by reviewers and wo
|
|
|
1620
1671
|
|
|
1621
1672
|
`shard conversations resume <id>` continues a saved conversation in a fresh VM under the same identity (0.14.0+). `shard ./ --resume` uses this same path. `shard conversations reader <project-id>` opens a small read-only workspace for saved branches and transcripts; the Mac transcript mirror opens it automatically when no project VM is live. Adaptive idle reclaims the reader.
|
|
1622
1673
|
|
|
1674
|
+
`shard conversations delete <id> --yes` (0.25.0+) deletes a conversation everywhere at once: its agent stops, its
|
|
1675
|
+
computer is deleted (a computer other conversations share stays for them), and its messages, transcript and branch go
|
|
1676
|
+
with it, on every device. From then on it leaves every list and reads not found; `shard c feed` shows it once as
|
|
1677
|
+
`deleted`. The person who started it and organization owners and admins delete conversations. `--json` prints the
|
|
1678
|
+
API's answer: `{id, deleted, deleted_at, operation}`, where `operation` is the deletion of its computer.
|
|
1679
|
+
|
|
1680
|
+
```sh
|
|
1681
|
+
shard c delete conv_k3m5q7s2u4w6y3b5d7f2h4j6ln --yes
|
|
1682
|
+
# Deleted: conv_k3m5q7s2u4w6y3b5d7f2h4j6ln
|
|
1683
|
+
```
|
|
1684
|
+
|
|
1685
|
+
### Your orchestrator (0.28.0+)
|
|
1686
|
+
|
|
1687
|
+
Your orchestrator is your own agent on top of every project, on its own Shardflux computer and the same on every
|
|
1688
|
+
device. `shard orchestrator say` sends it your exact words and answers at once with the input and its place in line;
|
|
1689
|
+
every input is handled in parallel by its own thread, which answers it, puts tasks on the board, asks you something or
|
|
1690
|
+
adds it to an input in flight. `--wait` follows it and prints what it became:
|
|
1691
|
+
|
|
1692
|
+
```sh
|
|
1693
|
+
shard orchestrator say --wait Lets check on our language model training progress
|
|
1694
|
+
# Training is 73% done, step 7,300 of 10,000
|
|
1695
|
+
# - Loss 1.84, down from 2.31 at step 5,000
|
|
1696
|
+
# - About 2 h 10 min left at this pace
|
|
1697
|
+
# - Last checkpoint at step 7,000
|
|
1698
|
+
# Sources: train.log (~/code/lm-train/train.log), wandb.ai (https://wandb.ai/acme/lm)
|
|
1699
|
+
# Follow-ups: Check again in an hour
|
|
1700
|
+
shard orchestrator say --task task_h7g4d7tqyv2pz3a2npyo4rpgzq use postgres instead
|
|
1701
|
+
# in_q3vd5k2xbnwjm7e4rtyhcu6aio queued (1 in line)
|
|
1702
|
+
shard orchestrator list
|
|
1703
|
+
# in_q3vd5k2xbnwjm7e4rtyhcu6aio working use postgres instead
|
|
1704
|
+
# in_7wcx227ovjpei4u6i47llu7w4i done Lets check on our language model training progress Training is 73% done, step 7,300 of 10,000
|
|
1705
|
+
```
|
|
1706
|
+
|
|
1707
|
+
`--task`, `--report`, `--needs-you`, `--input` and `--conversation` point at the row your words are about. `--wait`
|
|
1708
|
+
stops when the input is done (its answer card and the tasks it created), merged (the input it was added to), waiting
|
|
1709
|
+
(the line it waits on; a question names the `shard needs-you answer oq_… --text <answer>` that answers it) or failed
|
|
1710
|
+
(exit 6; `shard orchestrator retry <input-id>` sends it again); `--timeout` (default 10m) stops following with exit 5
|
|
1711
|
+
while the input goes on. `shard orchestrator list` shows your recent inputs newest first (`--all` adds the ones you
|
|
1712
|
+
dismissed with `shard orchestrator dismiss`). Signed in, they reach your orchestrator (`--org <id|slug>` when you belong
|
|
1713
|
+
to several); with `SHARDFLUX_API_KEY` set, the orchestrator of the person who created that key. `--json` prints the
|
|
1714
|
+
API's objects (`{input}`, `{inputs, cursor}`).
|
|
1715
|
+
|
|
1716
|
+
Device helper recovery (0.28.0+): projects register independently and report when a sign-in needs attention. A new
|
|
1717
|
+
sign-in on this computer (a new API key from `shard setup`, another account) gets this computer a new device id by
|
|
1718
|
+
itself and registers again at once. See the [error reference](https://docs.shardflux.dev/reference/errors) for recovery.
|
|
1719
|
+
|
|
1720
|
+
When your orchestrator needs your computer (the tail of `~/code/lm-train/train.log`, say), the device helper asks you
|
|
1721
|
+
first with the exact command and folder, **Allow once** or **Deny**, and runs it in your home folder or the `~/`
|
|
1722
|
+
folder it names (0.28.0+). Each of these commands asks; none runs under an Always grant, unless you let your agents
|
|
1723
|
+
run things without asking.
|
|
1724
|
+
|
|
1725
|
+
**Your agents on this computer (0.28.0+).** Choose once how this computer answers your own agents:
|
|
1726
|
+
|
|
1727
|
+
| `shard device approvals` | Your agents |
|
|
1728
|
+
|---|---|
|
|
1729
|
+
| `auto` | Allow everything: commands, files, ports and folders run without asking |
|
|
1730
|
+
| `read` | Allow reading: folder listings and files copied to a conversation run; anything that changes this computer asks |
|
|
1731
|
+
| `ask` | Ask every time |
|
|
1732
|
+
|
|
1733
|
+
The first request asks which you want (the Shardflux app's prompt, or one line from `shard` with both commands) and
|
|
1734
|
+
runs under your choice; the app's Settings and `shard device approvals` change it any time. A teammate's request
|
|
1735
|
+
always asks. `shard device approvals` lists what ran without asking (`--json` for `recent`).
|
|
1736
|
+
|
|
1623
1737
|
### Route input and ask about your work (0.25.0+)
|
|
1624
1738
|
|
|
1739
|
+
`shard route` and `shard ask` are deprecated (0.28.0); use `shard orchestrator say` (each prints a one-line notice on
|
|
1740
|
+
stderr).
|
|
1741
|
+
|
|
1625
1742
|
`shard route` reads a line of input the way the board's input bar does: which project it belongs to (or your home),
|
|
1626
1743
|
whether it is a new task, a question or a steer for an open task, and each task in your own words when it asks for
|
|
1627
1744
|
several. `shard ask` answers a quick question about your work from the board, printing the answer as it is written.
|
|
@@ -1646,6 +1763,24 @@ prints the API's object: the route (`kind`, `parts`, `task_ref`, `uncertain`,
|
|
|
1646
1763
|
`needs_work`, `sources`, …). An answer that needs work ends with "Make it a task?". Neither starts work or wakes a
|
|
1647
1764
|
computer.
|
|
1648
1765
|
|
|
1766
|
+
### Transcribe a recording (0.25.0+)
|
|
1767
|
+
|
|
1768
|
+
`shard transcribe <file>` prints what a recording says. `--words` adds each word with its start and end; `--json`
|
|
1769
|
+
prints the transcript (`text`, `words` with `w`, `start` and `end` in seconds, `language`, `duration`).
|
|
1770
|
+
|
|
1771
|
+
```sh
|
|
1772
|
+
shard transcribe note.webm
|
|
1773
|
+
# Take this sidebar, and move it over here, then make the header a bit taller, and change that color to blue.
|
|
1774
|
+
shard transcribe hello.wav --words
|
|
1775
|
+
# Move this button over here, then make that panel a little wider.
|
|
1776
|
+
# 0:00.00 0:00.18 Move
|
|
1777
|
+
# 0:00.18 0:00.44 this
|
|
1778
|
+
# …
|
|
1779
|
+
```
|
|
1780
|
+
|
|
1781
|
+
WebM/Opus and PCM WAV are read from the file; raw 16-bit mono PCM takes `--format pcm16 --sample-rate 16000`.
|
|
1782
|
+
`--language en` names the language when you know it. Up to 120 s of audio. Signed in, or with `SHARDFLUX_API_KEY`.
|
|
1783
|
+
|
|
1649
1784
|
### Permission requests (0.25.0+)
|
|
1650
1785
|
|
|
1651
1786
|
When a conversation's agent asks before it runs a tool (Claude Code, Codex or an ACP agent), the conversation is
|
|
@@ -1679,14 +1814,20 @@ shard projects sync list # selected projects and their state
|
|
|
1679
1814
|
shard projects sync pause ~/code/web # stop preparing it (remove: forget it)
|
|
1680
1815
|
```
|
|
1681
1816
|
|
|
1682
|
-
The device helper (started by the
|
|
1817
|
+
The device helper (started by the Shardflux app, and on Linux by its systemd service) prepares each selected project
|
|
1818
|
+
in a short-lived VM: it
|
|
1683
1819
|
puts the project's current state in the project cache, and when its dependency files change, installs them and saves
|
|
1684
1820
|
the project template. Conversations then start without sending the project, with dependencies installed. Only the
|
|
1685
|
-
projects you add are prepared; onboarding and Settings → Projects in
|
|
1821
|
+
projects you add are prepared; onboarding (**Sync projects**) and Settings → Projects in the Shardflux app choose them
|
|
1822
|
+
too.
|
|
1686
1823
|
|
|
1687
|
-
###
|
|
1824
|
+
### Launcher (0.15.0+)
|
|
1688
1825
|
|
|
1689
|
-
|
|
1826
|
+
**New conversation** in the Shardflux app's menu opens the same launcher as **⌥⇧Space** (**Alt+Shift+Space** on
|
|
1827
|
+
Ubuntu; a GNOME keybinding on Wayland), in the project open in the app in front (app 0.9.0+). It starts the
|
|
1828
|
+
conversation where your conversations open (Settings → Agents → **Open conversations in**), with a card near the top
|
|
1829
|
+
of the screen that follows each start (**Show all N launches**); change the shortcut, **Detect my project** and the
|
|
1830
|
+
panel's position in Settings → Launcher. From a terminal:
|
|
1690
1831
|
|
|
1691
1832
|
```sh
|
|
1692
1833
|
shard agents new --app claude --path ./ --prompt "Review the billing changes" --json
|
|
@@ -1731,12 +1872,18 @@ changes the words (`--text`, and the task's master hears it), the title (`--titl
|
|
|
1731
1872
|
(`--clear`; `--no-clear` brings it back). `shard task steer <id> <words...>` sends steering words to the task's master,
|
|
1732
1873
|
`shard task rm <id>` deletes the task, and `shard task clear-done` clears every finished one. `shard task show <id>`
|
|
1733
1874
|
prints the task, its plan and each report: milestone, outcome and evidence (`tests 12/12 (pnpm test)`).
|
|
1875
|
+
`shard task land <id>` lands a finished task: its result (the branch `shard/<task id>`, where its master merged its
|
|
1876
|
+
workers' branches) goes into the project's default branch and into your folder on this computer the way finished
|
|
1877
|
+
conversations land there (your uncommitted edits stay), and the board shows it shipped once the commit is in the
|
|
1878
|
+
branch: `Landed in ~/code/best-todo · 3f2a1c9`.
|
|
1734
1879
|
|
|
1735
1880
|
**Needs you.** `shard needs-you` lists permission requests, questions, credential requests, finished work to land and
|
|
1736
1881
|
Later tasks to keep, oldest first. `shard needs-you answer <id>` answers any of them: `allow`, `always` (also adds the
|
|
1737
1882
|
always-allow rule for the project; `--everywhere` for every project) or `deny` for a permission request, `--pick` for an
|
|
1738
|
-
agent's question in one, `--text` for a question, `land
|
|
1739
|
-
(or `keep`, `discard`) for Later tasks. The agent goes on as soon as you answer.
|
|
1883
|
+
agent's question in one, `--text` for a question, `land` (as `shard task land`), `keep` or `discard` for finished work, and `--keep <task-id>`
|
|
1884
|
+
(or `keep`, `discard`) for Later tasks. The agent goes on as soon as you answer. Your orchestrator's questions are
|
|
1885
|
+
`oq_…` items (`--text`), and what it asked your computer while it was offline waits as a `dev_…` item ("Waiting for
|
|
1886
|
+
your computer: list ~/code"): it runs when your computer is back, and `cancel` drops it (0.28.0+).
|
|
1740
1887
|
|
|
1741
1888
|
**Approvals.** The approval mode answers your agents' permission requests before they reach you: `ask` sends every one
|
|
1742
1889
|
to you, `routine` (the default) approves tests, builds, reads and installs, `trusted` approves everything except
|
|
@@ -1759,7 +1906,7 @@ Explicit `agents new --in terminal`, `--in t3`, and `--like` launches keep their
|
|
|
1759
1906
|
|
|
1760
1907
|
Save progress (0.22.0+): Machine and template saves show source size and an estimated duration, then queued/build state and phase updates immediately. With `--json`, progress events go to stderr and the final stdout document includes `preflight` and `phases`. Failure and timeout output retain the latest counters and `details.last_progress`, with the build id and recovery action. If an older API cannot expose the build, JSON stderr emits `save_started` with the version/build id and leaves the phase unknown. Missing final host reports preserve the last observed progress.
|
|
1761
1908
|
|
|
1762
|
-
Desktop launch cards (0.22.0+): the
|
|
1909
|
+
Desktop launch cards (0.22.0+): the Shardflux app clears and closes the launcher on submission, then shows each pending start as a card near the top of the display. **Show all N launches** expands their statuses and recovery.
|
|
1763
1910
|
|
|
1764
1911
|
|
|
1765
1912
|
### Pending execution cancellation (0.23.0+)
|
|
@@ -1793,7 +1940,7 @@ shard c list --org acme --state needs_you
|
|
|
1793
1940
|
shard c feed --org acme --json
|
|
1794
1941
|
```
|
|
1795
1942
|
|
|
1796
|
-
`shard conversations list --all` reads every page, keeping the selected project, state and parent filters. `--json` returns `data` and `nextCursor`.
|
|
1943
|
+
`shard conversations list --all` reads every page, keeping the selected project, state and parent filters. `--json` returns `data` and `nextCursor`.
|
|
1797
1944
|
|
|
1798
1945
|
## Project drive (0.25.0+)
|
|
1799
1946
|
|