whipped 0.0.1 → 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/README.md CHANGED
@@ -1,7 +1,205 @@
1
- # whipped
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/nxnom/whipped/develop/logo.png" width="120" alt="whipped logo" />
3
+ </p>
2
4
 
3
- Autonomous AI agent kanban board for Claude and Codex.
5
+ <h1 align="center">whipped</h1>
4
6
 
5
- Because the AI has no choice.
7
+ <p align="center">
8
+ Autonomous AI agent kanban board. You create tickets, the agents do the work — because they have no choice.
9
+ </p>
6
10
 
7
- ## Coming soon
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/whipped"><img src="https://img.shields.io/npm/v/whipped" alt="npm version" /></a>
13
+ <a href="https://www.npmjs.com/package/whipped"><img src="https://img.shields.io/npm/dm/whipped" alt="npm downloads" /></a>
14
+ </p>
15
+
16
+ ## Requirements
17
+
18
+ - Node.js ≥ 22
19
+ - A git repository (must be run from inside one)
20
+ - At least one supported agent installed and configured
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ npm install -g whipped
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ ```bash
31
+ # Open the board in the foreground (prints URL; use Ctrl+C to stop)
32
+ whipped
33
+ whipped --port 3000 # default: 50008
34
+ whipped --host 0.0.0.0 # default: 127.0.0.1
35
+
36
+ # Run as a detached background daemon
37
+ whipped start
38
+ whipped start --port 3000 --host 0.0.0.0
39
+
40
+ # Stop the daemon
41
+ whipped stop
42
+
43
+ # Restart the daemon
44
+ whipped restart
45
+
46
+ # Check daemon status (URL, PID, uptime)
47
+ whipped status
48
+
49
+ # Tail live logs
50
+ whipped logs -f
51
+ whipped logs -n 500 # last 500 lines (default: 200)
52
+
53
+ # Set or change the web UI login password
54
+ whipped auth set-password
55
+ ```
56
+
57
+ ## How it works
58
+
59
+ 1. Run `whipped` inside a git repository — starts a local server and opens the kanban board.
60
+ 2. Create a ticket, write a description, assign an agent.
61
+ 3. The agent picks up the task, works in an isolated git worktree, and updates the board as it progresses.
62
+ 4. Review the output in the live terminal view, then merge or reopen.
63
+
64
+ State is stored in `~/.whipped/`. Each agent session runs in its own worktree under `~/.whipped/worktrees/`.
65
+
66
+ ## Supported agents
67
+
68
+ | Agent | CLI binary | Notes |
69
+ |---|---|---|
70
+ | **Claude Code** | `claude` | Full MCP + hooks integration |
71
+ | **OpenAI Codex** | `codex` | TOML `-c` overrides for hooks and MCP |
72
+ | **OpenCode** | `opencode` | Any provider/model string |
73
+ | **Cursor Agent** | `agent` | Fetches live model list from CLI |
74
+
75
+ Whipped detects which agents are installed at startup and only shows available ones in the UI. Multiple agents can run concurrently on different tasks.
76
+
77
+ ### Model selection
78
+
79
+ - **Claude Code** — Opus 4.7, Opus 4.6, Sonnet 4.6, Sonnet 4.5, Haiku 4.5, or custom ID
80
+ - **Codex** — GPT-5.5, GPT-5.4, GPT-5.4 Mini, GPT-5.3 Codex, GPT-5.2, or custom
81
+ - **OpenCode** — free-form model string (any provider supported by opencode)
82
+ - **Cursor** — live model list fetched from the `agent models` CLI
83
+
84
+ ## Features
85
+
86
+ ### Kanban board
87
+
88
+ - Columns: **Backlog → In Progress → Ready for Review → Blocked → Reopened → Done**
89
+ - Card types: **task**, **story**, **subtask**
90
+ - Priority levels per card
91
+ - Card dependencies — a card can block another (`depends_on`) or wait for multiple cards (`waitsFor`)
92
+ - Drag-and-drop column management
93
+ - Per-card activity log tracking all status changes, PR links, and agent messages
94
+
95
+ ### Workflows
96
+
97
+ Workflows define a pipeline of agent slots that run sequentially on each task. Slot types:
98
+
99
+ - **Plan** — one-shot planner that runs before dev and saves a structured plan onto the card (visible in the **Plan** tab). Off by default.
100
+ - **Dev** — implements the task; the only slot with write access to the worktree.
101
+ - **Review** — one-shot reviewer. Multiple review slots can be chained (Dev → Review → Review…), each with its own prompt, tools, and model. A dedicated QA slot can be given **browser control** (Playwright MCP) to drive the running app during review.
102
+ - **Orchestrator** — story-only slot that breaks a story into subtasks and fires them as separate cards for dev agents to pick up.
103
+
104
+ Each slot is independently configurable with its own agent binary, model pairs, capability level, granted tools, and system prompt. Prompt instructions can also be loaded from an external `.md` file in the repo (linked via the slot editor), keeping long prompts version-controlled outside the UI.
105
+
106
+ #### Capability levels & multi-model slots
107
+
108
+ Each workflow slot holds a set of model **pairs**, every pair tagged with a capability level — **minimal, low, medium, high, max** — and a free/paid flag. The card carries one workflow-wide active level, and each slot resolves that level to its own pair (with nearest-level fallback and a free-first preference). This lets a single level knob drive different models per slot — e.g. a cheap model for review, a smarter one for dev.
109
+
110
+ The active level can be overridden per card before it starts, and the review agent can re-select it on reopen (e.g. drop a trivial fix to **minimal**) so follow-up runs don't burn the top tier.
111
+
112
+ ### Git worktree isolation
113
+
114
+ Each task runs in its own git worktree so multiple agents work in parallel without interfering. Branches follow the `task/<id>` naming convention. Dirty state is auto-committed as a WIP snapshot before review.
115
+
116
+ #### Worktree setup
117
+
118
+ Configure a per-project setup routine that runs every time a new worktree is created:
119
+
120
+ - **Install command** — e.g. `pnpm install --frozen-lockfile`
121
+ - **Files to copy** — dotfiles, `.env.local`, or any file that shouldn't be in version control but is needed to run the project
122
+ - **Start command** — launches the dev server so QA review slots can drive the running app
123
+
124
+ ### Delivery modes
125
+
126
+ Controls what happens after a card passes review:
127
+
128
+ - **Off** — card moves to Ready for Review and waits for a human to merge
129
+ - **Auto PR** — creates a GitHub pull request automatically
130
+ - **YOLO** — merges the branch directly into the base branch and pushes; no PR, no human approval
131
+
132
+ In YOLO mode, whipped serialises merges per base ref to prevent race conditions. If a merge hits conflicts, a conflict-resolution agent is spawned automatically to fix them before retrying.
133
+
134
+ ### Live terminal view
135
+
136
+ Every agent session streams its terminal output to the board UI in real time. Sessions are replayable from the card detail view after the agent has finished.
137
+
138
+ ### Memory system
139
+
140
+ A durable knowledge base that agents draw on across tasks so they stop re-discovering the same facts about the codebase.
141
+
142
+ - **Propose & approve** — agents propose memories during their work; a human approves before they become available to future runs
143
+ - **Scopes** — memories can be global (all projects) or scoped to a single project
144
+ - **Tags** — memories are tagged; each workspace subscribes to the tags its agents should recall
145
+ - **Search** — browse, filter, and manage the memory bank from Project Settings → Memory
146
+ - **Card recall** — agents can search memories relevant to the specific card they are working on
147
+
148
+ ### Recurring agents
149
+
150
+ Recurring agents run on a schedule to observe the project and report findings as kanban cards — no human trigger required.
151
+
152
+ - **Schedules** — interval-based (e.g. every 6 hours) or calendar cron with timezone support
153
+ - **Read-only by design** — no file writes or shell commands; findings are filed as backlog cards via `kanban_create_card` for the dev agent to pick up
154
+ - **Journal** — each agent keeps a private scratchpad that persists across runs so it avoids re-filing issues it already reported
155
+ - **Run history** — every run records status, a tail summary, and the full replayable terminal output
156
+ - **Configurable per agent** — each recurring agent picks its own model, capability level, and instructions independently of any workflow
157
+ - **Manual trigger** — "Run now" fires an out-of-schedule run without advancing the schedule
158
+
159
+ #### Secrets & external service access
160
+
161
+ Project secrets (see below) are injected into the agent's environment at run time, so recurring agents can authenticate against any external API. For Claude Code and Codex you can also point them at a custom MCP server — giving the agent structured tools to query third-party services rather than shelling out.
162
+
163
+ Combined, this makes recurring agents a general-purpose import layer. Examples:
164
+
165
+ - **Jira / Linear / Monday.com** — pull open issues from your project management tool and create matching backlog cards, skipping anything already in the journal
166
+ - **Sentry / Datadog** — surface new error spikes or alert regressions as `bug` cards ready for the dev agent
167
+ - **GitHub** — import issues, triage open PRs, or flag stale branches
168
+ - **Any REST API** — authenticate with a secret token and query whatever data your workflow needs
169
+
170
+ Pair a recurring agent with a secret token and the right instructions, and any external source of work becomes a first-class citizen on the board.
171
+
172
+ ### Secrets management
173
+
174
+ Per-project secrets (API keys, tokens) are stored locally, encrypted at rest, and injected into every agent's environment at run time. A `.env` paste UI lets you bulk-import from an existing env file. `GITHUB_TOKEN` is a built-in key with special handling (PR creation, polling).
175
+
176
+ ### GitHub integration
177
+
178
+ - Auto-creates pull requests when a dev slot completes (requires `GITHUB_TOKEN`)
179
+ - Links cards to GitHub issues
180
+ - Posts PR status updates as card activity
181
+ - Polls open PRs for review comments and syncs them back as inline card comments
182
+
183
+ ### Slack integration
184
+
185
+ - Sends notifications to a channel when cards are created, change status, get a PR, or receive review comments
186
+ - Setup wizard creates and installs the Slack app from a single token — no manual OAuth configuration
187
+ - Requires the **Tunnel** feature (below) to receive Slack event callbacks when the board isn't publicly reachable
188
+
189
+ ### Tunnel
190
+
191
+ Whipped can start a [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) to expose the local server publicly, enabling inbound webhooks from Slack, GitHub, or any external service. The tunnel can be set to start automatically with the daemon. Setup is guided from Global Settings → Tunnel.
192
+
193
+ ### Browser extension — prompt creator
194
+
195
+ A standalone Chrome/Chromium extension for capturing UI context off any web page. Click the toolbar icon to enter select mode, then click any element to capture its React component and source location. It builds a ready-to-paste **YAML prompt** for your AI coding agent — no server connection required.
196
+
197
+ Available at [github.com/nxnom/whipped-extension](https://github.com/nxnom/whipped-extension).
198
+
199
+ ### Visual comments
200
+
201
+ Comments on a card can carry visual context — a page URL plus the specific UI elements captured from a page — pasted straight into the composer. Whipped renders the captured elements inline so the agent sees exactly which parts of the UI a comment refers to.
202
+
203
+ ### Multi-project support
204
+
205
+ Run whipped once per git repository, or manage multiple workspaces from a single board instance. Each workspace has its own board state, config, agent history, secrets, and memory bank.