pitroom 0.6.3 → 0.6.5
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +32 -0
- package/PRIVACY.md +28 -12
- package/README.md +158 -79
- package/THIRD_PARTY_NOTICES.md +19 -0
- package/dist/lib.mjs +39 -3
- package/dist/pitroom.mjs +334 -83
- package/package.json +4 -2
- package/skills/pitroom-crew/SKILL.md +3 -3
- package/skills/pitroom-driven-development/SKILL.md +1 -1
- package/skills/pitroom-implement/SKILL.md +1 -1
- package/skills/pitroom-writing-plans/SKILL.md +1 -1
- package/skills/using-pitroom/SKILL.md +6 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pitroom",
|
|
3
3
|
"description": "A free pit crew for your expensive coding agent: the superpowers development workflow, run by cheap workers. Delegate research, fixes, tests, reviews and whole plans from Claude Code, Codex or any agent to OpenCode, Codex or Claude Code workers, with receipts that prove the savings.",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.5",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "TahaAtas"
|
|
7
7
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pitroom",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
4
4
|
"description": "A free pit crew for your expensive coding agent: delegate research, fixes, tests, reviews and parallel investigations to cheap worker agents running your own models, with verified answers, exact diffs and cost receipts.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "TahaAtas"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.6.5
|
|
4
|
+
|
|
5
|
+
### Models, costs and effort
|
|
6
|
+
- `pitroom models [worker] [--all] [--json]` lists what Codex (from its model cache), Claude Code (aliases) and OpenCode (`opencode models`) offer, the effort levels each model accepts, your costs and what your own runs used (runs, average tokens, reported dollars).
|
|
7
|
+
- Config `costs` (`{"codex:gpt-6-sol": 1, "codex:gpt-6.1-sol": 2}`): your relative cost per model. Pitroom cannot know vendor prices, so it does not guess them; `pitroom doctor` prints the cost of the models in use and notes a cheaper one you priced.
|
|
8
|
+
- `--effort LEVEL` for every worker (`model#level`: Codex effort, Claude Code `--effort`, OpenCode variant). The skills tell the agent to pick the cheapest model and the lowest effort that fits.
|
|
9
|
+
- Fix: a target that names only an effort (`codex:#low`) skipped the configured `models` default and ran the vendor's own default model. It now gets the configured model with that effort. A Codex or Claude Code worker with no pinned model gets a warning.
|
|
10
|
+
|
|
11
|
+
### More workers, free first
|
|
12
|
+
- Up to 20 workers run at once by default (`maxParallel`), 30 at most; before, the default was 4. The rest queue and the fallback chain absorbs free-tier rate limits.
|
|
13
|
+
- An optional `review` tier in `tiers` names who reviews a run (and needs no same-backend warning). The skills start on the `cheap` tier, OpenCode's free model, and raise a task only when it needs more; plans are written the same way.
|
|
14
|
+
|
|
15
|
+
### Project files
|
|
16
|
+
- `THIRD_PARTY_NOTICES.md` carries the MIT notice of superpowers, which the workflow skills are adapted from, and ships in the npm package; the README stays clean and links to it.
|
|
17
|
+
- `CODE_OF_CONDUCT.md`, issue forms (bug report, feature request), a pull request template and a contact-link page for security reports.
|
|
18
|
+
- `npm run bump -- patch|minor|major|X.Y.Z` moves the version in `package.json`, `package-lock.json` (which still said 0.1.0) and both plugin manifests together and adds a CHANGELOG heading; a test fails while any file disagrees or the new CHANGELOG heading still has its placeholder text.
|
|
19
|
+
|
|
20
|
+
### README
|
|
21
|
+
- The workflow and the architecture are SVG diagrams (they render on GitHub and on npm, unlike mermaid). The speed gain is stated with measured numbers: 470 s of worker time in 156 s of wall clock.
|
|
22
|
+
- Install commands per agent as copy-and-paste blocks (Claude Code, Codex, npm), with update and uninstall; diagrams for the workflow and for how a run flows; the free-first setup, `pitroom models`, costs and effort are explained; the hard-coded version line is gone (the badges show the real versions).
|
|
23
|
+
|
|
24
|
+
### Seeing Pitroom at work
|
|
25
|
+
- The card hook also reaches the agent (`additionalContext`), so the user hears which worker and model ran even where the host shows no hook messages. Runs that finished without a card are announced on the next `pitroom` command.
|
|
26
|
+
- `pitroom savings --models` lists workers and models with runs, tokens, cost and savings.
|
|
27
|
+
|
|
28
|
+
## 0.6.4
|
|
29
|
+
|
|
30
|
+
### Deleting is the user's call
|
|
31
|
+
- `pitroom apply` (and `apply -g`) refuses a patch that deletes files unless you pass `--allow-delete`; nothing of the patch is applied. The run report flags deletions with a warning, for isolated runs and for `-w` runs (undo: `pitroom revert`).
|
|
32
|
+
- Workers are told to delete a file only when the task explicitly asks for it, to list every deleted file, and to propose any other deletion under OPEN ISSUES instead of doing it.
|
|
33
|
+
- The skills (`using-pitroom`, `pitroom-implement`, `pitroom-driven-development`, `pitroom-crew`) make the primary agent the decider: it sets each worker's permissions from the task and the user's session (read, isolate or write mode, `--web`), decides whether a deletion is wanted and passes `--allow-delete` itself, asking the user only when the worker deleted something that was not asked for. A fixed floor (no git history changes, no `sudo`, no publishing, no secrets) stays in place.
|
|
34
|
+
|
|
3
35
|
## 0.6.3
|
|
4
36
|
|
|
5
37
|
### Skills
|
package/PRIVACY.md
CHANGED
|
@@ -2,29 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
_Last updated: 2026-09-30_
|
|
4
4
|
|
|
5
|
-
Pitroom is a command-line tool and a set of agent skills that run on your own computer. This page says what it
|
|
5
|
+
Pitroom is a command-line tool and a set of agent skills that run on your own computer. This page says what data is involved, what for, who receives it, how long it is kept and what you can do about it.
|
|
6
6
|
|
|
7
7
|
## What the Pitroom authors collect
|
|
8
8
|
|
|
9
9
|
Nothing. Pitroom has no accounts, no analytics and no telemetry, and its own code makes no network requests. No data is sent to the authors.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Data categories and purposes
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
When you delegate work, Pitroom handles these categories of data, only to carry out that work:
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
| Data | Purpose |
|
|
16
|
+
|---|---|
|
|
17
|
+
| The task text you or your agent write | Tell the worker what to do |
|
|
18
|
+
| Files of your project that the worker reads, and its edits | Let the worker do the task; return an exact diff |
|
|
19
|
+
| For reviews, the diff under review with 10 lines of context | Let a second worker review the change |
|
|
20
|
+
| Run records: the task, the worker's answer, diffs, timings | Let your agent and you read results, apply or undo them |
|
|
21
|
+
| Savings ledger: token counts, cost estimates, worker and model names per run (no task text, no code) | Show what delegating saved |
|
|
22
|
+
| Settings you choose (`~/.config/pitroom/config.json`) | Remember your worker, models and tiers |
|
|
18
23
|
|
|
19
|
-
|
|
24
|
+
Project files may contain personal data of yours or of third parties; Pitroom does not look for it, filter it or add to it.
|
|
20
25
|
|
|
21
|
-
##
|
|
26
|
+
## Recipients
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
- Optional settings in `~/.config/pitroom/config.json`.
|
|
25
|
-
- Private working copies of your project for isolated runs, inside the state folder. They are removed when you apply or discard a run.
|
|
28
|
+
Pitroom starts a worker agent CLI that you installed and signed in to yourself. The task text, the files it reads and, for reviews, the diff go to that CLI and to the provider of the worker's model, under that provider's terms and privacy policy, not under this one. Pitroom does not filter this content: secrets committed in a reviewed range are sent as they are. The file-reading tools of OpenCode and Claude Code workers refuse `.env` files and private keys, but Codex workers are not restricted that way and a shell command can still read such files, so keep secrets out of the project folder you delegate in. To keep code on your machine, point the worker at a local model. Nobody else receives data from Pitroom.
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
## Where data is stored and for how long
|
|
31
|
+
|
|
32
|
+
- Run records and the savings ledger: `~/.local/state/pitroom`, or the folder named by `PITROOM_HOME`. Pitroom never deletes them by itself: they stay until you remove them.
|
|
33
|
+
- Private working copies of your project for isolated runs: inside the same folder, removed when you apply or discard the run.
|
|
34
|
+
- Settings: `~/.config/pitroom/config.json`, until you delete it.
|
|
35
|
+
|
|
36
|
+
Nothing is stored in your repository.
|
|
37
|
+
|
|
38
|
+
## Your controls
|
|
39
|
+
|
|
40
|
+
- `pitroom clean --yes` removes run records older than 14 days (change it with `--days N`); unapplied isolated patches are kept, and so is the savings ledger.
|
|
41
|
+
- Delete the state folder to remove everything, including the ledger; delete the settings file to reset your settings.
|
|
42
|
+
- `pitroom discard <run>` removes a run's private working copy.
|
|
43
|
+
- You choose which worker CLI and model receive your data (`-W`, `config`), and whether a worker may use the web (`--web`, off by default).
|
|
28
44
|
|
|
29
45
|
## Changes and contact
|
|
30
46
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
### A free pit crew for your expensive coding agent
|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**Cheaper and faster: hand the reading, fixes, tests and reviews to workers that run in parallel. Keep the decisions.**
|
|
8
8
|
|
|
9
9
|
Model-agnostic · Verified answers · Receipts, not vibes · OpenCode / Codex / Claude Code workers
|
|
10
10
|
|
|
@@ -20,10 +20,12 @@ Model-agnostic · Verified answers · Receipts, not vibes · OpenCode / Codex /
|
|
|
20
20
|
<br />
|
|
21
21
|
|
|
22
22
|
**[Quick start](#quick-start)** ·
|
|
23
|
+
[Benchmarks](#benchmarks) ·
|
|
23
24
|
[Workflow](#workflow) ·
|
|
24
25
|
[Skills](#skills) ·
|
|
25
26
|
[Commands](#commands) ·
|
|
26
27
|
[Workers](#workers) ·
|
|
28
|
+
[Responsibility](#responsibility) ·
|
|
27
29
|
[Write an adapter](docs/backends.md)
|
|
28
30
|
|
|
29
31
|
<br />
|
|
@@ -36,8 +38,6 @@ Model-agnostic · Verified answers · Receipts, not vibes · OpenCode / Codex /
|
|
|
36
38
|
|
|
37
39
|
</div>
|
|
38
40
|
|
|
39
|
-
> **Current version: 0.6.0.**
|
|
40
|
-
|
|
41
41
|
---
|
|
42
42
|
|
|
43
43
|
## Why Pitroom?
|
|
@@ -46,7 +46,7 @@ Claude Code, Codex and friends spend premium tokens *reading*: grepping, opening
|
|
|
46
46
|
|
|
47
47
|
Pitroom goes one step further:
|
|
48
48
|
|
|
49
|
-
> **Your agent stays in the driver's seat. A pit crew of cheap workers does the legwork, and hands back only the answer, the exact diff and a receipt.**
|
|
49
|
+
> **Your agent stays in the driver's seat. A pit crew of cheap workers does the legwork in parallel, while your agent keeps going, and hands back only the answer, the exact diff and a receipt.**
|
|
50
50
|
|
|
51
51
|
<table>
|
|
52
52
|
<tr>
|
|
@@ -98,8 +98,11 @@ In isolate mode nothing reaches your tree until you apply it.
|
|
|
98
98
|
|
|
99
99
|
- **Receipts, not vibes.** Tokens the worker burned, tokens returned to your agent, compression ratio, and an estimate of what your primary model would have charged. `pitroom savings --card card.svg` makes a shareable card.
|
|
100
100
|
- **Self-healing worker chain.** Free models get rate-limited or retired. List fallback workers once (`fallback`) and a run that hits "model not found", 429 or quota errors moves to the next model automatically. Still no model hardcoded: the chain is yours.
|
|
101
|
-
- **A crew, not just one worker.** `pitroom crew` starts several workers at once, `pitroom watch --json` streams one line per change so your agent follows them live, `pitroom wait -g` collects every answer, `pitroom apply -g` lands isolated patches in order.
|
|
101
|
+
- **A crew, not just one worker.** `pitroom crew` starts several workers at once, `pitroom watch --json` streams one line per change so your agent follows them live, `pitroom wait -g` collects every answer, `pitroom apply -g` lands isolated patches in order. Up to 20 workers run at once by default (`maxParallel`, 30 at most), the rest queue, and the fallback chain absorbs free-tier rate limits; parallel writers are refused.
|
|
102
|
+
- **Faster, not only cheaper.** Workers run in the background and side by side (up to 20 at once) while your agent keeps working, so slow reading and review stop blocking it. In the [benchmark](#benchmarks), 470 s of worker time finished in 156 s of wall clock, about 3× faster than one question after another, and your agent's own context stayed small.
|
|
103
|
+
- **Free first, dearer only when needed.** Runs and plan tasks start on the `cheap` tier, OpenCode's free model; `standard` (Codex) and `capable` (Claude Code) are for tasks that need them, and an optional `review` tier names who reviews. `pitroom models` shows what each worker offers, the effort levels (`low` … `xhigh`) each model accepts, what you say it costs (`costs`) and what it used; `--effort` sets the level per run. Details: [Models, costs and effort](#models-costs-and-effort).
|
|
102
104
|
- **Exact changes, even in a dirty tree.** Pitroom snapshots the working tree with a throwaway git index (your index, branches and stash are never touched), so it reports *only the worker's* edits and can undo exactly those: `pitroom revert <id>`.
|
|
105
|
+
- **Your agent sets the permissions.** It creates each worker with the permissions the task and your session allow (read-only, isolated copy, in-place edits, web), and a worker never widens its own. A fixed floor stays for every run: no git history changes, no `sudo`, no publishing, no secrets. A worker cannot land a deletion either: `pitroom apply` refuses a patch that deletes files unless your agent passes `--allow-delete`.
|
|
103
106
|
- **Real isolation.** `--isolate` runs the worker in a private copy of your **current** state (its own repository, sharing your objects read-only), uncommitted and untracked files included, then hands you a patch: `pitroom apply <id>` (checked, refuses on conflict) or `pitroom discard <id>`.
|
|
104
107
|
- **Zero repo pollution.** No `.pitroom/` folder, no `.gitignore` edits, no branches. Records live in `~/.local/state/pitroom`.
|
|
105
108
|
- **Works with any agent.** Fourteen [Agent Skills](https://agentskills.io): the superpowers development workflow run by workers, plus delegation (`using-pitroom`, `pitroom-research`, `-crew`, `-implement`), a CLI, and a Claude Code / Codex plugin whose session-start hook loads the workflow. Claude Code, Codex, Gemini CLI, Cursor, or anything that can run a shell command.
|
|
@@ -107,7 +110,7 @@ In isolate mode nothing reaches your tree until you apply it.
|
|
|
107
110
|
|
|
108
111
|
### How it stays safe
|
|
109
112
|
|
|
110
|
-
Each run gets the worker's own safety mechanism set to the mode (for OpenCode, a permission profile injected through `OPENCODE_CONFIG_CONTENT`): no commit/push/reset/checkout/stash/clean/rebase, no bulk deletes, no `sudo`,
|
|
113
|
+
Each run gets the worker's own safety mechanism set to the mode (for OpenCode, a permission profile injected through `OPENCODE_CONFIG_CONTENT`): no commit/push/reset/checkout/stash/clean/rebase, no bulk deletes, no `sudo`, a file-reading tool that refuses `.env` and key files (OpenCode and Claude Code workers), no web tools unless you pass `--web`, no subagents, no recursive delegation. Only `allow`/`deny` rules, so a headless run never stalls on a prompt. A **git guard** on the worker's PATH also stops `sh -c "git push"`, `env git reset`, aliases and scripts from committing, pushing, resetting, stashing or touching your index. Your `opencode.json` is never touched. These safeguards reduce risk; they are not a security boundary (see [Responsibility](#responsibility) and [SECURITY.md](SECURITY.md)).
|
|
111
114
|
|
|
112
115
|
---
|
|
113
116
|
|
|
@@ -131,77 +134,91 @@ FILES CHANGED: none
|
|
|
131
134
|
· returned ~554 tokens, 294× compression · est. saved $0.152 vs Claude Sonnet
|
|
132
135
|
```
|
|
133
136
|
|
|
134
|
-
Every run prints a receipt, and `pitroom savings` adds them up:
|
|
137
|
+
Every run prints a receipt, and `pitroom savings` adds them up (a bigger measurement follows in [Benchmarks](#benchmarks)):
|
|
135
138
|
|
|
136
139
|
<p align="center"><img src="docs/card.svg" width="520" alt="Pitroom savings card"></p>
|
|
137
140
|
|
|
138
141
|
---
|
|
139
142
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
-
<table>
|
|
143
|
-
<tr>
|
|
144
|
-
|
|
145
|
-
<td width="25%" valign="top">
|
|
146
|
-
|
|
147
|
-
### 01
|
|
143
|
+
## Benchmarks
|
|
148
144
|
|
|
149
|
-
|
|
145
|
+
Measured on a real, public repository: [PI-Desktop](https://github.com/vastsa/PI-Desktop) at commit `c2bfe35`, 2,349 tracked files and about 419,000 lines of TypeScript and Rust. Eight questions of the kind an agent asks before it changes code, run as one read-only crew (`pitroom crew`, at most four workers at a time) on OpenCode's free `muse-spark-1.3-contributor-free` model.
|
|
150
146
|
|
|
151
|
-
|
|
147
|
+
| Question | Worker time | Tokens processed | Returned to the agent | Compression | Refs verified |
|
|
148
|
+
|---|---|---|---|---|---|
|
|
149
|
+
| Where is the plugin runtime, and which functions activate and deactivate a plugin? | 37 s | 405,380 | 767 | 529× | 10/11 |
|
|
150
|
+
| When does the agent runtime compact a conversation? (function and exact condition) | 90 s | 1,250,719 | 763 | 1,639× | 17/17 |
|
|
151
|
+
| Where is session state persisted to disk in the Rust host? | 71 s | 854,969 | 1,426 | 600× | 29/45 ¹ |
|
|
152
|
+
| Which IPC channels expose window management to the renderer? | 32 s | 165,180 | 716 | 231× | 3/28 ¹ |
|
|
153
|
+
| How does a tool call travel from the agent runtime to the Rust host? | 119 s | 1,818,524 | 866 | 2,100× | 14/15 |
|
|
154
|
+
| Which packages and apps depend on the i18n package? | 33 s | 271,297 | 656 | 414× | 15/16 |
|
|
155
|
+
| Where is auto-update implemented, and what does the Windows portable target change? | 29 s | 215,693 | 743 | 290× | 20/21 |
|
|
156
|
+
| Which tests cover the RPC layer? | 59 s | 511,209 | 1,747 | 293× | 6/7 |
|
|
157
|
+
| **All eight** | **156 s** wall clock | **5,492,971** | **7,684** | **715×** | 114/160 |
|
|
152
158
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
<td width="25%" valign="top">
|
|
159
|
+
Workers read 5.5 million tokens of code and docs (96 steps, 179 tool calls) and handed the agent 7,684 tokens, about 960 per answer. The eight runs add up to 470 s of worker time but finished in 156 s of wall clock, because four ran at a time (the limit then; the default is now 20): about 3× faster than one after another. That compares the same workers with themselves, not with your agent doing the reading alone, which I did not measure. `pitroom savings` estimates $3.86 saved for these eight at Claude Sonnet list prices.
|
|
156
160
|
|
|
157
|
-
|
|
161
|
+
**Were the answers right?** Checked by hand against the repository: 46 key claims across all eight answers (the cited line and what it says) were all correct, and two completeness checks held (exactly 6 invoke and 3 event window channels; no tests in `config_sync_rpc.rs`). The i18n answer lists the 12 source files that import the package and leaves out 11 test and fixture files that do too, which the question did not ask about. Pitroom's own checker marks fewer references as verified than that: ¹ those two answers cite bare file names (`transcripts.rs:651`) that it cannot resolve to a path, and it counts them as unverified although the lines are right.
|
|
158
162
|
|
|
159
|
-
**
|
|
163
|
+
**A change in an isolated copy:** "add a one-line comment above `resolveUpdateMode`" finished in 16 s and 4 steps (142,491 tokens). The patch was one file and one line, the comment matched the code, and your working tree is untouched until you apply.
|
|
160
164
|
|
|
161
|
-
|
|
165
|
+
**What this does not show**
|
|
166
|
+
- One repository, one free model, one run per question: there is no variance here, and another model or repository will differ.
|
|
167
|
+
- An open-ended task ("find up to five spelling mistakes in `docs/`") did not finish: it was stopped after 19 minutes and 57 tool calls. Give workers bounded tasks.
|
|
168
|
+
- "Tokens processed" is what the workers read and wrote. What your agent would have spent doing the same reading itself is an estimate, not a measurement: the savings figure assumes it would process about the same tokens. The $0 worker cost is because the model is free.
|
|
169
|
+
- The hand check covered key claims, not every citation.
|
|
162
170
|
|
|
163
|
-
|
|
171
|
+
To repeat it on your own repository: `pitroom crew -d <repo> -g bench "<question 1>" "<question 2>" …`, then `pitroom wait -g bench`, `pitroom show <run>` and `pitroom savings --models`.
|
|
164
172
|
|
|
165
|
-
|
|
173
|
+
---
|
|
166
174
|
|
|
167
|
-
|
|
175
|
+
## Quick start
|
|
168
176
|
|
|
169
|
-
|
|
177
|
+
You need Node.js 18+ and at least one worker CLI: [OpenCode](https://opencode.ai) v2+ (the default worker, with free models), [Codex CLI](https://github.com/openai/codex) or [Claude Code](https://claude.com/claude-code).
|
|
170
178
|
|
|
171
|
-
|
|
179
|
+
### 1. Install: pick your agent
|
|
172
180
|
|
|
173
|
-
|
|
181
|
+
**Claude Code**
|
|
174
182
|
|
|
175
|
-
|
|
183
|
+
```bash
|
|
184
|
+
claude plugin marketplace add ATASTECH/pitroom
|
|
185
|
+
claude plugin install pitroom@pitroom
|
|
186
|
+
```
|
|
176
187
|
|
|
177
|
-
|
|
188
|
+
<sub>Inside a session: `/plugin marketplace add ATASTECH/pitroom`, then `/plugin install pitroom@pitroom`.</sub>
|
|
178
189
|
|
|
179
|
-
**
|
|
190
|
+
**Codex**
|
|
180
191
|
|
|
181
|
-
|
|
192
|
+
```bash
|
|
193
|
+
codex plugin marketplace add ATASTECH/pitroom
|
|
194
|
+
codex plugin add pitroom@pitroom
|
|
195
|
+
npm i -g pitroom
|
|
196
|
+
```
|
|
182
197
|
|
|
183
|
-
|
|
198
|
+
**Any other agent (Cursor, Gemini CLI, a plain shell) or just the CLI**
|
|
184
199
|
|
|
185
|
-
|
|
186
|
-
|
|
200
|
+
```bash
|
|
201
|
+
npm i -g pitroom
|
|
202
|
+
pitroom install
|
|
203
|
+
```
|
|
187
204
|
|
|
188
|
-
|
|
205
|
+
| Path | You get |
|
|
206
|
+
|---|---|
|
|
207
|
+
| Claude Code plugin | The 14 skills, the session-start hook that introduces Pitroom, and a card after each `pitroom` command. |
|
|
208
|
+
| Codex plugin | The 14 skills. Codex has no session-start hook, so Pitroom is not introduced on its own: the skills load when a task matches, or name one. `pitroom` itself comes from npm. |
|
|
209
|
+
| npm + `pitroom install` | The CLI, and the skills linked into `~/.agents/skills` and `~/.claude/skills`. |
|
|
189
210
|
|
|
190
|
-
|
|
211
|
+
Pick one path, not several: `doctor` warns if the skills load twice. The plugins alone do not put `pitroom` on your PATH, so install it from npm too if you want to run it yourself (`watch`, `models`, `savings`, the status line).
|
|
191
212
|
|
|
192
|
-
|
|
193
|
-
|---|---|---|
|
|
194
|
-
| **Claude Code** | `claude plugin marketplace add ATASTECH/pitroom`<br>`claude plugin install pitroom@pitroom`<br>(inside a session: `/plugin marketplace add ATASTECH/pitroom`, `/plugin install pitroom@pitroom`) | The 14 skills, the session-start hook that introduces Pitroom, and a card after each `pitroom` command. The plugin is the published npm package: under 0.5 MB, no dependencies. |
|
|
195
|
-
| **Codex** | `codex plugin marketplace add ATASTECH/pitroom`<br>`codex plugin add pitroom@pitroom`<br>and `npm i -g pitroom` | The 14 skills. Codex plugins have no session-start hook, so Pitroom is not introduced on its own: the skills load when a task matches, or ask for one by name. The `pitroom` command itself comes from npm. |
|
|
196
|
-
| **Any other agent, or only the CLI** | `npm i -g pitroom`<br>`pitroom install` | The CLI, and the skills linked into `~/.agents/skills` and `~/.claude/skills`. |
|
|
213
|
+
### 2. Check the setup
|
|
197
214
|
|
|
198
215
|
```bash
|
|
199
|
-
pitroom doctor --probe
|
|
216
|
+
pitroom doctor --probe
|
|
200
217
|
```
|
|
201
218
|
|
|
202
|
-
|
|
219
|
+
It checks the worker CLIs, models, permissions and skills, and runs one live round trip.
|
|
203
220
|
|
|
204
|
-
###
|
|
221
|
+
### 3. Use it
|
|
205
222
|
|
|
206
223
|
Pitroom is a toolbox, not a procedure: your agent uses it when it helps, or you ask explicitly:
|
|
207
224
|
|
|
@@ -213,8 +230,26 @@ Or start a worker yourself and read its receipt:
|
|
|
213
230
|
```bash
|
|
214
231
|
pitroom "Which files read the session cookie? Cite file:line."
|
|
215
232
|
pitroom savings # what all your runs saved so far
|
|
233
|
+
pitroom models # what each worker offers, what it costs you, what it used
|
|
216
234
|
```
|
|
217
235
|
|
|
236
|
+
<details>
|
|
237
|
+
<summary>Update and uninstall</summary>
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# update
|
|
241
|
+
claude plugin update pitroom@pitroom
|
|
242
|
+
codex plugin marketplace upgrade pitroom
|
|
243
|
+
npm i -g pitroom@latest
|
|
244
|
+
|
|
245
|
+
# uninstall
|
|
246
|
+
claude plugin uninstall pitroom@pitroom
|
|
247
|
+
codex plugin remove pitroom@pitroom
|
|
248
|
+
pitroom uninstall && npm rm -g pitroom
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
</details>
|
|
252
|
+
|
|
218
253
|
---
|
|
219
254
|
|
|
220
255
|
## Modes
|
|
@@ -240,17 +275,18 @@ Long jobs: `--bg` returns immediately; `pitroom wait <id>` blocks for up to 9 mi
|
|
|
240
275
|
|
|
241
276
|
Pitroom ships a full development methodology as skills, adapted from [superpowers](https://github.com/obra/superpowers) so that its subagents are cheap workers: your agent brainstorms and plans with you, then executes the plan task by task while workers do the typing and a second model does the reviewing.
|
|
242
277
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
pitroom
|
|
252
|
-
pitroom-
|
|
253
|
-
|
|
278
|
+
<p align="center"><img src="docs/workflow.svg" width="100%" alt="Workflow: brainstorming, then a plan with a worker tier per task, then for every task a worker implements in an isolated copy, another model reviews, fix rounds repeat until approved, and your agent applies, tests and commits; then a whole-branch review and finishing."></p>
|
|
279
|
+
|
|
280
|
+
| Step | Skill | Command |
|
|
281
|
+
|---|---|---|
|
|
282
|
+
| Design | `pitroom-brainstorming` | writes the spec to `docs/pitroom/specs/` |
|
|
283
|
+
| Plan | `pitroom-writing-plans` | writes the plan to `docs/pitroom/plans/`, a worker tier on every task |
|
|
284
|
+
| Implement | `pitroom-driven-development` | `pitroom run -i --plan PLAN --step N` |
|
|
285
|
+
| Review | `pitroom-review` | `pitroom review <run>` (a read-only reviewer on another model) |
|
|
286
|
+
| Fix | `pitroom-receiving-review` | `pitroom run --continue <run> "…"` (the re-review sees only the fix) |
|
|
287
|
+
| Land | `pitroom-driven-development` | `pitroom apply <run>`, your tests, your commit |
|
|
288
|
+
| Branch review | `pitroom-review` | `pitroom review --range main..HEAD --plan PLAN` |
|
|
289
|
+
| Finish | `pitroom-finishing` | merge, pull request or keep: asked, never automatic |
|
|
254
290
|
|
|
255
291
|
A review package holds the diff under review with 10 lines of context, and the reviewer's CLI sends it to that worker's model provider. Pitroom does not filter it: secrets committed in a reviewed range go along as they are.
|
|
256
292
|
|
|
@@ -271,6 +307,9 @@ pitroom crew -g v04-demo \
|
|
|
271
307
|
pitroom watch -g v04-demo --json # what the primary agent follows, one line per change:
|
|
272
308
|
```
|
|
273
309
|
|
|
310
|
+
<details>
|
|
311
|
+
<summary>What the crew prints: the stream your agent follows and the status table</summary>
|
|
312
|
+
|
|
274
313
|
```text
|
|
275
314
|
{"event":"started","run":"20260930-102812-a65d","mode":"read","task":"Where does Pitroom enforce the maxParallel queue, and how d…"}
|
|
276
315
|
{"event":"progress","run":"20260930-102812-a65d","steps":3,"tools":4,"last":"grep SIGINT|SIGTERM|stop.*queued|stopped.*queued"}
|
|
@@ -287,9 +326,11 @@ RUN STATE MODE TIME STEPS WORKER NOW /
|
|
|
287
326
|
20260930-102812-a65d done read 39s 7 opencode (default model) maxParallel is enforced by file-based slots (`s…
|
|
288
327
|
```
|
|
289
328
|
|
|
329
|
+
</details>
|
|
330
|
+
|
|
290
331
|
Humans get the same table live with `pitroom watch -g NAME`; `pitroom wait -g NAME --brief` prints one line per worker, `pitroom show <run>` the full answer.
|
|
291
332
|
|
|
292
|
-
For changes, `pitroom crew -i …` gives every worker its own isolated copy of your current state and `pitroom apply -g NAME` lands the patches in order, stopping at the first conflict.
|
|
333
|
+
For changes, `pitroom crew -i …` gives every worker its own isolated copy of your current state and `pitroom apply -g NAME` lands the patches in order, stopping at the first conflict. Up to `maxParallel` workers (default 20, at most 30) run at once, the rest queue; only one `--write` run per repository is allowed. `pitroom stop -g NAME` stops running and queued workers.
|
|
293
334
|
|
|
294
335
|
---
|
|
295
336
|
|
|
@@ -316,6 +357,9 @@ For changes, `pitroom crew -i …` gives every worker its own isolated copy of y
|
|
|
316
357
|
|
|
317
358
|
## Commands
|
|
318
359
|
|
|
360
|
+
<details>
|
|
361
|
+
<summary>All commands and exit codes</summary>
|
|
362
|
+
|
|
319
363
|
```text
|
|
320
364
|
pitroom run [-r|-w|-i] [-W WORKER] [-m MODEL] [-d DIR] [-f FILE]… [-t 30m] [--verify CMD] [--link a,b] [--bg] "task"
|
|
321
365
|
pitroom run --continue <run|last> "follow-up"
|
|
@@ -327,13 +371,16 @@ pitroom status|wait|watch [run… | -g NAME] wait: --any --brief --timeou
|
|
|
327
371
|
pitroom show [run] --patch --events --full --json
|
|
328
372
|
pitroom apply [run | -g NAME] · pitroom discard|revert [run] · pitroom stop [run | -g NAME]
|
|
329
373
|
pitroom ls [--running] [-g NAME] · pitroom clean [--days 14] [--yes]
|
|
330
|
-
pitroom savings [--since 7d|30d|all] [--card file.svg] [--badge]
|
|
374
|
+
pitroom savings [--since 7d|30d|all] [--models] [--card file.svg] [--badge]
|
|
375
|
+
pitroom models [worker] [--all] [--json] models, effort levels, your costs, your usage
|
|
331
376
|
pitroom statusline [--then CMD] · pitroom hook-card
|
|
332
377
|
pitroom doctor [--probe] · pitroom config · pitroom install [--copy] [--force] · pitroom uninstall
|
|
333
378
|
```
|
|
334
379
|
|
|
335
380
|
Exit codes: `0` ok · `1` worker failed · `2` usage · `3` refused/setup · `4` timeout · `5` read-only violation · `6` verify failed · `75` still running.
|
|
336
381
|
|
|
382
|
+
</details>
|
|
383
|
+
|
|
337
384
|
### Seeing Pitroom at work in Claude Code
|
|
338
385
|
|
|
339
386
|
Two settings make every delegation visible, whether or not the agent mentions it. A status line shows running workers and this week's savings (`--then` keeps your own status line first); a card appears after each `pitroom` command the agent runs, once per phase (started, finished with its result, applied). The plugin registers the card hook itself; with `pitroom install`, add both to `~/.claude/settings.json`:
|
|
@@ -353,19 +400,14 @@ Two settings make every delegation visible, whether or not the agent mentions it
|
|
|
353
400
|
|
|
354
401
|

|
|
355
402
|
|
|
356
|
-
|
|
357
|
-
primary agent ──(skill: "delegate?")──► pitroom run "task"
|
|
358
|
-
│ snapshot tree (throwaway index) [write]
|
|
359
|
-
│ isolated copy of current state [isolate]
|
|
360
|
-
│ worker adapter: mode → the CLI's own permissions
|
|
361
|
-
▼
|
|
362
|
-
worker CLI, e.g. opencode run --standalone --format json (stdin closed, git guard, your default model)
|
|
363
|
-
│ NDJSON events
|
|
364
|
-
▼
|
|
365
|
-
final answer · exact diff · receipt ──► primary agent verifies / applies
|
|
366
|
-
```
|
|
403
|
+
<p align="center"><img src="docs/architecture.svg" width="100%" alt="How a run flows: the primary agent delegates to the Pitroom CLI, which starts a worker CLI in read, isolate or write mode; events, then the answer, an exact diff and a receipt come back."></p>
|
|
367
404
|
|
|
368
|
-
|
|
405
|
+
<details>
|
|
406
|
+
<summary>Headless problems Pitroom handles for every worker</summary>
|
|
407
|
+
|
|
408
|
+
Handled for every worker: `opencode run` blocks forever on an open stdin pipe; `ask` permissions stall headless runs; default output carries ANSI and banners; and in OpenCode v2 a plain `run` attaches to the shared background service, where per-run permissions and the git guard would not apply. Pitroom closes stdin, uses allow/deny-only profiles, parses `--format json` and always runs a private `--standalone` server.
|
|
409
|
+
|
|
410
|
+
</details>
|
|
369
411
|
|
|
370
412
|
---
|
|
371
413
|
|
|
@@ -376,7 +418,8 @@ A worker is named by a target: `backend[:model]`.
|
|
|
376
418
|
```bash
|
|
377
419
|
pitroom run "…" # preferred worker (config "worker", default opencode)
|
|
378
420
|
pitroom run -W opencode:opencode/space-bunny-free "…" # a specific backend and model
|
|
379
|
-
pitroom run -W 'codex:#low' "…" # Codex's default
|
|
421
|
+
pitroom run -W 'codex:#low' "…" # the model from config "models" (not Codex's default), low reasoning effort
|
|
422
|
+
pitroom run --effort high "…" # any worker: model#level (Codex, Claude Code, OpenCode)
|
|
380
423
|
pitroom run -W claude:haiku "…" # Claude Code on a cheap model
|
|
381
424
|
pitroom run -m nvidia/z-ai/glm-5.3 "…" # another model on the preferred worker
|
|
382
425
|
```
|
|
@@ -388,24 +431,42 @@ pitroom run -m nvidia/z-ai/glm-5.3 "…" # another model on th
|
|
|
388
431
|
| Claude Code | ✅ | tool allowlist (`--restricted --safe-mode`, `dontAsk`) | reported | `claude auth login`; its default is often Opus, so prefer `-W claude:haiku` |
|
|
389
432
|
| Gemini CLI | soon | approval mode + policy engine | | |
|
|
390
433
|
|
|
434
|
+
### Models, costs and effort
|
|
435
|
+
|
|
436
|
+
`pitroom models` lists what each worker offers (Codex from its own model cache, Claude Code's aliases, OpenCode's `opencode models`), the reasoning-effort levels each model accepts, what you say it costs and what your own runs used:
|
|
437
|
+
|
|
438
|
+
```text
|
|
439
|
+
worker model effort (* default) cost runs avg tokens $/run in use
|
|
440
|
+
codex gpt-6.1-sol low*/medium/high/xhigh/max/ultra 2 20 174k - tier standard
|
|
441
|
+
codex gpt-6-sol low/medium*/high/xhigh/max/ultra 1 1 24k - -
|
|
442
|
+
claude haiku low/medium/high/xhigh/max ? - - - -
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Pitroom cannot know vendor prices and does not fetch them, so a cost is what you enter: `"costs": {"codex:gpt-6-sol": 1, "codex:gpt-6.1-sol": 2}` in the config, in any unit (they are only compared). `pitroom doctor` then prints the cost of the models in use and says when you priced a cheaper one of the same worker. A target that names only an effort (`codex:#low`) uses the model from `models`; a Codex or Claude Code worker with no pinned model gets a warning, because it would run the vendor's own default, which can change and cost more. `--effort LEVEL` sets the level for one run; your agent picks model and level from `pitroom models` (cheapest that fits: `low` for lookups, `medium` for ordinary changes, `high` for reviews).
|
|
446
|
+
|
|
391
447
|
Fallbacks cross backends (e.g. `"fallback": ["codex:#low", "opencode"]`): a worker that is rate-limited, logged out or missing its model hands the task to the next. Follow-ups (`--continue`) always stay on the worker that owns the session. Writing an adapter: [docs/backends.md](docs/backends.md).
|
|
392
448
|
|
|
393
449
|
---
|
|
394
450
|
|
|
395
451
|
## Configuration
|
|
396
452
|
|
|
453
|
+
<details>
|
|
454
|
+
<summary>Environment variables</summary>
|
|
455
|
+
|
|
397
456
|
| Env | Default | |
|
|
398
457
|
|---|---|---|
|
|
399
458
|
| `PITROOM_WORKER` | `opencode` | Preferred worker target: `backend[:model]` |
|
|
400
459
|
| `PITROOM_MODEL` | the worker's default | Model for the preferred worker |
|
|
401
460
|
| `PITROOM_FALLBACK` | none | Comma-separated targets to fail over to on model/provider errors |
|
|
402
461
|
| `PITROOM_TIMEOUT` | `30m` | Per-run timeout |
|
|
403
|
-
| `PITROOM_MAX_PARALLEL` | `
|
|
462
|
+
| `PITROOM_MAX_PARALLEL` | `20` | Workers running at once (at most 30); more queue |
|
|
404
463
|
| `PITROOM_PRIMARY` | `sonnet` | Pricing preset for the savings estimate: `sonnet`, `opus`, `haiku`, `gpt-5` |
|
|
405
464
|
| `PITROOM_PRICE` | | Custom primary price, USD per 1M tokens: `"in,out[,cachedIn]"` |
|
|
406
465
|
| `PITROOM_HOME` | `~/.local/state/pitroom` | Where run records and the ledger live |
|
|
407
466
|
| `PITROOM_<WORKER>_BIN` | on PATH | Path to a worker CLI, e.g. `PITROOM_OPENCODE_BIN` |
|
|
408
467
|
|
|
468
|
+
</details>
|
|
469
|
+
|
|
409
470
|
Or put defaults in `~/.config/pitroom/config.json` (flags and env still win); `pitroom config` shows every effective value and where it came from. `models` gives each worker a default model for targets that name none (`-W codex`, a `"codex"` fallback); a model in the target or `-m` still wins. `tiers` names workers for `--tier` and for plan tasks' `**Worker:**` lines:
|
|
410
471
|
|
|
411
472
|
```json
|
|
@@ -413,19 +474,25 @@ Or put defaults in `~/.config/pitroom/config.json` (flags and env still win); `p
|
|
|
413
474
|
"worker": "opencode",
|
|
414
475
|
"fallback": ["opencode:opencode/space-bunny-free", "codex"],
|
|
415
476
|
"models": { "codex": "gpt-6.1-sol", "claude": "claude-sonnet-5-5" },
|
|
416
|
-
"
|
|
477
|
+
"costs": { "codex:gpt-6-sol": 1, "codex:gpt-6.1-sol": 2 },
|
|
478
|
+
"tiers": { "cheap": "opencode", "standard": "codex", "capable": "claude", "review": "opencode:opencode/space-bunny-free" },
|
|
417
479
|
"timeout": "20m",
|
|
418
480
|
"primary": "opus",
|
|
419
481
|
"link": ["node_modules"],
|
|
420
|
-
"maxParallel":
|
|
482
|
+
"maxParallel": 20
|
|
421
483
|
}
|
|
422
484
|
```
|
|
423
485
|
|
|
486
|
+
- `worker` and `fallback`: who runs a task when you name no one, and who takes over when it fails; `models`: the model each worker uses when a target names none.
|
|
487
|
+
- `tiers`: `cheap`, `standard` and `capable` name the workers for plan tasks and `--tier`; an optional `review` tier names who reviews a run (by default another worker than the implementer's, `standard` first).
|
|
488
|
+
- `costs`: your relative cost per `worker:model`, only compared with each other; `maxParallel`: workers at once (default 20, at most 30).
|
|
489
|
+
|
|
490
|
+
|
|
424
491
|
---
|
|
425
492
|
|
|
426
493
|
## FAQ
|
|
427
494
|
|
|
428
|
-
**Where does my code go?** To whichever provider your worker's model uses. For private code, point the worker at a local model. `.env` files and private keys are
|
|
495
|
+
**Where does my code go?** To whichever provider your worker's model uses. For private code, point the worker at a local model. The file-reading tools of OpenCode and Claude Code workers refuse `.env` files and private keys; Codex workers are not restricted that way and a shell command can still read them, so keep secrets out of the folder you delegate in.
|
|
429
496
|
|
|
430
497
|
**How is "saved" computed?** It assumes your primary agent would have processed about the same tokens the worker did, priced at your primary's list prices (`PITROOM_PRIMARY` / `PITROOM_PRICE`), minus the worker's cost and the cost of reading the report. It is an estimate and is labelled as one.
|
|
431
498
|
|
|
@@ -435,9 +502,17 @@ Or put defaults in `~/.config/pitroom/config.json` (flags and env still win); `p
|
|
|
435
502
|
|
|
436
503
|
---
|
|
437
504
|
|
|
505
|
+
## Responsibility
|
|
506
|
+
|
|
507
|
+
Pitroom is provided as is, under the [MIT License](LICENSE), and is an independent project: it is not affiliated with or endorsed by OpenAI, Anthropic, OpenCode or the other tools it can drive.
|
|
508
|
+
|
|
509
|
+
**You are responsible for how you use it.** You decide what you delegate and to which model provider, which permissions a worker gets, and what you apply to your projects. Workers are AI agents and can be wrong: review their changes and run your tests before you rely on them. Pitroom's permission profiles, git guard and isolated copies reduce risk, but they are not a security boundary against a determined attacker or a malicious repository. Keep secrets out of the folder you delegate in, prefer isolated mode for changes you have not reviewed, and follow the terms of the worker CLIs and model providers you connect. What reaches a provider is described in the [privacy policy](PRIVACY.md).
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
438
513
|
## Contributing
|
|
439
514
|
|
|
440
|
-
Issues and pull requests are welcome. Worker adapters are the easiest place to
|
|
515
|
+
Issues and pull requests are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md): setup, tests, the dist bundle and the commit style. Worker adapters are the easiest place to begin: [docs/backends.md](docs/backends.md).
|
|
441
516
|
|
|
442
517
|
```bash
|
|
443
518
|
npm install
|
|
@@ -445,14 +520,18 @@ npm test # end-to-end tests against a fake worker CLI + adapter contrac
|
|
|
445
520
|
npm run typecheck
|
|
446
521
|
```
|
|
447
522
|
|
|
523
|
+
**Security:** please report vulnerabilities privately, as described in [SECURITY.md](SECURITY.md), not in a public issue.
|
|
524
|
+
|
|
448
525
|
**[Report an issue](https://github.com/ATASTECH/pitroom/issues/new)** ·
|
|
449
|
-
[Open issues](https://github.com/ATASTECH/pitroom/issues)
|
|
526
|
+
[Open issues](https://github.com/ATASTECH/pitroom/issues) ·
|
|
527
|
+
[Security policy](SECURITY.md) ·
|
|
528
|
+
[Code of conduct](CODE_OF_CONDUCT.md)
|
|
450
529
|
|
|
451
530
|
---
|
|
452
531
|
|
|
453
532
|
## Credits
|
|
454
533
|
|
|
455
|
-
The workflow skills (brainstorming, planning, worker-driven development, review, debugging, TDD, verification, worktrees, finishing) are adapted from [superpowers](https://github.com/obra/superpowers)
|
|
534
|
+
The workflow skills (brainstorming, planning, worker-driven development, review, debugging, TDD, verification, worktrees, finishing) are adapted from [superpowers](https://github.com/obra/superpowers) by Jesse Vincent, under the MIT License; the notice is in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
456
535
|
|
|
457
536
|
## License
|
|
458
537
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
Pitroom itself is licensed under the [MIT License](LICENSE). The workflow skills in `skills/` (brainstorming, planning, worker-driven development, review, debugging, TDD, verification, worktrees and finishing) are adapted from the skills of **superpowers** by Jesse Vincent, <https://github.com/obra/superpowers>, used under the MIT License reproduced below. They were rewritten so that their subagents are Pitroom workers.
|
|
4
|
+
|
|
5
|
+
## superpowers
|
|
6
|
+
|
|
7
|
+
MIT License
|
|
8
|
+
|
|
9
|
+
Copyright (c) 2025 Jesse Vincent
|
|
10
|
+
|
|
11
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
16
|
+
|
|
17
|
+
## Not bundled
|
|
18
|
+
|
|
19
|
+
Pitroom starts worker CLIs you install yourself (OpenCode, Codex CLI, Claude Code). They are not part of this package and keep their own licenses and terms.
|