Skip to content

Commit 1e64ca1

Browse files
author
lpb-docs
committed
docs: describe the current state, not the change history
Sweep of all tracked docs for a new user: facts now match the de-forked stack, the 7-step setup wizard, and the release tooling. - README: Pi row/node/update-flow row de-forked (npm at LPB_PI_VERSION); fork table drops the retired pi row; CI tags 4 repos; Dockerfile + stack.env structure comments; wizard steps include MCP servers; related-repo pi entry marked retired - CONTRIBUTING: pi row -> upstream npm (not a stack repo) - lpb-devstack: docs review via local http.server (mike serve serves the stale gh-pages branch); promote repo list drops pi - config-repo: skills tree + list gain lemonade-model-params; vision-analysis example no longer names a specific model - lpb-config / lpb-cli: setup wizard step list includes MCP servers - lpb-devstack promote + install-browser: formatting fix (orphaned use-case list gets its own heading) - install-openspec: 5-repo stack - manual-tagging: point-in-time design-record banner with pointers to the current lpb-devstack/lpb-config references - fork-improvements: MTP/FLM model ids marked as examples - repo-workflow skill: review command aligned with docs skill
1 parent ca3c2fc commit 1e64ca1

11 files changed

Lines changed: 43 additions & 26 deletions

File tree

.pi/skills/localpibox-repo-workflow/SKILL.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ docs sync + review happens at release time via `docs-ready`.
132132

