@spoolway/win32-x64 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Marvin Gygas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,311 @@
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="docs/logo/lockup-a-mark-left-invert.png">
4
+ <img src="docs/logo/lockup-a-mark-left.png" alt="spoolway" width="350">
5
+ </picture>
6
+ </p>
7
+
8
+ Minimalistic command line state machine for turning coding agents into a pipeline you can actually reason about. No dependencies, terminal native. Runs headless or controls supported multiplexers. Worktree management and built-in support for GitHub's stacked pull requests.
9
+
10
+ Supported providers:
11
+
12
+ - **`claude`**
13
+ - **`codex`**
14
+ - **`pi`**
15
+
16
+ Supported multiplexers:
17
+
18
+ - **`tmux`**
19
+ - **`herdr`**
20
+
21
+ ## Why
22
+
23
+ Running one coding agent is easy. Running five is tab-juggling: which one is done, which
24
+ one is stuck, and which one is quietly rewriting a file another one needs. The order lives
25
+ in your head, and it stops the moment you look away.
26
+
27
+ It replaces the orchestrating agent that is supposed to keep everything together — and
28
+ sometimes does. spoolway won't surprise you with a bill or an opinion.
29
+
30
+ ## Features
31
+
32
+ - **A dispatcher with no model in it.** Every scheduling decision is mechanical — a
33
+ counter, a timestamp, a position in the pipeline file. It never drifts, costs nothing,
34
+ and is safe to interrupt at any point.
35
+ - **Any mix of agents.** Each step names its own agent and model: a local model for
36
+ implementation, a cloud model for review, a shell command for the test suite.
37
+ - **A worktree per task.** Every task builds on its own branch in its own checkout, so
38
+ parallel tasks never step on each other.
39
+ - **Stacked pull requests.** A dependent task's branch is cut from its dependency's
40
+ branch, so a chain of tasks arrives as one ordered stack of PRs. Nothing merges itself;
41
+ you land the stack. Optional, and driven by **`spoolway stack`**.
42
+ - **Session reuse.** A step can resume its prompt's earlier conversation instead of
43
+ paying to rebuild context, bounded by how full the model's window already is.
44
+ - **Unattended runs.** Overnight, nothing parks for a person: blocked work is resumed by
45
+ an unblocker prompt, with an output-token ceiling as the brake.
46
+ - **Trials.** Fork one task into an arm per pipeline and queue them together, then read the
47
+ arms side by side in eval.
48
+ - **Routines.** Keep the tasks you run over and over in `.spoolway/routines/`.
49
+ - **Eval built in.** Every lane's spend and outcome land in a ledger, so you can see what
50
+ your last pipeline edit did to pass rate and price.
51
+
52
+ ## Install
53
+
54
+ ```
55
+ npm install -g spoolway
56
+ ```
57
+
58
+ A prebuilt binary, not a Node program — the package is a thin wrapper that runs it. Linux
59
+ (x64, arm64, musl), macOS (Apple Silicon, Intel) and Windows (x64, experimental).
60
+
61
+ From source instead, in a clone of this repository:
62
+
63
+ ```
64
+ cargo install --path .
65
+ ```
66
+
67
+ Platform notes and requirements in full: **[Installation and setup](docs/installation.md)**.
68
+
69
+ ## Quick start
70
+
71
+ ### 1. Set up inside the project repo
72
+
73
+ ```
74
+ spoolway init
75
+ ```
76
+
77
+ `spoolway doctor` checks that everything the configured pipeline needs is actually
78
+ present, any time you want to confirm the project would run.
79
+
80
+ ### 2. Plan, or create queueable spoolway tasks directly
81
+
82
+ Tell the `/spoolway-plan` skill what you want built. It argues the shape with you until
83
+ every question is settled, and writes the result as one plan page. Approve the page and it
84
+ cuts the plan into tasks.
85
+
86
+ <img src="docs/screenshots/plan.png" alt="a plan page written by /spoolway-plan">
87
+
88
+ Already know the shape you want? `/spoolway-tasks` skips the argument and cuts the task
89
+ documents straight away.
90
+
91
+ **Both skills are optional.** A task is only a Markdown file in
92
+ `~/.spoolway/<project>/pending/`, so anything that writes Markdown can produce one — an
93
+ issue exporter, a script, or a model you already talk to. The following command prints
94
+ the frontmatter a task document must carry:
95
+
96
+ ```
97
+ spoolway task contract
98
+ ```
99
+
100
+ ### 3. Queue
101
+
102
+ ```
103
+ spoolway queue
104
+ ```
105
+
106
+ <img src="docs/screenshots/queue.png" alt="the queue screen">
107
+
108
+ *The queue screen lists the groups on the left and previews the selected group's tasks on the
109
+ right — `enter` queues what is checked and offers to start dispatching on the spot. `g` gates
110
+ a task on the fly, `p` forks one across several pipelines as a trial, and `r` opens the
111
+ repeatable tasks you keep in `.spoolway/routines/`.*
112
+
113
+ ### 4. Dispatch
114
+
115
+ ```
116
+ spoolway dispatch # watch the board, and step in only where you are needed
117
+ ```
118
+
119
+ <img src="docs/screenshots/dispatch.png" alt="the dispatcher board">
120
+
121
+ *One row per task, grouped by `group:`. The board says what each lane is spending as it
122
+ spends it, what every queued task is waiting on, and which tasks are waiting on you — the
123
+ paused one above passed a gated step. Tasks can be paused and resumed from the board.*
124
+
125
+ Every task on the board is in one of a few states:
126
+
127
+ | State | Meaning |
128
+ |---|---|
129
+ | `queued` | Waiting for its dependencies and a free slot. |
130
+ | `running` | An agent is working the task's current step right now. |
131
+ | `waiting on you` | A lane ended its turn on a question; answering it is what moves the task. |
132
+ | `paused` | Passed a gated step; you decide whether it goes on. |
133
+ | `blocked` | Something needs a person. |
134
+ | `unreachable` | A task it depends on is blocked, so it cannot start until you clear that one. |
135
+ | `done` | Finished: the branch is handed over, the worktree removed, the task archived. |
136
+
137
+ ### 5. Calibrate
138
+
139
+ The `/spoolway-calibrate` skill reads your archived tasks and the spend ledger over them, and
140
+ works out what actually cost you loops and money — a prompt that keeps sending work back, a
141
+ step running on a model far bigger than it needs.
142
+
143
+ It walks each finding with you, with the arithmetic behind it. The ones you keep are cut
144
+ into tasks of their own, so the fix to your pipeline goes through the same line as
145
+ everything else. This is how a pipeline that blocks constantly turns into one that runs
146
+ unattended.
147
+
148
+ ## A task is what travels the line, and you define it
149
+
150
+ ```markdown
151
+ ---
152
+ id: sessions
153
+ title: feat(auth): add session tokens on top of login
154
+ group: auth
155
+ touches:
156
+ - src/auth/**
157
+ depends_on:
158
+ - login
159
+ ---
160
+ ## Context
161
+ ## Goal
162
+ ## Non-goals
163
+ ## Acceptance criteria
164
+ ## References
165
+ ```
166
+
167
+ **The frontmatter is spoolway's, the body is yours.** spoolway never reads the body; it is
168
+ what the agent works from, written from a skeleton you own.
169
+
170
+ ## The pipeline is a file
171
+
172
+ - Mix agents and commands
173
+ - Set model and effort levels per step
174
+ - Create loops and inject skills
175
+ - Re-use previous sessions until the context threshold is met
176
+
177
+ ```yaml
178
+ # .spoolway/pipelines/default.yml
179
+ steps:
180
+ - id: implement
181
+ description: Write the code to satisfy the task's acceptance criteria.
182
+ agent: pi
183
+ prompt: implementer
184
+ model: qwen3-coder-30b
185
+ session: true
186
+ on_pass: review
187
+ on_fail: blocked
188
+
189
+ - id: review
190
+ description: Check the diff against the acceptance criteria and project standards.
191
+ agent: claude
192
+ prompt: reviewer
193
+ model: claude-opus-5
194
+ effort: high
195
+ session: true
196
+ loop:
197
+ implement: 2
198
+ on_pass: document
199
+ on_fail: implement
200
+
201
+ - id: document
202
+ description: Bring the domain documents in line with what this task changed.
203
+ agent: pi
204
+ prompt: archivist
205
+ model: qwen3-coder-30b
206
+ on_pass: handover
207
+ on_fail: blocked
208
+
209
+ - id: handover
210
+ description: Commit, squash, push and open this task's pull request — no model,
211
+ no rebase. Nothing is merged here; a person lands it.
212
+ run: spoolway stack
213
+ on_pass: checks
214
+ on_fail: blocked
215
+
216
+ - id: checks
217
+ description: Wait for the pull request's checks, and fail if they are red.
218
+ run: gh pr checks --watch --fail-fast
219
+ timeout: 45m
220
+ on_pass: done
221
+ on_fail: blocked
222
+ ```
223
+
224
+ **You do not have to write one by hand.** The `/spoolway-pipeline` skill writes a pipeline
225
+ for you, and edits the one you already have.
226
+
227
+ ## Configurable per project
228
+
229
+ - Unattended mode delegates **`blocked`** tasks to a prompt you define. It clears
230
+ obstacles on its own and keeps your pipeline running while nobody is watching.
231
+ - Set specific models for generating pipelines or pull request summaries.
232
+
233
+ ```toml
234
+ skills = ["spoolway-plan"] # which skills `spoolway eval` gives a block of their own
235
+
236
+ [dispatch]
237
+ backend = "herdr" # herdr, tmux, or headless
238
+ herdr_mode = "split" # "split": a workspace per task; "grouped": one shared tab, a pane per task
239
+ interval = "10s"
240
+ lane_quiet = "15m" # silence before a lane is reminded to report
241
+ default_pipeline = "default" # which pipeline a task runs when it names none
242
+ auto_commit = true
243
+
244
+ [unattended]
245
+ enabled = true # the overnight switch
246
+ max_output_tokens = 0 # spend ceiling for a run with nobody watching; 0 is none
247
+ skip_blocked_lane = true # a cleared block carries the task past the step it blocked on
248
+ blocked_agent = "claude" # who staffs `blocked` when nobody is at the keyboard
249
+ blocked_model = "claude-opus-5"
250
+ blocked_effort = "medium"
251
+ blocked_prompt = "unblocker"
252
+
253
+ [pipeline_gen]
254
+ pipeline_agent = "claude" # who `spoolway pipeline gen` opens its session as
255
+ pipeline_model = "claude-opus-5"
256
+ pipeline_effort = "medium"
257
+ pipeline_auto = false # false asks before writing the pipeline
258
+ pipeline_local_models = false
259
+
260
+ [update]
261
+ check = true # tell a person at a keyboard that a newer release is out
262
+
263
+ [calibrate]
264
+ window = "14d" # how far back `/spoolway-calibrate` reads
265
+
266
+ [stack.summary]
267
+ agent = "claude" # writes each PR's title and summary
268
+ model = "claude-haiku-4-5" # blank: the task file itself is the PR body
269
+ prompt = "summariser"
270
+
271
+ [agents.pi]
272
+ kind = "pi"
273
+ session_reuse_ctx = 50 # % of the window before a carried session restarts fresh
274
+
275
+ [agents.claude]
276
+ kind = "claude"
277
+ concurrency = 3
278
+ session_reuse_ctx = 50
279
+ permission_mode = "auto"
280
+
281
+ [models."*qwen3-coder-30b*"]
282
+ context_window = 100096
283
+ slots = 3 # parallel lanes the local server can actually hold
284
+ exclusive = true # never alongside another exclusive model
285
+ ```
286
+
287
+ See **[Configuration](docs/configuration.md)**.
288
+
289
+ ## Eval every run
290
+
291
+ Every lane's transcript is read when it settles and banked to a ledger: tokens, cost, wall
292
+ time, and what the lane reported. Every edit to your pipelines, prompts or config mints a
293
+ new version, so you can see what your last change did to pass rate and price.
294
+
295
+ ```
296
+ spoolway eval
297
+ ```
298
+
299
+ <img src="docs/screenshots/eval.png" alt="the eval screen">
300
+
301
+ *The eval screen on its runs view, one row per attempt at a task — `tab` cycles the four
302
+ views: the version comparisons per pipeline and per step, this one, and what your skills
303
+ came to. `f` filters, `e` exports CSV.*
304
+
305
+ ## Documentation
306
+
307
+ See **[Documentation index](DOCS.md)**.
308
+
309
+ ## License
310
+
311
+ MIT. See [LICENSE](LICENSE).
Binary file
package/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@spoolway/win32-x64",
3
+ "version": "0.1.0",
4
+ "description": "spoolway binary for win32 x64",
5
+ "license": "MIT",
6
+ "author": "Marvin Gygas",
7
+ "os": [
8
+ "win32"
9
+ ],
10
+ "cpu": [
11
+ "x64"
12
+ ],
13
+ "files": [
14
+ "bin"
15
+ ],
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/marvingygas/spoolway.git"
19
+ }
20
+ }