frizz 0.13.12 → 0.13.14
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 +21 -13
- package/dist/frizz.js +888 -233
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ $ npx frizz
|
|
|
43
43
|
A browser tab opens on the dashboard at `http://127.0.0.1:9393/`. Add a **project** there — any folder: a repo, a jj checkout, or a folder of scripts. Frizz has no opinion about version control and does not require Git. Each project gets its own board at `/project/<name>`, and from then on running `npx frizz` inside that folder opens its board. Frizz always listens on port 9393 (19393 if something else holds it), and one server serves every project on the machine, so a second run joins the server already running rather than starting another. Runs on macOS, Linux, and Windows.
|
|
44
44
|
|
|
45
45
|
<p align="center">
|
|
46
|
-
<img src="assets/board.png" alt="The Frizz board: the project rail down the left, the composer and the queue of threads beside it, and on the right a card where an agent is asking an answerable question with
|
|
46
|
+
<img src="assets/board.png" alt="The Frizz board: the project rail down the left, the composer and the queue of threads beside it, and on the right a card where an agent is asking an answerable question with lettered options, with its snooze clock and done check in the card's header." width="100%">
|
|
47
47
|
</p>
|
|
48
48
|
|
|
49
49
|
<br/>
|
|
@@ -84,21 +84,23 @@ The queue is strict about what earns a card, which is what keeps it a real todo
|
|
|
84
84
|
**Threads are built to run without you.** A worker keeps going until it reaches something only you can settle — a product call, a fork where guessing wrong is expensive to undo, an irreversible action — and then it hands back an answerable *question* rather than a wall of text for you to re-read and interpret.
|
|
85
85
|
|
|
86
86
|
<p align="center">
|
|
87
|
-
<img src="assets/question.png" alt="A question card titled Question: 'Should the settings store use SQLite or a JSON file?' with two options
|
|
87
|
+
<img src="assets/question.png" alt="A question card titled Question: 'Should the settings store use SQLite or a JSON file?' with two options lettered A and B, the first tagged RECOMMENDED, and a third row lettered C for typing something else, above the prompt box and its Send button." width="100%">
|
|
88
88
|
</p>
|
|
89
89
|
|
|
90
|
-
Options are
|
|
90
|
+
Options are lettered: click one to pick it, then Enter to send it, along with anything typed in the prompt box below. A worker marks its own recommendation when it has one. There is always a row for writing something else instead.
|
|
91
91
|
|
|
92
92
|
When the answer isn't one thing, the same card takes several: check any combination and add a note.
|
|
93
93
|
|
|
94
94
|
<p align="center">
|
|
95
|
-
<img src="assets/question-multi.png" alt="A question card titled Select multiple: 'Which of these findings should I fix in this pass?' with three
|
|
95
|
+
<img src="assets/question-multi.png" alt="A question card titled Select multiple: 'Which of these findings should I fix in this pass?' with three lettered checkbox options, the first two ticked, and a fourth lettered row for adding a note, above the prompt box, whose Send button is lit." width="100%">
|
|
96
96
|
</p>
|
|
97
97
|
|
|
98
98
|
### GitHub
|
|
99
99
|
|
|
100
100
|
Browse the repo's issues and pull requests from the composer, select any number of them, and each becomes its own thread.
|
|
101
101
|
|
|
102
|
+
Sign Frizz in once from Settings → GitHub, with a device code. The sign-in is read-only with one exception GitHub builds in: it can read code, issues, pull requests and checks on the accounts where you install [the Frizz GitHub App](https://github.com/apps/frizz-agent-console), plus public repos, and the only thing it can do beyond reading is comment on a commit. It's what watches pull requests and issues for your workers, overnight included, and it's separate from any `gh` sign-in of your own. It's stored encrypted, with a key unique to your machine: in the keychain on a Mac, and in a separate private file elsewhere. That keeps it from token scanners and copied files, but not from a program running as you that goes after Frizz on purpose.
|
|
103
|
+
|
|
102
104
|
<p align="center">
|
|
103
105
|
<img src="assets/github.png" alt="The GitHub picker open over the composer, listing real open issues from colinhacks/zod with numbers, authors, and reaction counts; three are checked and a Start investigations button is enabled." width="100%">
|
|
104
106
|
</p>
|
|
@@ -121,6 +123,12 @@ Give a thread a standing goal. Frizz sends it as a prompt every time the agent c
|
|
|
121
123
|
<img src="assets/goal.png" alt="The goal panel open above a queue card's prompt box: a goal saying to keep going until the test suite is green, sent at every rest and every 30 minutes." width="100%">
|
|
122
124
|
</p>
|
|
123
125
|
|
|
126
|
+
### Launch prefix
|
|
127
|
+
|
|
128
|
+
Start every worker through a command of your own: a secret injector, a token proxy, a sandbox. Set it per project under the gear beside **Claude Code** or **Codex** in the model picker. With `op run --env-file .env --` there, a new Claude worker starts as `op run --env-file .env -- claude …`, so the variables 1Password injects are in the worker's environment and nowhere on disk.
|
|
129
|
+
|
|
130
|
+
The command gets the worker's environment, and must run the command after it with stdin and stdout passed through and stay running until it exits (`exec` does both). Frizz splits the prefix into words like a shell would but never runs it in one, so for variables or pipes, write the shell in: `sh -c 'export ANTHROPIC_BASE_URL="$(my-proxy url)"; exec "$@"' sh`. Claude picks up a change on the next thread you dispatch. Codex's prefix wraps the app-server a project's Codex threads share, and Frizz restarts it once no Codex turn is running. With a prefix set, Frizz no longer refuses to dispatch when it finds no local sign-in, since the prefix may be what supplies the credentials.
|
|
131
|
+
|
|
124
132
|
<br/>
|
|
125
133
|
|
|
126
134
|
<h2 align="center">CLI</h2>
|
|
@@ -142,18 +150,18 @@ Options:
|
|
|
142
150
|
--no-app print the URL without opening a browser
|
|
143
151
|
--port <port> request a fixed port for a new workspace server
|
|
144
152
|
--sandbox a disposable Frizz to try things in: throwaway home and project, its
|
|
145
|
-
own port, deleted when this terminal closes; credentials (
|
|
146
|
-
cloudflared, Claude, Codex, the machine's frizz.sh
|
|
153
|
+
own port, deleted when this terminal closes; credentials (Frizz's
|
|
154
|
+
GitHub sign-in, cloudflared, Claude, Codex, the machine's frizz.sh
|
|
155
|
+
key) are shared
|
|
147
156
|
--link print a fresh single-use access link for the running board
|
|
148
157
|
--debug stream the full event feed to the terminal instead of the compact readout
|
|
149
158
|
-h, --help show this help
|
|
150
159
|
|
|
151
160
|
|
|
152
161
|
To reach the board from a phone or another machine, press R in the terminal running it: a short
|
|
153
|
-
walkthrough sets up a private frizz.sh
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
shows a single-use sign-in link as a QR; press L for a fresh one, or run --link from another shell.
|
|
162
|
+
walkthrough sets up a private frizz.sh subdomain (no account needed), a Cloudflare Tunnel,
|
|
163
|
+
Tailscale, or a proxy of your own, and remembers the choice, so a plain launch serves it from then
|
|
164
|
+
on. The board stays on loopback and shows a single-use sign-in link as a QR; press L for a fresh one, or run --link from another shell.
|
|
157
165
|
```
|
|
158
166
|
|
|
159
167
|
<br/>
|
|
@@ -170,7 +178,7 @@ shows a single-use sign-in link as a QR; press L for a fresh one, or run --link
|
|
|
170
178
|
<details>
|
|
171
179
|
<summary><b>Does anything leave my machine?</b></summary>
|
|
172
180
|
|
|
173
|
-
> Nothing from Frizz. There's no account, no telemetry, and the server binds to `127.0.0.1`; reaching it from another device is something you switch on yourself (press R in its terminal). The agents themselves talk to their providers, and
|
|
181
|
+
> Nothing from Frizz. There's no account, no telemetry, and the server binds to `127.0.0.1`; reaching it from another device is something you switch on yourself (press R in its terminal). The agents themselves talk to their providers, and Frizz reads GitHub directly with the read-only sign-in you give it, but Frizz is a local process looking at local files.
|
|
174
182
|
|
|
175
183
|
</details>
|
|
176
184
|
|
|
@@ -205,7 +213,7 @@ shows a single-use sign-in link as a QR; press L for a fresh one, or run --link
|
|
|
205
213
|
<details>
|
|
206
214
|
<summary><b>Can I reach it from another machine?</b></summary>
|
|
207
215
|
|
|
208
|
-
> Yes. Press **R** in the terminal running Frizz. A short walkthrough sets up one of four ways to reach the board — a
|
|
216
|
+
> Yes. Press **R** in the terminal running Frizz. A short walkthrough sets up one of four ways to reach the board — a frizz.sh subdomain, a Cloudflare Tunnel you own, Tailscale, or any proxy you run — checks what each needs, prints the commands, and remembers your choice. From then on a plain `npx frizz` serves it; pick **Off** in the same place to go back to loopback only.
|
|
209
217
|
>
|
|
210
218
|
> To try any of this without touching the board you run, launch a second one with `npx frizz --sandbox` — a throwaway home and project on its own port, deleted on ctrl-c.
|
|
211
219
|
>
|
|
@@ -216,7 +224,7 @@ shows a single-use sign-in link as a QR; press L for a fresh one, or run --link
|
|
|
216
224
|
<details>
|
|
217
225
|
<summary><b>Can I reach it from anywhere, not just my LAN?</b></summary>
|
|
218
226
|
|
|
219
|
-
> Same answer: press **R** and pick a private frizz.sh
|
|
227
|
+
> Same answer: press **R** and pick a private frizz.sh subdomain (unguessable, no account), a Cloudflare Tunnel, or Tailscale. (Custom frizz.sh subdomains are paused for now; a board that already holds one keeps it.) Each is reachable from anywhere the transport is — a frizz.sh subdomain and a Cloudflare Tunnel from the open internet, Tailscale from your own devices.
|
|
220
228
|
>
|
|
221
229
|
> Frizz has no accounts, so the single-use sign-in link **is** the door: a phone that scans it gets a session; nobody else gets in. Sessions are per device and can be listed and revoked with `npx frizz --sessions` and `npx frizz --sign-out`. Every project added or removed, thread started, message sent and question answered is recorded in `logs/audit.jsonl` under Frizz's data folder, with the session id of the device that did it and whether it came through that public address.
|
|
222
230
|
|