133133
```bash
134134
# 0. Flag docs as reviewed for the release (merge dev→docs, build site,
135-
# review with `cd ~/.lpb-stack/docs-preview && mike serve`, confirm →
135+
# review the local build with
136+
# `cd ~/.lpb-stack/docs-preview && python3 -m http.server 8000 -d site` →
137+
# http://localhost:8000, confirm →
136138
# commits DOCS_READY=<stable-version> on the docs branch + pushes)
137139
lpb-devstack release docs-ready
138140

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ has its own scope:
1818
|---|---|
1919
| [devstack](https://github.com/lpb-stack/devstack) | Container image (`Dockerfile`), `lpb` launcher (`scripts/`), entrypoints (`support/`), CI |
2020
| [config](https://github.com/lpb-stack/config) | Pi settings, MCP servers, custom skills, subagents presets |
21-
| [pi](https://github.com/lpb-stack/pi) | Qwen `reasoning_effort` + context-overflow patches (fork) |
21+
| [pi](https://github.com/earendil-works/pi) | Upstream of the coding agent core — installed from npm at `LPB_PI_VERSION`, not a stack repo since the 2026-08-31 de-fork; patches go upstream |
2222
| [lemonade-pi-plugin](https://github.com/lpb-stack/lemonade-pi-plugin) | Qwen thinking + vision support (fork) |
2323
| [pi-subagents](https://github.com/lpb-stack/pi-subagents) | Centralized subagent model registry (fork) |
2424
| [lpb-memory](https://github.com/lpb-stack/lpb-memory) | Persistent memory / session search extension |

README.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ On the **first run** — in every mode (`lpb`, `--shell`, `--ssh`, `--web`) —
3434
`lpb` checks the model-provider state (stored credentials + a live probe of
3535
the Lemonade server). If it's missing or broken and you're on a terminal,
3636
the **setup wizard** runs before the container starts: config repo, server
37-
URL, API key, default model (from the server's live model list) and
38-
lpb-memory config — every step validated, with errors shown and re-asked
37+
URL, API key, default model (from the server's live model list), MCP
38+
servers, and lpb-memory config — every step validated, with errors shown and
39+
re-asked
3940
until they're right. The configuration is written straight into the state
4041
volume, so it's persisted **before first use**; the launch summary ends with
4142
a model status line.
@@ -68,7 +69,7 @@ lpb --help # full usage
6869

6970
| Component | Role |
7071
|---|---|
71-
| **Pi** (forked) | Coding agent CLI — local fork with Qwen reasoning + context-overflow patches |
72+
| **Pi** | Coding agent CLI — mainstream pi from the npm registry (pinned in `lpb.stack.env`); Qwen thinking is handled by the lemonade plugin |
7273
| **VSCodium** | Web-based editor (`:web` image), connects over the OpenVSCode protocol |
7374
| **lemonade-pi-plugin** (forked) | Model provider for the local **Lemonade** server — Qwen thinking + vision support |
7475
| **lpb-memory** | Persistent memory + session search for the agent |
@@ -91,7 +92,7 @@ flowchart LR
9192
9293
subgraph Image["ghcr.io/lpb-stack/devstack<br/>(Ubuntu 26.04 + Node.js 24)"]
9394
direction TB
94-
RT["runtime: Pi (forked, patched) + VSCodium + Chrome"]
95+
RT["runtime: Pi (npm) + VSCodium + Chrome"]
9596
CF["extensions (lemonade, memory, subagents) + config preset"]
9697
end
9798
@@ -194,26 +195,29 @@ flowchart TB
194195
| `lpb` launcher | `lpb --update` self-update (branch follows the selected tag) |
195196
| Extensions | Runtime — `pi update --extensions` (unpinned packages) |
196197
| Config preset | `lpb-config update` (git pull of the config repo) |
197-
| Pi core + patches | Baked into the image — rebuilt by CI |
198+
| Pi core | Baked into the image from the npm registry (`LPB_PI_VERSION`) — a new version means a CI rebuild |
198199

199200
## Forked Repos & Upstream Policy
200201

201-
Fork URLs and branches are tracked in `lpb.stack.env` at the repo root.
202-
Each fork keeps its LocalPibox work as clean commits on top of upstream
203-
merges, so the delta vs upstream can always be extracted as one patch.
202+
Pi itself is no longer a fork: the image installs mainstream pi from the
203+
npm registry at `LPB_PI_VERSION` (the `lpb-stack/pi` fork is retired — see
204+
[Fork improvements](doc/fork-improvements.md) for the retirement note).
205+
206+
The remaining fork URLs and branches are tracked in `lpb.stack.env` at the
207+
repo root. Each fork keeps its LocalPibox work as clean commits on top of
208+
upstream merges, so the delta vs upstream can always be extracted as one
209+
patch.
204210

205211
| Repo | Upstream | LocalPibox work | Update policy |
206212
|---|---|---|---|
207-
| **pi** | `earendil-works/pi` (v0.84.3) | Qwen `reasoning_effort` + context-overflow patches | rebase onto new upstream releases |
208213
| **lemonade-pi-plugin** | `lemonade-sdk/lemonade-pi-plugin` (no stable release) | Qwen thinking + vision support | follow upstream `main`, check periodically |
209214
| **pi-subagents** | `tintinweb/pi-subagents` (v0.16.1) | centralized local-first subagent model registry | follow upstream; merge + repair as needed |
210215
| **lpb-memory** | *(independent project)* | Pi memory extension (subprocess reviews) | no upstream to track |
211216
| **config** / **devstack** || own | own |
212217

213218
Patches are **candidate upstream contributions** — they go upstream only if
214219
generally useful and not too opinionated for this stack. See
215-
[Fork improvements](doc/fork-improvements.md) for the full patch-by-patch
216-
breakdown.
220+
[Fork improvements](doc/fork-improvements.md) for what each fork adds.
217221

218222
### Forking & repointing this stack
219223

@@ -234,7 +238,7 @@ GitHub Actions (`.github/workflows/build-and-publish.yml`) runs on:
234238
Versioning is **manual**: `lpb-devstack bump` commits a new `VERSION`, and CI
235239
builds + tags only when VERSION changed in the pushed commit. Pipeline jobs:
236240
**VERSION check****test** (always) → **build & publish images**
237-
**tag repos** (CI tags the other 5 stack repos on their pipeline branches) →
241+
**tag repos** (CI tags the other 4 stack repos on their pipeline branches) →
238242
**docs publish** (main pipeline only — publishes the stable docs version,
239243
gated on the docs being flagged ready via `lpb-devstack release docs-ready`
240244
before promotion) → **status**. Devstack itself is tracked by its `VERSION`
@@ -285,8 +289,8 @@ lpb --update # self-update launcher + pull the latest image for your pipeli
285289

286290
```
287291
devstack/
288-
├── Dockerfile # image build (pi clone, VSCodium, Chrome)
289-
├── lpb.stack.env # fork URLs, image names, container identity
292+
├── Dockerfile # image build (pi from npm, VSCodium, Chrome)
293+
├── lpb.stack.env # stack identity: config repo, pi version, images, container name
290294
├── lpb.conf.env # runtime defaults (baked into the image)
291295
├── .env.example # template for per-project .env (LPB_ vars)
292296
├── scripts/ # CLIs + shared package (single source, baked to
@@ -308,7 +312,7 @@ devstack/
308312

