loki-mode 10.7.1 → 10.9.1
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 +2 -2
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/loki +20 -32
- package/autonomy/run.sh +9 -5
- package/autonomy/tui.sh +5 -1
- package/dashboard/__init__.py +1 -1
- package/dashboard/api_phases.py +1 -1
- package/dashboard/api_start.py +0 -1
- package/dashboard/server.py +28 -146
- package/docs/COCKPIT-SPEC.md +3 -1
- package/docs/DASHBOARD-9.12-EVIDENCE.md +1 -1
- package/docs/DASHBOARD-ARCHITECTURE.md +13 -11
- package/docs/DASHBOARD_V2_CHECKLIST.md +2 -0
- package/docs/INSTALLATION.md +12 -11
- package/docs/MERGE-DEDUP-MAP.md +1 -1
- package/docs/MERGE-ROUTE-MAP.md +1 -1
- package/docs/MERGE3-PLAN.md +2 -2
- package/docs/R3-COST-OBSERVABILITY-DESIGN.md +2 -2
- package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +1 -1
- package/docs/R5-AUTO-WIKI-DESIGN.md +1 -1
- package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +1 -1
- package/docs/RARV-C-100X-PLAN.md +3 -3
- package/docs/SONNET5-DEFAULT-PLAN.md +2 -2
- package/docs/SYNERGY-TASKS.md +1 -1
- package/docs/TOOL-INTEGRATION.md +1 -1
- package/docs/TOP-100-BACKLOG.md +1 -1
- package/docs/alternative-installations.md +1 -1
- package/docs/architecture/ADR-001-runtime-migration.md +1 -1
- package/docs/architecture/DASHBOARD_V2_ARCHITECTURE.md +2 -0
- package/docs/audit-logging.md +2 -0
- package/docs/authentication.md +2 -0
- package/docs/authorization.md +2 -0
- package/docs/certification/02-enterprise-features/lab.md +2 -0
- package/docs/certification/02-enterprise-features/lesson.md +2 -0
- package/docs/certification/04-production-deployment/lab.md +2 -0
- package/docs/certification/04-production-deployment/lesson.md +2 -0
- package/docs/control-plane-migration.md +97 -0
- package/docs/dashboard-guide.md +6 -7
- package/docs/dev/release-checklist.md +9 -11
- package/docs/enterprise/integration-cookbook.md +2 -0
- package/docs/enterprise/migration.md +1 -1
- package/docs/enterprise/performance.md +3 -1
- package/docs/enterprise/sdk-guide.md +2 -0
- package/docs/enterprise/security.md +2 -0
- package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +2 -2
- package/docs/research-2026-07/OBSERVABILITY-TOOL-SPEC.md +1 -1
- package/docs/retrospectives/v7.5.15-honesty-audit.md +2 -2
- package/docs/test-scenarios/enterprise-scenarios.md +2 -2
- package/docs/v10/ARCHITECT-CUTS.md +9 -9
- package/docs/v10/BACKLOG.md +7 -7
- package/docs/v10/BOARD.md +25 -25
- package/docs/v10/CONTROL-PLANE.md +4 -4
- package/docs/v10/CP-ENTERPRISE-UI.md +270 -9
- package/docs/v10/D51-PHASE-B.md +1 -1
- package/docs/v10/DECISIONS.md +3 -3
- package/docs/v10/DEPS.md +10 -10
- package/docs/v10/FAILURE-CLASSES.md +66 -1
- package/docs/v10/LEGACY-REMOVAL.md +2 -2
- package/docs/v10/METRICS.md +6 -0
- package/docs/v10/SWARM.md +2 -2
- package/loki-ts/data/model-pricing.json +6 -6
- package/loki-ts/dist/cockpit.js +11 -11
- package/loki-ts/dist/loki.js +819 -809
- package/loki-ts/package.json +1 -1
- package/magic/core/design_tokens.py +1 -2
- package/magic/core/generator.py +2 -2
- package/magic/tokens/README.md +1 -3
- package/mcp/__init__.py +1 -1
- package/package.json +3 -8
- package/packages/control-plane/dist/server.js +17954 -5696
- package/packages/control-plane/drizzle/0004_cpe03_local_repos_actions.sql +17 -0
- package/packages/control-plane/drizzle/meta/0004_snapshot.json +542 -0
- package/packages/control-plane/drizzle/meta/_journal.json +9 -2
- package/packages/control-plane/package.json +4 -1
- package/packages/control-plane/src/db/schema.ts +19 -0
- package/packages/control-plane/src/server/app.ts +11 -22
- package/packages/control-plane/src/server/audit.ts +15 -0
- package/packages/control-plane/src/server/auth.ts +7 -1
- package/packages/control-plane/src/server/legacy/routes-audit.ts +50 -0
- package/packages/control-plane/src/server/legacy/routes-control.ts +26 -0
- package/packages/control-plane/src/server/legacy/routes-memory.ts +30 -0
- package/packages/control-plane/src/server/legacy/routes-metrics.ts +18 -0
- package/packages/control-plane/src/server/legacy/routes.ts +237 -0
- package/packages/control-plane/src/server/legacy/shim.ts +201 -0
- package/packages/control-plane/src/server/repos.ts +27 -0
- package/packages/control-plane/src/server/routes/artifacts.ts +104 -0
- package/packages/control-plane/src/server/routes/audit.ts +17 -0
- package/packages/control-plane/src/server/routes/checkpoints.ts +171 -0
- package/packages/control-plane/src/server/routes/config.ts +319 -0
- package/packages/control-plane/src/server/routes/control.ts +75 -0
- package/packages/control-plane/src/server/routes/cost.ts +70 -0
- package/packages/control-plane/src/server/routes/cost_ledger.ts +210 -0
- package/packages/control-plane/src/server/routes/fleet.ts +101 -0
- package/packages/control-plane/src/server/routes/index.ts +71 -0
- package/packages/control-plane/src/server/routes/integrations.ts +123 -0
- package/packages/control-plane/src/server/routes/memory.ts +219 -0
- package/packages/control-plane/src/server/routes/merge_risk.ts +209 -0
- package/packages/control-plane/src/server/routes/metrics.ts +93 -0
- package/packages/control-plane/src/server/routes/notify.ts +48 -0
- package/packages/control-plane/src/server/routes/providers.ts +111 -0
- package/packages/control-plane/src/server/routes/session_control.ts +155 -0
- package/packages/control-plane/src/server/routes/start.ts +39 -0
- package/packages/control-plane/src/server/routes/stats.ts +76 -0
- package/packages/control-plane/src/server/routes/stream.ts +85 -0
- package/packages/control-plane/src/server/routes/verify.ts +66 -0
- package/packages/control-plane/src/server/spawn.ts +79 -0
- package/packages/control-plane/src/shipper/discover.ts +19 -1
- package/packages/control-plane/ui/dist/assets/index-BQbFv65M.css +1 -0
- package/packages/control-plane/ui/dist/assets/index-Dbhu244h.js +155 -0
- package/packages/control-plane/ui/dist/index.html +2 -2
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/references/magic-modules-patterns.md +2 -2
- package/skills/factory-operations.md +3 -3
- package/skills/magic-modules.md +1 -1
- package/skills/release-cadence.md +1 -1
- package/tools/audit-docs.py +1 -1
- package/tools/index-codebase.py +1 -1
- package/web-app/dist/assets/{AdminPage-BJSU5hY1.js → AdminPage-DqMnfZrH.js} +1 -1
- package/web-app/dist/assets/{Avatar-CSOSpw9c.js → Avatar-BEof29du.js} +1 -1
- package/web-app/dist/assets/{Badge-COr7vj0D.js → Badge-WD53OL5m.js} +1 -1
- package/web-app/dist/assets/{Button-DGoWFERp.js → Button-Rzk5flhU.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-CBpWkNXY.js → CockpitPage-Bqz3PCMh.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BwT8vqrL.js → ComparePage-Byo2NzAZ.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-D7SicDDA.js → ErrorBoundary-BuE0kH3W.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-bx-5liG2.js → EvidenceReceiptPanel-CKFHOPBx.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-BAeeWLqY.js → GitHubIssuesPanel-Df_kTMqI.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-CssD8lGI.js → GitHubPRsPanel-CouvcKrZ.js} +1 -1
- package/web-app/dist/assets/{HomePage-SL5PT3m5.js → HomePage-dEpLzj0x.js} +2 -2
- package/web-app/dist/assets/{LoginPage-C8hFOZOM.js → LoginPage-6DVjUND5.js} +1 -1
- package/web-app/dist/assets/{MagicPage-xHbHkrPf.js → MagicPage-BDQ9MOfY.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-B_2CKFcC.js → MetricsPage-CXiJ04G_.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-CXwXMq35.js → NotFoundPage-BaXhZvyj.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-AaisMQI-.js → ProjectPage-BzE4V7Ti.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-Cej5ResX.js → ProjectsPage-ipf6TLMX.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-DKv4mn9H.js → SettingsPage-BDxkUKN6.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-Dkiyzne4.js → ShowcasePage-YQXD72SM.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-DaBLQ5dU.js → SystemSettingsPage-Dou7zHS0.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-B2yUr31k.js → TeamsPage-CQarfcYr.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-CfYiANhU.js → TemplatesPage-CPi1R8Xj.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-CMXoexLM.js → TerminalOutput-WiGhWdYD.js} +1 -1
- package/web-app/dist/assets/{activity-B0dzoZtY.js → activity-DOa7ejQA.js} +1 -1
- package/web-app/dist/assets/{bell-DFOTaSoo.js → bell-CX-VAlYN.js} +1 -1
- package/web-app/dist/assets/{bot-Dz-WSQyP.js → bot-EDXaZmHc.js} +1 -1
- package/web-app/dist/assets/{check-L1QIRueJ.js → check-CnBdKk3L.js} +1 -1
- package/web-app/dist/assets/{chevron-left-1TrnIEZS.js → chevron-left-BJ_ydRQW.js} +1 -1
- package/web-app/dist/assets/{circle-alert-8Bf6xEDx.js → circle-alert-tz8ufhc_.js} +1 -1
- package/web-app/dist/assets/{clock-DB8NE6P5.js → clock-DFBZPSsH.js} +1 -1
- package/web-app/dist/assets/{cloud-DUSL3wZS.js → cloud-uy3p_5Q7.js} +1 -1
- package/web-app/dist/assets/{code-xml-DbjryWNl.js → code-xml-3CbYD9YL.js} +1 -1
- package/web-app/dist/assets/{database-DrezrMSs.js → database-YiNBXc9c.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-CGbaLMzR.js → dollar-sign-D0wBa4Cv.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-Dfypa-r4.js → file-code-corner-DDdZVZ5v.js} +1 -1
- package/web-app/dist/assets/{file-plus-CzV5L2Gd.js → file-plus-D09LTBqt.js} +1 -1
- package/web-app/dist/assets/{globe-BoYjTwPQ.js → globe-BirTPwff.js} +1 -1
- package/web-app/dist/assets/{hammer-WO-HuiyJ.js → hammer-DaE5qgnd.js} +1 -1
- package/web-app/dist/assets/{index-CjIOUjnd.js → index-D8t7KnQf.js} +3 -3
- package/web-app/dist/assets/{layers-Bn6jtKNk.js → layers-DVVrckRY.js} +1 -1
- package/web-app/dist/assets/{loader-circle-gERWRnmW.js → loader-circle-2-nMGmcb.js} +1 -1
- package/web-app/dist/assets/{lock-BIiMLJq8.js → lock-D0Xj43pC.js} +1 -1
- package/web-app/dist/assets/{package-dLvDSVys.js → package-BB7S3egm.js} +1 -1
- package/web-app/dist/assets/{plus-BHM3ZLhZ.js → plus-BLhoMrn3.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-BAp_alv6.js → refresh-cw-DMc2uPLw.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-CBhwq_MG.js → rotate-ccw-DM3IP9x7.js} +1 -1
- package/web-app/dist/assets/{scroll-text-DoS-6dfU.js → scroll-text-lH2uW7rB.js} +1 -1
- package/web-app/dist/assets/{server-5JgdDWQO.js → server-BkerZcdR.js} +1 -1
- package/web-app/dist/assets/{shield-alert-DjmlLT34.js → shield-alert-B8ohcUfu.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-BtiEXl3p.js → thumbs-up-CTIxLzPD.js} +1 -1
- package/web-app/dist/assets/{trash-2-ClsWU_Vg.js → trash-2-C3zIpsH5.js} +1 -1
- package/web-app/dist/assets/{trending-down-DPS4M7_X.js → trending-down-BTT7wV4Y.js} +1 -1
- package/web-app/dist/assets/{trending-up-D6OJ38-V.js → trending-up-BzHdCDvF.js} +1 -1
- package/web-app/dist/assets/{upload-DOCzLUpF.js → upload-HxR34-A8.js} +1 -1
- package/web-app/dist/assets/{usePolling-CljQTWj_.js → usePolling-DDj6Fupy.js} +1 -1
- package/web-app/dist/assets/{user-C0G82Weu.js → user-qH5y9yNy.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/dashboard/static/assets/mermaid.min.js +0 -2030
- package/dashboard/static/cost.html +0 -344
- package/dashboard/static/favicon.svg +0 -5
- package/dashboard/static/index.html +0 -15577
- package/dashboard/static/proofs.html +0 -194
- package/dashboard/static/start.html +0 -131
- package/dashboard/static/trust.html +0 -325
- package/packages/control-plane/src/server/actions.ts +0 -60
- package/packages/control-plane/ui/dist/assets/index-DHDI_dHM.css +0 -1
- package/packages/control-plane/ui/dist/assets/index-DaQr0MPS.js +0 -129
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The flagship product of [Autonomi](https://www.autonomi.dev/). Loki Mode is a spec-driven autonomous builder with a built-in trust layer that takes any spec to a deployed product and verifies completion with evidence (quality gates plus a completion council), not just a "done" claim. Complete installation instructions for all platforms and use cases.
|
|
4
4
|
|
|
5
|
-
**Version:** v10.
|
|
5
|
+
**Version:** v10.9.1
|
|
6
6
|
|
|
7
7
|
**Engine note:** `loki "<task>"`, `loki owner/repo#N` and `loki quick` run the Loki 10 engine. `loki start` still routes to the legacy engine, which is being removed (planned work resumes 2026-10-07); prefer `loki owner/repo#N`. See [docs/v10/GUIDE.md](v10/GUIDE.md).
|
|
8
8
|
|
|
@@ -294,7 +294,7 @@ trade-offs.
|
|
|
294
294
|
## VS Code Extension (Deprecated)
|
|
295
295
|
|
|
296
296
|
> **DEPRECATED as of v7.2.0.** The Loki Mode VS Code extension is no longer
|
|
297
|
-
> maintained. Use the
|
|
297
|
+
> maintained. Use the Control Plane (`loki dashboard`) instead.
|
|
298
298
|
>
|
|
299
299
|
> The marketplace listing remains for users on v7.2.0 and earlier but will
|
|
300
300
|
> not receive further updates. The `vscode-extension/` source remains in the
|
|
@@ -305,8 +305,8 @@ trade-offs.
|
|
|
305
305
|
### Recommended replacement: the dashboard
|
|
306
306
|
|
|
307
307
|
```bash
|
|
308
|
-
loki dashboard
|
|
309
|
-
#
|
|
308
|
+
loki dashboard
|
|
309
|
+
# Opens the Control Plane (default http://127.0.0.1:47821).
|
|
310
310
|
```
|
|
311
311
|
|
|
312
312
|
The dashboard provides session monitoring, task views, the completion
|
|
@@ -450,7 +450,7 @@ behave exactly like the local `loki` CLI. Auth is auto-detected:
|
|
|
450
450
|
(Max/Pro subscribers need no API key), else an honest error with guidance. It
|
|
451
451
|
also forwards `~/.gitconfig` and `~/.config/gh` (read-only) plus
|
|
452
452
|
`GITHUB_TOKEN`/`GH_TOKEN` if set, so commits and PRs work like local, and
|
|
453
|
-
exposes the
|
|
453
|
+
exposes the API on port 57374. Use `--image IMG` to override the image.
|
|
454
454
|
|
|
455
455
|
`loki docker` is a thin host wrapper around the image; it requires loki and
|
|
456
456
|
Docker installed on the host.
|
|
@@ -459,7 +459,7 @@ Multi-repo + unified dashboard: you can run `loki docker start` in several
|
|
|
459
459
|
different repos at once, exactly like the host CLI. Each repo gets its own
|
|
460
460
|
container (deterministic name `loki-<hash-of-path>`) and its own bind-mounted
|
|
461
461
|
`.loki/` state. Every `loki docker` project registers with the host dashboard,
|
|
462
|
-
so running `loki dashboard` on the host shows ALL your projects in one unified
|
|
462
|
+
so running `loki dashboard` on the host (the Control Plane) shows ALL your projects in one unified
|
|
463
463
|
view, whether they run via local `loki start` or via `loki docker start`. Builds
|
|
464
464
|
run with the dashboard off by default (so concurrent runs do not collide on port
|
|
465
465
|
57374); use the host `loki dashboard`, or `loki docker start --api` for a single
|
|
@@ -775,11 +775,12 @@ Loki Mode uses two network ports for different services:
|
|
|
775
775
|
|
|
776
776
|
| Port | Service | Description |
|
|
777
777
|
|------|---------|-------------|
|
|
778
|
-
| **
|
|
778
|
+
| **47821** | Control Plane UI + API | The only UI, plus the `/v1/*` API. Started by `loki control serve` or `loki dashboard`. See [control-plane-migration.md](control-plane-migration.md). |
|
|
779
|
+
| **57374** | Legacy API (FastAPI) | The classic dashboard UI is removed in 10.8; this port no longer serves a UI. |
|
|
779
780
|
|
|
780
781
|
### When to Use Which Port
|
|
781
782
|
|
|
782
|
-
- **Browser access** (
|
|
783
|
+
- **Browser access** (UI, monitoring): Use the Control Plane, port **47821** -- `http://127.0.0.1:47821`
|
|
783
784
|
- **API calls** (REST, programmatic): Use port **57374** -- `http://localhost:57374`
|
|
784
785
|
- **VS Code extension** (deprecated as of v7.2.0): Connects to API on port **57374** automatically (configurable via `loki.apiPort` setting). No new releases will be published; see the deprecation notice above.
|
|
785
786
|
- The server is started automatically when you run `loki start` or `./autonomy/run.sh`. No manual configuration is needed.
|
|
@@ -787,8 +788,8 @@ Loki Mode uses two network ports for different services:
|
|
|
787
788
|
### Port Configuration
|
|
788
789
|
|
|
789
790
|
```bash
|
|
790
|
-
#
|
|
791
|
-
|
|
791
|
+
# Control Plane port (default: 47821)
|
|
792
|
+
loki control serve --port 47821
|
|
792
793
|
|
|
793
794
|
# API port (default: 57374)
|
|
794
795
|
loki api start --port 57374 # was: loki serve
|
|
@@ -796,7 +797,7 @@ loki api start --port 57374 # was: loki serve
|
|
|
796
797
|
|
|
797
798
|
### CORS Configuration
|
|
798
799
|
|
|
799
|
-
|
|
800
|
+
The Control Plane has no CORS setting and requires a loopback Host header unless it is bound to a non-loopback address with `LOKI_CONTROL_TOKEN` set (see [control-plane-migration.md](control-plane-migration.md)). The `LOKI_DASHBOARD_CORS` variable below applies only to the legacy API server:
|
|
800
801
|
|
|
801
802
|
```bash
|
|
802
803
|
# Allow specific origins
|
package/docs/MERGE-DEDUP-MAP.md
CHANGED
|
@@ -362,7 +362,7 @@ class FileEventDebouncer(FileSystemEventHandler):
|
|
|
362
362
|
### What Was NOT Audited (and Why)
|
|
363
363
|
|
|
364
364
|
1. **Frontend code duplication** (TypeScript/React):
|
|
365
|
-
- Dashboard UI (`
|
|
365
|
+
- Dashboard UI (`legacy-ui/src/`) and Lab UI (`web-app/dist/` or source) likely have overlapping components (session cards, status displays, log viewers).
|
|
366
366
|
- Scope: This audit covers Python backend only. Frontend audit deferred to UI design review in Merge-3 (Vite rebuild).
|
|
367
367
|
|
|
368
368
|
2. **Database schema migrations and compatibility:**
|
package/docs/MERGE-ROUTE-MAP.md
CHANGED
|
@@ -30,7 +30,7 @@ This document is the source-of-truth route-collision analysis for the Purple Lab
|
|
|
30
30
|
| Method | Path | Dashboard purpose | Purple Lab purpose | Resolution |
|
|
31
31
|
|---|---|---|---|---|
|
|
32
32
|
| `GET` | `/health` | Dashboard health check | Purple Lab health check | Single `/health` on Dashboard wins. Lab's becomes `/lab/health`. |
|
|
33
|
-
| `GET` | `/{full_path:path}` | Dashboard SPA catch-all (serves `
|
|
33
|
+
| `GET` | `/{full_path:path}` | Dashboard SPA catch-all (serves `legacy-ui-static/index.html`) | Purple Lab SPA catch-all (serves `web-app/dist/index.html`) | Dashboard catch-all wins at root. Lab's becomes `/lab/{full_path:path}` -- triggered only inside the mount. |
|
|
34
34
|
| `WS` | `/ws` | Dashboard WebSocket bus | Purple Lab WebSocket bus | Dashboard `/ws` wins. Lab's becomes `/lab/ws`. Long term: unify into a single bus (Phase Merge-5). |
|
|
35
35
|
|
|
36
36
|
All three collisions resolve automatically when Lab's FastAPI app is mounted at `/lab` via Starlette `app.mount("/lab", purple_lab_app)`. No code dedup needed in Merge-1 -- the mount provides path isolation.
|
package/docs/MERGE3-PLAN.md
CHANGED
|
@@ -68,7 +68,7 @@ Change the `open` URL from `http://127.0.0.1:${PURPLE_LAB_DEFAULT_PORT}/` to `ht
|
|
|
68
68
|
## Release Pipeline Wiring
|
|
69
69
|
|
|
70
70
|
### 7. Root `package.json` `prepublishOnly` (line ~106)
|
|
71
|
-
Append `&& cd ../web-app && npm ci && npm run build && test -f dist/index.html` after the existing
|
|
71
|
+
Append `&& cd ../web-app && npm ci && npm run build && test -f dist/index.html` after the existing legacy-ui build.
|
|
72
72
|
|
|
73
73
|
### 8. `Dockerfile`
|
|
74
74
|
Add `COPY` for web-app build artifacts + server files. Mirror the `dashboard/` COPY pattern. (Merge-4 owns the actual import; Merge-3 ensures files are in the image.)
|
|
@@ -109,7 +109,7 @@ run_check "web-app build produces /lab/-prefixed assets" \
|
|
|
109
109
|
## NOT Done In This Phase
|
|
110
110
|
|
|
111
111
|
- Auto-spawn web-app subprocess from `loki dashboard` (Merge-4).
|
|
112
|
-
- Sidebar entry in `
|
|
112
|
+
- Sidebar entry in `legacy-ui-static/index.html` (Merge-6).
|
|
113
113
|
- Deep state dedup (Merge-5).
|
|
114
114
|
- Deprecation of `loki web` (Merge-7).
|
|
115
115
|
- `vite-plugin-html` dev `/` -> `/lab/` redirect (nice-to-have, not blocking).
|
|
@@ -90,7 +90,7 @@ Read-only. Returns two honest series plus a budget block:
|
|
|
90
90
|
`/api/cost` and `/api/budget` are left UNCHANGED (existing frontend + tests
|
|
91
91
|
depend on them). The new endpoint is additive.
|
|
92
92
|
|
|
93
|
-
### 2. Dashboard panel: `
|
|
93
|
+
### 2. Dashboard panel: `legacy-ui-static/cost.html`
|
|
94
94
|
|
|
95
95
|
Self-contained, zero-build, all CSS+JS inlined (mirrors `proofs.html`). Fetches
|
|
96
96
|
`/api/cost/timeline`. Shows: project total, budget gauge with a colored
|
|
@@ -144,7 +144,7 @@ Add a non-pausing warn when crossing 80%, keep the 100% pause:
|
|
|
144
144
|
## Files (for the integrator to cherry-pick)
|
|
145
145
|
|
|
146
146
|
- `dashboard/server.py` (add `/api/cost/timeline`)
|
|
147
|
-
- `
|
|
147
|
+
- `legacy-ui-static/cost.html` (new)
|
|
148
148
|
- `autonomy/loki` (add `cmd_cost` + dispatch + help)
|
|
149
149
|
- `autonomy/run.sh` (warn-at-80% in `check_budget_limit`)
|
|
150
150
|
- `loki-ts/src/runner/budget.ts` (warn flag)
|
|
@@ -94,7 +94,7 @@ is always recomputable from `.loki/proofs/`. Deleting it loses nothing.
|
|
|
94
94
|
`/api/cost/timeline`). Reads `.loki/proofs/*/proof.json`, returns the
|
|
95
95
|
per-run series + per-axis direction + insufficient flag.
|
|
96
96
|
|
|
97
|
-
3. Dashboard panel: standalone `
|
|
97
|
+
3. Dashboard panel: standalone `legacy-ui-static/trust.html` + `/trust` route
|
|
98
98
|
(mirrors `cost.html` + `/cost`), plus a nav entry and SPA section in
|
|
99
99
|
`build-standalone.js` (mirrors the cost panel wiring exactly).
|
|
100
100
|
|
|
@@ -21,7 +21,7 @@ the codebase has not changed (reuses the R1 codebase-signature idea).
|
|
|
21
21
|
| Org knowledge graph | `memory/knowledge_graph.py` (`OrganizationKnowledgeGraph`) | Token-overlap scoring idea reused (`_tokenize` / `query_patterns`). NOT a codebase index -- it aggregates `.loki/memory/semantic/*.json` patterns across projects, keyed on `~/.loki/knowledge`. See "Honest reuse" below. |
|
|
22
22
|
| Memory retrieval | `memory/retrieval.py` (`MemoryRetrieval`) | Inspected. It retrieves memory entries (episodic/semantic/procedural), NOT source code. Not a code indexer. Not reused for code retrieval. |
|
|
23
23
|
| Dashboard read-API + traversal-safety | `dashboard/server.py:7191` (`_safe_proof_run_dir`) | Pattern reused for the wiki section/path param (`_safe_wiki_section`). |
|
|
24
|
-
| Dashboard web components | `
|
|
24
|
+
| Dashboard web components | `legacy-ui/components/*.js` (Web Components) | New `loki-wiki-browser.js` follows the same `LokiElement` convention; registered in `index.js`. |
|
|
25
25
|
|
|
26
26
|
### Honest reuse statement
|
|
27
27
|
|
|
@@ -33,7 +33,7 @@ dashboard `GET /api/checkpoints` normalizes them).
|
|
|
33
33
|
|
|
34
34
|
### Dashboard
|
|
35
35
|
- `GET /api/checkpoints`, `GET /api/checkpoints/{id}`, `POST /api/checkpoints` exist.
|
|
36
|
-
- The UI component `
|
|
36
|
+
- The UI component `legacy-ui/components/loki-checkpoint-viewer.js` (601 lines) ALREADY
|
|
37
37
|
renders list + create + rollback-with-two-step-confirm and POSTs to
|
|
38
38
|
`POST /api/checkpoints/{id}/rollback` -- but that endpoint **did not exist**. The
|
|
39
39
|
dashboard rollback button was DEAD.
|
package/docs/RARV-C-100X-PLAN.md
CHANGED
|
@@ -211,9 +211,9 @@ Every commit proven on BOTH routes (`bin/loki` + `LOKI_LEGACY_BASH=1 bin/loki`).
|
|
|
211
211
|
- **FIX in v8 - release-notes bug** (`release.yml:179/231`): awk expects bracketed `## [VERSION]` but
|
|
212
212
|
CHANGELOG uses unbracketed `## vVERSION`, so release notes have silently been generic. Fix the awk or
|
|
213
213
|
the header format (one PR, verify the extracted body is non-empty).
|
|
214
|
-
- **Dashboard frontend rebuilt** (`cd
|
|
215
|
-
`
|
|
216
|
-
- **Pre-publish validation** (CLAUDE.md 3a): `npm pack --dry-run` contains web-app/dist +
|
|
214
|
+
- **Dashboard frontend rebuilt** (`cd legacy-ui && npm ci && npm run build:all`) - writes both
|
|
215
|
+
`legacy-ui/dist/` and `legacy-ui-static/`.
|
|
216
|
+
- **Pre-publish validation** (CLAUDE.md 3a): `npm pack --dry-run` contains web-app/dist + legacy-ui-static;
|
|
217
217
|
fresh global install serves web app + API.
|
|
218
218
|
- **Per-job release verification**: `gh run view <id> --json jobs` per channel (npm/Docker/Homebrew/Release),
|
|
219
219
|
not just "workflow green".
|
|
@@ -100,10 +100,10 @@ opt-in advisor path.
|
|
|
100
100
|
with allowlist haiku|sonnet|opus|fable (already does). Add start-time selection: `start_build`
|
|
101
101
|
(server.py:3234) accepts an optional `model` that writes the override file BEFORE launch (so iteration
|
|
102
102
|
1 picks it up). Validate against the same allowlist + clamp.
|
|
103
|
-
- Frontend (
|
|
103
|
+
- Frontend (legacy-ui/src): add an accessible model selector (haiku/sonnet/opus) on the start/new-run
|
|
104
104
|
surface AND a mid-run switcher that calls POST /api/session/model. Real design-system tokens, keyboard
|
|
105
105
|
accessible, no AI-aesthetic. Show current effective model + that switch applies at next iteration.
|
|
106
|
-
Rebuild
|
|
106
|
+
Rebuild legacy-ui-static per CLAUDE.md release step 2.
|
|
107
107
|
|
|
108
108
|
### Lane E - Catalog IDs, pricing note, parity tests [engineer 5]
|
|
109
109
|
- model_catalog.json: opus-4-7 -> claude-opus-4-8 (3 occurrences), sonnet-4-6 -> claude-sonnet-5
|
package/docs/SYNERGY-TASKS.md
CHANGED
|
@@ -60,7 +60,7 @@ This document tracks all implementation tasks to achieve tool synergy and compet
|
|
|
60
60
|
|
|
61
61
|
| Task ID | Task | Status | Priority | Notes |
|
|
62
62
|
|---------|------|--------|----------|-------|
|
|
63
|
-
| SYN-025 | Extract dashboard as reusable web components | Done | High |
|
|
63
|
+
| SYN-025 | Extract dashboard as reusable web components | Done | High | legacy-ui/ - ARIA, keyboard nav, focus mgmt - peer reviewed |
|
|
64
64
|
| SYN-026 | Create VS Code webview integration | Pending | High | Embed dashboard in VS Code |
|
|
65
65
|
| SYN-027 | Unify styling and behavior | Pending | Medium | Consistent UX |
|
|
66
66
|
| SYN-028 | Add dashboard feature parity check | Pending | Low | Ensure all features available |
|
package/docs/TOOL-INTEGRATION.md
CHANGED
package/docs/TOP-100-BACKLOG.md
CHANGED
|
@@ -87,7 +87,7 @@ Generated 2026-07-01 by the top100-backlog-enumeration ultracode workflow (7 age
|
|
|
87
87
|
| 65 | medium | M | founder-gated | adoption | MCP registry submission + Glama claim + awesome-list PRs |
|
|
88
88
|
| 66 | medium | M | autonomous | saas | autonomi-saas UI/UX pass: build-watching pane + finished cues from trust verdict |
|
|
89
89
|
| 67 | medium | XL | autonomous | dashboard | Server.py route modularization (~10K-line monolith, no domain separation) |
|
|
90
|
-
| 68 | medium | L | autonomous | dashboard | Large
|
|
90
|
+
| 68 | medium | L | autonomous | dashboard | Large legacy-ui components modularization (5 files 1K-1.9K lines) |
|
|
91
91
|
| 69 | medium | L | founder-gated | engine | Wave-13 deferred trust fixes + PRD-reuse spurious-update design fix |
|
|
92
92
|
| 70 | medium | M | community | dashboard | Dashboard dark-toggle iframe theme not following SPA (harness/product parity) |
|
|
93
93
|
| 71 | medium | M | community | ci | Sonnet-5 calibration follow-ups: test-verify --hosted + gate missing-tool handling |
|
|
@@ -121,7 +121,7 @@ mv loki-mode-8.0.0 ~/.claude/skills/loki-mode
|
|
|
121
121
|
|
|
122
122
|
> **DEPRECATED as of v7.2.0.** The Loki Mode VS Code extension is no longer
|
|
123
123
|
> maintained and is no longer published to the VS Code Marketplace. Use the
|
|
124
|
-
>
|
|
124
|
+
> Control Plane instead (`loki dashboard`).
|
|
125
125
|
> The `vscode-extension/` source remains in the repository for contributors who
|
|
126
126
|
> want to build it locally. See
|
|
127
127
|
> [INSTALLATION.md](INSTALLATION.md#vs-code-extension-deprecated) for details.
|
|
@@ -168,7 +168,7 @@ Reasons:
|
|
|
168
168
|
|
|
169
169
|
### Phase 3: Build/release tooling
|
|
170
170
|
- Replace npm publish with `bun publish` in CI
|
|
171
|
-
- Replace
|
|
171
|
+
- Replace legacy-ui esbuild with `bun build` (already 4-5x faster)
|
|
172
172
|
- Replace pytest where possible with `bun test` for non-Python tests
|
|
173
173
|
- Measure: full CI wall time, npm install time
|
|
174
174
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Dashboard V2 Architecture
|
|
2
2
|
|
|
3
|
+
> **Historical:** this describes the classic dashboard, removed in Loki Mode 10.8. The Control Plane is the only UI; see [control-plane-migration.md](../control-plane-migration.md).
|
|
4
|
+
|
|
3
5
|
**Status:** Design Phase
|
|
4
6
|
**Version:** 0.1.0 (Draft)
|
|
5
7
|
**Date:** 2026-02-01
|
package/docs/audit-logging.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Audit Logging
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Audit trails for Loki Mode operations.
|
|
4
6
|
|
|
5
7
|
## Overview
|
package/docs/authentication.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Authentication Guide
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Authentication and access control for Loki Mode dashboard and API.
|
|
4
6
|
|
|
5
7
|
## Overview
|
package/docs/authorization.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Authorization Guide
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Role-based access control (RBAC) for Loki Mode (v5.37.0).
|
|
4
6
|
|
|
5
7
|
## Overview
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 2 Lab: Configure Enterprise Features
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Objective
|
|
4
6
|
|
|
5
7
|
Enable and verify enterprise features: audit logging, OTEL observability, token authentication, and dashboard TLS.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 2: Enterprise Features
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Loki Mode includes enterprise features for audit logging, observability, authentication, and SIEM integration. These features are controlled via environment variables and can be enabled incrementally.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 4 Lab: Deploy with Docker Compose
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Objective
|
|
4
6
|
|
|
5
7
|
Deploy Loki Mode using Docker Compose, verify the dashboard is accessible, and configure resource limits.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Module 4: Production Deployment
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Loki Mode can be deployed using Docker, Docker Compose, or direct installation via npm/Homebrew. This module covers deployment options, security hardening, resource management, and production configuration.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Migrating from the classic dashboard to the Control Plane
|
|
2
|
+
|
|
3
|
+
Loki Mode 10.8 removes the classic dashboard UI (`dashboard-ui/`, `dashboard/static/`, and the UI served on port 57374). The Control Plane (`packages/control-plane`, UI in `packages/control-plane/ui`) is the only UI. Deploy files (Helm, compose, ECS) and the clients (SDKs, VS Code, `run.sh`) already point at it.
|
|
4
|
+
|
|
5
|
+
## What changed
|
|
6
|
+
|
|
7
|
+
| Before | Now |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| UI and API on port 57374 (FastAPI, `dashboard/server.py`) | Control Plane on port 47821 by default (`loki control serve`) |
|
|
10
|
+
| `loki dashboard start` serves the classic UI | `loki dashboard`, `loki dashboard start` and `loki dashboard open` open the Control Plane |
|
|
11
|
+
| `dashboard-ui` build (`npm run build:all`) | `cd packages/control-plane && bun run build:all` (UI plus bundled server) |
|
|
12
|
+
| REST under `/api/*` | REST under `/v1/*`, plus `/health` and `/ready` |
|
|
13
|
+
| Token management through the dashboard | One bearer token, `LOKI_CONTROL_TOKEN`, on `/v1/*` |
|
|
14
|
+
|
|
15
|
+
## Start the Control Plane
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
loki control serve # 127.0.0.1:47821, database ~/.loki/control/control.db
|
|
19
|
+
loki control serve --port 0 # any free port; the printed URL is the real one
|
|
20
|
+
loki control status # reachable? how many runs held?
|
|
21
|
+
loki dashboard # reuse a running Control Plane, or start one, and open it
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Notes:
|
|
25
|
+
|
|
26
|
+
- Bun is required (https://bun.sh). Without it `loki dashboard` says so and does not start a server.
|
|
27
|
+
- The default port falls back to any free port when 47821 is taken. An explicit `--port` or `LOKI_CONTROL_PORT` never falls back.
|
|
28
|
+
- While `loki control serve` runs, runs on this machine ship to it automatically through `~/.loki/control/instance.json`. A run never starts the server.
|
|
29
|
+
- Import runs that finished before the server existed: `loki control backfill [DIR]`.
|
|
30
|
+
- Remove runs: `loki control prune --repo OWNER/NAME` or `--before ISO_DATE`, with `--dry-run` to preview.
|
|
31
|
+
- `LOKI_HEADLESS=1`, `LOKI_NO_BROWSER=1` or `--no-open` print the URL instead of opening a browser.
|
|
32
|
+
- `LOKI_CONTROL=0` turns the Control Plane off. `LOKI_CONTROL_DEFAULT=0` makes the bare `loki dashboard` skip it.
|
|
33
|
+
|
|
34
|
+
Environment variables:
|
|
35
|
+
|
|
36
|
+
| Variable | Meaning |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `LOKI_CONTROL_PORT` | listen port for `loki control serve`, and the port clients assume (default 47821) |
|
|
39
|
+
| `LOKI_CONTROL_URL` | where clients and the shipper send runs (overrides discovery) |
|
|
40
|
+
| `LOKI_CONTROL_DB` | SQLite path (default `~/.loki/control/control.db`) |
|
|
41
|
+
| `LOKI_CONTROL_HOST` | bind address (default 127.0.0.1) |
|
|
42
|
+
| `LOKI_CONTROL_TOKEN` | bearer token for `/v1/*`; required for any non-loopback bind, otherwise the server exits 2 |
|
|
43
|
+
| `LOKI_CONTROL_ALLOW_INSECURE_BIND` | `1` accepts a tokenless non-loopback bind (not recommended) |
|
|
44
|
+
| `LOKI_CONTROL_ANSWER_DIR` | where BLOCKED-run answers are written |
|
|
45
|
+
|
|
46
|
+
With a token set, send `Authorization: Bearer <token>` on every `/v1/*` call. Actions that touch the machine (start, stop, import, delete, config) exist only on a loopback-bound server and need a JSON content type.
|
|
47
|
+
|
|
48
|
+
## Route mapping
|
|
49
|
+
|
|
50
|
+
Legacy routes come from `dashboard/server.py`. Rows marked "no direct legacy route" are Control Plane routes that did not exist in the classic server.
|
|
51
|
+
|
|
52
|
+
| Legacy | Control Plane |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| `GET /api/status` | `GET /v1/runs` (list, filters `verdict`, `repo`, `since`, `until`, `group_id`, `limit`, `cursor`), `GET /v1/runs/<source>/<run>` (detail), `GET /v1/stats` |
|
|
55
|
+
| `GET /api/cost` | `GET /v1/stats/cost` |
|
|
56
|
+
| `POST /api/control/start` | `POST /v1/start` (alias `POST /v1/runs`) |
|
|
57
|
+
| `POST /api/control/stop` | `POST /v1/runs/<source>/<run>/stop` |
|
|
58
|
+
| `POST /api/control/resume` | `POST /v1/runs/<source>/<run>/resume` |
|
|
59
|
+
| (none) | `POST /v1/runs/<source>/<run>/retry`, `POST /v1/runs/<source>/<run>/verify`, `POST /v1/runs/<source>/<run>/answer` |
|
|
60
|
+
| log streaming | `GET /v1/runs/<source>/<run>/events`, `GET /v1/runs/<source>/<run>/stream`, `GET /v1/stream`, `GET /v1/runs/<source>/<run>/artifact/<path>` |
|
|
61
|
+
| `GET /api/audit` | `GET /v1/audit` |
|
|
62
|
+
| `GET /api/health` family | `GET /health` (liveness), `GET /ready` (database check) |
|
|
63
|
+
| (no direct legacy route) | `GET /v1/config`, `PUT /v1/config` |
|
|
64
|
+
| (no direct legacy route) | `GET /v1/providers`, `GET /v1/integrations` |
|
|
65
|
+
| (no direct legacy route) | `GET /v1/notifications` |
|
|
66
|
+
| (no direct legacy route) | `GET /v1/merge/queue`, `POST /v1/merge/queue`, `POST /v1/merge/run`, `GET /v1/review/risk` |
|
|
67
|
+
| (no direct legacy route) | `GET /v1/keys` (public key only, loopback only) |
|
|
68
|
+
| (no direct legacy route) | `GET /v1/repos` (names only, loopback only) |
|
|
69
|
+
| (no direct legacy route) | `POST /v1/ingest`, `POST /v1/import`, `DELETE /v1/runs/<source>/<run>` |
|
|
70
|
+
|
|
71
|
+
## Not yet available in the Control Plane
|
|
72
|
+
|
|
73
|
+
These legacy features have no Control Plane route today:
|
|
74
|
+
|
|
75
|
+
- `POST /api/control/pause`, `/api/control/app-restart` and `/api/control/app-stop`.
|
|
76
|
+
- `GET /api/audit/summary` and `GET /api/audit/verify` (the Control Plane has `GET /v1/audit` only).
|
|
77
|
+
- `GET /api/cost/timeline` and `GET /api/health/processes`.
|
|
78
|
+
- API key creation, rotation and revocation (`/api/keys` POST routes, `loki dashboard token`), RBAC and OIDC login. The Control Plane uses the single `LOKI_CONTROL_TOKEN`.
|
|
79
|
+
- The `/lab/` web app and the memory browser.
|
|
80
|
+
- Classic-server options: `loki dashboard --host`, `--tls-cert`, `--tls-key`, `LOKI_DASHBOARD_CORS`, `LOKI_DASHBOARD_PORT` for the UI.
|
|
81
|
+
|
|
82
|
+
## Deploy
|
|
83
|
+
|
|
84
|
+
- Container, Helm and ECS overview: [control-plane-container.md](control-plane-container.md).
|
|
85
|
+
- Docker Compose: `deploy/docker-compose/README.md`. The UI is on host port 57374 by default (`LOKI_DASHBOARD_PORT`), mapped to the Control Plane on container port 47821. `LOKI_CONTROL_TOKEN` is required in `.env`; open the UI with `#token=<token>` appended.
|
|
86
|
+
- Helm: `deploy/helm/README.md` (chart at `deploy/helm/autonomi`, Control Plane deployment in `templates/deployment-controlplane.yaml`).
|
|
87
|
+
- ECS: `deploy/ecs/README.md` and `deploy/ecs/control-plane-task.json` (run exactly one task, the database is single-writer).
|
|
88
|
+
|
|
89
|
+
## Clients
|
|
90
|
+
|
|
91
|
+
SDKs, the VS Code extension and `run.sh` talk to the Control Plane. Set `LOKI_CONTROL_URL` (and `LOKI_CONTROL_TOKEN` when the server has one) to point them at a remote instance.
|
|
92
|
+
|
|
93
|
+
## Building from source
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
cd packages/control-plane && bun run build:all # UI plus dist/server.js
|
|
97
|
+
```
|
package/docs/dashboard-guide.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Dashboard v5.40.0
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and its port 57374 are removed in Loki Mode 10.8. The Control Plane (`loki control serve`, default port 47821) is the only UI. See [control-plane-migration.md](control-plane-migration.md) for startup, the `/api/*` to `/v1/*` route mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
A production-ready realtime dashboard for monitoring and managing Loki Mode autonomous operations. Features a dark Vercel/Linear-inspired theme with purple accents, sidebar navigation, and overview cards.
|
|
4
6
|
|
|
5
7
|
## Overview
|
|
@@ -15,16 +17,13 @@ The Loki Mode Dashboard provides a visual interface to:
|
|
|
15
17
|
## Quick Start
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
#
|
|
19
|
-
loki dashboard
|
|
20
|
-
|
|
21
|
-
# Open in browser
|
|
22
|
-
open http://localhost:57374
|
|
20
|
+
# Open the Control Plane (starts `loki control serve` on 127.0.0.1:47821 if none is running)
|
|
21
|
+
loki dashboard
|
|
23
22
|
```
|
|
24
23
|
|
|
25
24
|
The dashboard automatically syncs with Loki Mode when it's running, polling `dashboard-state.json` every 2 seconds.
|
|
26
25
|
|
|
27
|
-
**Ports:**
|
|
26
|
+
**Ports:** the Control Plane serves the UI and `/v1/*` API on port **47821** by default. See [INSTALLATION.md](INSTALLATION.md#ports) for details.
|
|
28
27
|
|
|
29
28
|
**Bound port:** if 57374 is held by something that is not this install's dashboard (another project, an older version, a foreign process), Loki walks to the next free port and never reuses or opens the foreign one. `loki start` and `loki dashboard` open and print the URL of the port actually bound; `loki start` publishes it to `.loki/dashboard/url`. A running dashboard is reused only when its `/health` reports the same version and install path.
|
|
30
29
|
|
|
@@ -485,4 +484,4 @@ Useful for:
|
|
|
485
484
|
|
|
486
485
|
## Control Plane by default
|
|
487
486
|
|
|
488
|
-
Bare `loki` and `loki dashboard` (also `start` or `open` with no other flags) open the Control Plane. If `~/.loki/control/instance.json` names a live loopback server whose `/health` reports `service=loki-control`, that URL is reused; otherwise `loki control serve` is started detached and its PID is recorded in `~/.loki/control/serve.pid`. With `LOKI_HEADLESS=1`, `LOKI_NO_BROWSER=1` or `--no-open` the URL is printed and no browser is opened. Without bun, Loki prints one line naming bun and
|
|
487
|
+
Bare `loki` and `loki dashboard` (also `start` or `open` with no other flags) open the Control Plane. If `~/.loki/control/instance.json` names a live loopback server whose `/health` reports `service=loki-control`, that URL is reused; otherwise `loki control serve` is started detached and its PID is recorded in `~/.loki/control/serve.pid`. With `LOKI_HEADLESS=1`, `LOKI_NO_BROWSER=1` or `--no-open` the URL is printed and no browser is opened. Without bun, Loki prints one line naming bun and does not start a server (the classic dashboard is removed in 10.8). Multi-repo `loki workspace` is on by default; `LOKI_WORKSPACES=0` disables it.
|
|
@@ -82,13 +82,13 @@ context (the v9.22.13 bug: its body says "v9.24.0 is the next version on
|
|
|
82
82
|
npm") or over-carry on a stale npm read, so auto-detect was removed
|
|
83
83
|
entirely rather than patched again.
|
|
84
84
|
|
|
85
|
-
### 2. Build
|
|
85
|
+
### 2. Build Web App
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
cd
|
|
89
|
-
ls -la
|
|
88
|
+
cd web-app && npm ci && npm run build && cd ..
|
|
89
|
+
ls -la web-app/dist/index.html
|
|
90
90
|
```
|
|
91
|
-
`npm publish`'s `prepublishOnly` also triggers this build automatically.
|
|
91
|
+
`npm publish`'s `prepublishOnly` also triggers this build automatically. The legacy dashboard UI was removed; the browser UI is the Control Plane (`packages/control-plane`).
|
|
92
92
|
|
|
93
93
|
### 3. Run Tests
|
|
94
94
|
|
|
@@ -97,15 +97,13 @@ bash -n autonomy/run.sh
|
|
|
97
97
|
bash -n autonomy/loki
|
|
98
98
|
python3 -c "import ast, os; [ast.parse(open(f'dashboard/{f}').read()) for f in os.listdir('dashboard') if f.endswith('.py')]"
|
|
99
99
|
python3 -c "import json; json.load(open('package.json')); print('JSON OK')"
|
|
100
|
-
cd dashboard-ui && npx playwright test && cd .. # requires dashboard on 57374
|
|
101
100
|
```
|
|
102
101
|
|
|
103
102
|
### 3a. Pre-Publish Validation (MANDATORY)
|
|
104
103
|
|
|
105
104
|
```bash
|
|
106
|
-
npm pack --dry-run 2>&1 | grep -E "web-app/dist
|
|
105
|
+
npm pack --dry-run 2>&1 | grep -E "web-app/dist" || echo "FAIL: expected files missing"
|
|
107
106
|
git ls-files web-app/dist/index.html | grep -q . || echo "FAIL: web-app/dist/ not tracked"
|
|
108
|
-
git ls-files dashboard/static/index.html | grep -q . || echo "FAIL: dashboard/static/ not tracked"
|
|
109
107
|
npm pack && npm install -g ./loki-mode-*.tgz
|
|
110
108
|
loki --version
|
|
111
109
|
loki web --no-open &
|
|
@@ -135,7 +133,7 @@ Before pushing the release commit, run `bash scripts/release.sh --check-clean` (
|
|
|
135
133
|
```bash
|
|
136
134
|
gh run list --limit 1 && gh run watch <run-id>
|
|
137
135
|
npm view loki-mode version
|
|
138
|
-
npm pack loki-mode --dry-run 2>&1 | grep
|
|
136
|
+
npm pack loki-mode --dry-run 2>&1 | grep web-app/dist
|
|
139
137
|
docker pull asklokesh/loki-mode:X.Y.Z && docker run --rm asklokesh/loki-mode:X.Y.Z loki version
|
|
140
138
|
brew update && brew info loki-mode
|
|
141
139
|
gh release view vX.Y.Z
|
|
@@ -148,10 +146,10 @@ Operator action: wait for the Release workflow publish to land and for the D49 a
|
|
|
148
146
|
|
|
149
147
|
### Distribution Channel Checklist
|
|
150
148
|
|
|
151
|
-
| Channel | Dashboard API |
|
|
149
|
+
| Channel | Dashboard API | Web App | Memory System | Skills/References |
|
|
152
150
|
|---------|--------------------------|------------------------------|---------------|-------------------|
|
|
153
|
-
| npm | `dashboard/*.py` | `
|
|
154
|
-
| Docker | `COPY dashboard/` | Built in Dockerfile
|
|
151
|
+
| npm | `dashboard/*.py` | `web-app/dist/index.html` | `memory/` | `skills/`, `references/` |
|
|
152
|
+
| Docker | `COPY dashboard/` | Built in Dockerfile | `memory/` | `skills/`, `references/` |
|
|
155
153
|
| Homebrew| Full tarball | Full tarball | Full tarball | Full tarball |
|
|
156
154
|
| VSCode | DEPRECATED v7.2.0 -- no longer published | -- | -- | -- |
|
|
157
155
|
| Release | Skill-only zip | N/A | N/A | `references/` |
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Integration Cookbook
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Step-by-step guides for connecting Loki Mode to external services. Each integration is opt-in and configured via environment variables.
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -226,7 +226,7 @@ npm install loki-mode-sdk
|
|
|
226
226
|
#### 5. Test Enterprise Features
|
|
227
227
|
|
|
228
228
|
```bash
|
|
229
|
-
#
|
|
229
|
+
# Open the Control Plane (the classic /api/* routes are replaced by /v1/*, see docs/control-plane-migration.md)
|
|
230
230
|
loki dashboard
|
|
231
231
|
|
|
232
232
|
# Test API
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Enterprise Performance Tuning
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Enterprise features are designed for minimal overhead. When disabled (no env vars set), every enterprise subsystem returns no-op responses with zero I/O. This guide covers tuning for production environments where enterprise features are actively used.
|
|
@@ -238,7 +240,7 @@ Rate limits are built into the API layer (10 requests/min on control endpoints,
|
|
|
238
240
|
|
|
239
241
|
### Static Asset Caching
|
|
240
242
|
|
|
241
|
-
The dashboard frontend (`
|
|
243
|
+
The dashboard frontend (`legacy-ui-static/index.html`) is a single-page application built as an IIFE bundle. Configure your reverse proxy to cache static assets:
|
|
242
244
|
|
|
243
245
|
```nginx
|
|
244
246
|
location /static/ {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode SDK Guide
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
Official Python and TypeScript SDKs for the Autonomi Control Plane API. Both SDKs have zero external dependencies -- they use only standard library features.
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Loki Mode Enterprise Security
|
|
2
2
|
|
|
3
|
+
> **Control Plane migration:** the classic dashboard UI and port 57374 are removed in Loki Mode 10.8; the UI is the Control Plane (`loki dashboard`, default port 47821). Examples below that use port 57374 or `/api/*` describe the legacy API server. See [control-plane-migration.md](../control-plane-migration.md) for the `/v1/*` mapping and what is not yet available.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Loki Mode's security model follows a defense-in-depth approach. All security features are opt-in via environment variables, with sensible defaults that prioritize safety. When enterprise auth is not configured, the system operates in local-only mode with no network exposure.
|
|
@@ -43,7 +43,7 @@ Last updated: 2026-05-18
|
|
|
43
43
|
- [x] F-2.25 Semantic layer: buckets, functions, gateway routes surfaced
|
|
44
44
|
- [x] F-2.26 Council review hook (migrate_apply emits review records to .loki/quality/forge-migrations/; council read-side consumes from that path)
|
|
45
45
|
- [x] F-2.27 Dashboard router /api/forge/* (state, db, storage, functions, gateway)
|
|
46
|
-
- [~] F-2.28 Dashboard UI: deferred to dedicated
|
|
46
|
+
- [~] F-2.28 Dashboard UI: deferred to dedicated legacy-ui work (router is in place; UI panes are CSS/TSX work that will land in a separate PR)
|
|
47
47
|
- [x] F-2.29 CHANGELOG entry for F-2
|
|
48
48
|
- [x] F-2.30 Commit + push F-2
|
|
49
49
|
|
|
@@ -196,7 +196,7 @@ Last updated: 2026-05-18
|
|
|
196
196
|
## Status
|
|
197
197
|
|
|
198
198
|
Phase F-1..F-5 + X-11..X-26 + X-28..X-34 complete on
|
|
199
|
-
claude/compare-litellm-loki-Y8Ke1. Remaining: X-27 (
|
|
199
|
+
claude/compare-litellm-loki-Y8Ke1. Remaining: X-27 (legacy-ui).
|
|
200
200
|
|
|
201
201
|
## More tasks discovered (next wave)
|
|
202
202
|
|
|
@@ -56,7 +56,7 @@ Dockerizable and offline-safe. A daily/refresh fetch keeps the numbers current.
|
|
|
56
56
|
|
|
57
57
|
## Design language (Autonomi)
|
|
58
58
|
Match the shipped Autonomi look. Reference files: `artifacts/whitepaper/Autonomi-Whitepaper.html`
|
|
59
|
-
and `
|
|
59
|
+
and `legacy-ui-static/trust.html`. Palette: dark bg (#0F0B1A / #0d1117), Autonomi purple accent
|
|
60
60
|
(#553DE9 / #7B6BF0), verified teal (#2ED8B6 / #1AAF95), dim ink (#B8B0C8 / #8A857C), warning amber
|
|
61
61
|
(#C4922E), reject red (#C04848). Semantic status colors: verified=teal, reported/pending=amber,
|
|
62
62
|
mistake/reverted=red, roadmap=purple. Clean, calm, founder-readable; big numbers, short labels,
|