309313
- [Documentation site](https://lpb-stack.github.io/devstack/) — one version
310314
per stable release (served from the `docs` branch)
311-
- [lpb-stack/pi](https://github.com/lpb-stack/pi)Pi monorepo fork
315+
- [lpb-stack/pi](https://github.com/lpb-stack/pi)retired pi fork (reference only; last state `pre-defork-0.0.71`)
312316
- [lpb-stack/config](https://github.com/lpb-stack/config) — agent config preset
313317
- [lpb-stack/lemonade-pi-plugin](https://github.com/lpb-stack/lemonade-pi-plugin) — Lemonade provider plugin
314318
- [lpb-stack/pi-subagents](https://github.com/lpb-stack/pi-subagents) — subagent model registry

doc/config-repo.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ boot by `start.sh`.
2222
├── skills/
2323
│ ├── agent-browser-mcp-integration/
2424
│ ├── browser-validation/
25+
│ ├── lemonade-model-params/
2526
│ └── mcp-vision-analysis/
2627
├── agents/
2728
│ ├── vision-analysis.md → visual analysis subagent
@@ -128,8 +129,8 @@ The `agents/` directory defines **subagent model configurations**. Each
128129
- The system prompt and tools available
129130
- How the subagent should behave
130131

131-
For example, `vision-analysis.md` defines a subagent that uses the
132-
local Qwen3.6 vision model to analyze browser screenshots.
132+
For example, `vision-analysis.md` defines a subagent that opens a page,
133+
takes a screenshot, and analyzes the image with the session's vision model.
133134

134135
## Skills Directory
135136

@@ -139,6 +140,7 @@ and the pitfalls. The config repo ships:
139140

140141
- `agent-browser-mcp-integration` — browser automation with agent-browser MCP
141142
- `browser-validation` — automated browser validation pipeline with JSON reports
143+
- `lemonade-model-params` — tuning lemonade-served models (wire IDs, per-model params, vendor settings)
142144
- `mcp-vision-analysis` — visual page analysis with the local vision model
143145

144146
(Workspace-level skills, such as `localpibox-repo-workflow`, live in the

doc/fork-improvements.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ The delta is always visible as the diff between upstream and `lpb-dev`.
142142

143143
| Backend | Reasoning Support | Why |
144144
|---|---|---|
145-
| **MTP** (`Qwen3.6-35B-A3B-MTP-GGUF`) | ✅ Yes | Uses newer chat template that accepts `developer` role |
146-
| **FLM** (`qwen3.5-9b-FLM`, `qwen3.6-moe-35b-a3b-FLM`) | ❌ No | Chat template only accepts `system/user/assistant/tool` roles |
145+
| **MTP** (e.g. `Qwen3.6-35B-A3B-MTP-GGUF`) | ✅ Yes | Uses newer chat template that accepts `developer` role |
146+
| **FLM** (e.g. `qwen3.5-9b-FLM`) | ❌ No | Chat template only accepts `system/user/assistant/tool` roles |
147147

148148
---
149149

doc/install-browser.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ Running `agent-browser install --with-deps` directly downloads a system Chrome a
2323
- **Exec bit self-healing** — Python's `zipfile.extractall()` drops Unix exec bits; `install-browser` detects and restores them automatically (Chrome crashes at startup if `chrome_crashpad_handler` is not executable)
2424
- **Container config merging** — writes `~/.agent-browser/config.json` with container-safe launch args, **merged** into any existing config (preserves user customizations)
2525
- **Version tracking** — installs from the same version JSON API that Playwright uses, keeping Chrome in sync with agent-browser's expectations
26+
27+
### Use cases
28+
2629
- Visual testing of web apps
2730
- Browser-based validation (login flows, form submission, UI testing)
2831
- Capturing screenshots and accessibility audits

doc/install-openspec.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ OpenSpec enables spec-driven development for the LocalPibox stack:
277277
- Audit trail of all changes
278278

279279
This is particularly valuable for:
280-
- Managing the 6-repo stack (each repo has specs)
280+
- Managing the 5-repo stack (each repo has specs)
281281
- Tracking breaking changes across upstream updates
282282
- Ensuring consistency between fork patches and upstream
283283
- Documenting rationale for design decisions

doc/lpb-cli.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ HTTP probe of the Lemonade server), not a one-shot first-boot flag:
102102

103103
- **healthy** → silent; the stored URL/key are passed to the container.
104104
- **missing or broken + TTY** → the **setup wizard** runs (config repo →
105-
server URL → API key → default model → lpb-memory config). Every step is
105+
server URL → API key → default model → MCP servers → lpb-memory config). Every step is
106106
validated live (real HTTP probes) and failures loop back with the raw
107107
error visible; `a` continues anyway (flagged), `q` aborts (nothing is
108108
written, no container starts). The wizard writes `auth.json`,

doc/lpb-config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ see [lpb-devstack reference](lpb-devstack.md).
5151

5252
| Command | Description |
5353
|---|---|
54-
| `lpb-config setup` | The **same wizard** as `lpb setup` on the host: config repo, lemonade provider (auth.json), default model (settings.json), lpb-memory config. Every step is validated live (HTTP probes); failures loop with the error visible. Re-run any time to correct a bad configuration — current values are pre-filled. `--reconfigure` forces a re-run |
54+
| `lpb-config setup` | The **same wizard** as `lpb setup` on the host: config repo, lemonade provider (auth.json), default model (settings.json), MCP servers (mcp.json), lpb-memory config. Every step is validated live (HTTP probes); failures loop with the error visible. Re-run any time to correct a bad configuration — current values are pre-filled. `--reconfigure` forces a re-run |
5555
| `lpb-config setup --non-interactive` | Same, no prompts — `LEMONADE_BASE_URL` / `LEMONADE_API_KEY` env + defaults. First failure aborts with a precise error and writes nothing. This is the `start.sh` fallback for boots where the host wizard did not run |
5656
| `lpb-config check` | Validate the installation (read-only checklist: config repo, settings, credentials, live server probe) — the in-container twin of `lpb doctor` |
5757

doc/lpb-devstack.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ promoting:
7575

7676
1. `lpb-devstack release docs-ready` — merges `origin/dev``docs`, builds
7777
the site, and (after your local review via
78-
`cd ~/.lpb-stack/docs-preview && mike serve`) commits
78+
`cd ~/.lpb-stack/docs-preview && python3 -m http.server 8000 -d site`
79+
http://localhost:8000) commits
7980
`DOCS_READY=<stable-version>` on the `docs` branch and pushes it
8081
2. `release status` shows the docs verdict: `READY` / `MISSING` /
8182
`WRONG-VERSION` (flag for another version) / `STALE` (doc content changed
@@ -87,7 +88,7 @@ promoting:
8788
`https://lpb-stack.github.io/devstack/<version>/`
8889

8990
`promote` does per repo (dev branch → stable branch: `dev``main` for
90-
devstack/config/lpb-memory, `lpb-dev``lpb` for pi/pi-subagents/
91+
devstack/config/lpb-memory, `lpb-dev``lpb` for pi-subagents/
9192
lemonade-pi-plugin):
9293
- **Fast-forward / clean merge**: resets the local stable branch to
9394
`origin/<stable>`, merges `origin/<dev>`, pushes

0 commit comments

Comments
 (0)