The footer showed invented percentages. It now shows what two harnesses actually report, or says it does not know. lumbridge-core gains an append-only per-profile UsageLedger and a projection that labels every derived value estimated, withholds a burn rate from a single sample, withholds a window fraction with no reported ceiling, withholds an exhaustion estimate that lands after the reset, and reports an expired window as rolled over rather than freezing its last percentage. A missing fact renders as missing, never as zero. (0012) lumbridge-harness is the impure side: processes, clocks, and untrusted wire text in, observations out. Three adapters: - Codex's account/rateLimits/read over the app-server's JSON-RPC stdio. The client cannot express a request outside a two-variant enum and answers every server-to-client request with -32601, so a harness asking Lumbridge for a credential is refused by construction. (0013) - Claude Code's session transcripts, as a byte-offset tail follower that reports nothing until the backlog is read to EOF — a partially-read backlog is indistinguishable from a burst of spend, and the first run against 20 MB reported forty-six billion tokens an hour. The parser models four counters, so the conversations in those files are not representable. (0014) - Claude Code's five-hour and seven-day subscription windows, via a bridge installed as its statusLine command. 0014 had claimed no such surface existed; it does, and the record is corrected in place rather than quietly edited. Lumbridge does not read the OAuth credential to call the account usage endpoint, which is what comparable tools do — AGENTS.md forbids it, and 0015 says so rather than leaving the gap unexplained. Also in here: a capability-check ordering fix in the workspace reducer, where the applied-request replay table was consulted before the capability check and so answered questions the caller had no right to ask; the GPUI spike wired to the live probes with per-harness gauges and provenance chips; and a launcher that matches its own window by PID, because GPUI sets WM_NAME but not _NET_WM_NAME and a title match never succeeded. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
79 lines
3.9 KiB
Markdown
79 lines
3.9 KiB
Markdown
# Lumbridge
|
|
|
|
Lumbridge is a fast, local-first workspace and terminal multiplexer for agentic
|
|
engineers. It will run coding harnesses side by side, preserve their sessions,
|
|
connect rich agents through ACP, and show trustworthy account and usage context
|
|
without forcing users into one model vendor.
|
|
|
|
The first supported desktop platforms are:
|
|
|
|
- macOS (Apple Silicon first, Intel when CI capacity is available)
|
|
- Ubuntu Linux
|
|
- Omarchy and compatible Arch Linux systems
|
|
|
|
Lumbridge is free and open source under Apache-2.0. Releases will be published
|
|
as installable binaries; building from source will remain supported.
|
|
|
|
## Status
|
|
|
|
This repository is in architecture and vertical-slice phase. The installable
|
|
binary is still a scaffold, while the isolated native UI spikes now exercise an
|
|
interactive 20/60/20 workspace backed by six live comparison surfaces, and the
|
|
root workspace contains the first bounded local PTY, runtime actor, VT engine,
|
|
and capability-gated workspace command boundaries. The GPUI slice shows a
|
|
responsive one-, three-, or five-panel workspace—five on a 3440 px ultrawide—
|
|
where every panel owns its own context, work surface, and decision shelf. One
|
|
panel contains a styled actor-owned VT session and five comparison surfaces
|
|
remain deterministic.
|
|
Retained-history navigation is wired. The usage footer is a live strip over an
|
|
append-only ledger with provenance, fed by two real adapters: Codex's
|
|
documented quota surface and Claude Code's session transcripts. A harness with
|
|
no adapter renders an explicit gap rather than a zero. We are still validating
|
|
terminal text selection and mouse input, standalone runtime IPC/durability, ACP
|
|
integration, and packaging before a large implementation.
|
|
|
|
## Product shape
|
|
|
|
- A native desktop shell with tabs, panes, workspaces, worktrees, diffs, and an
|
|
agent-aware footer.
|
|
- A Rust session runtime that survives UI restarts and can later run headless.
|
|
- ACP-native integrations where available, with supervised PTYs as the universal
|
|
fallback for any CLI harness.
|
|
- First-class harnesses for Claude Code, Codex, DeepSeek Harness, Pi, Hermes,
|
|
OpenClaw, Goose, Gemini CLI, and OpenCode.
|
|
- Subscription login owned by the upstream harness, plus separate BYOK provider
|
|
profiles for OpenAI, Anthropic, Gemini, Groq, Cerebras, DeepSeek, and more.
|
|
- Usage history, burn rate, reset windows, and forecasts with visible data
|
|
provenance instead of invented precision.
|
|
- Optional first-class Buzz channels, messages, agents, and confirmed redacted
|
|
pane sharing without making Buzz a requirement.
|
|
- An optional Lumbridge Harness that can suggest, coordinate, and—with explicit
|
|
execution capability—manage agents through the same audited command plane as
|
|
the human UI. Lumbridge remains useful without it.
|
|
|
|
Start with [the product spec](docs/PRODUCT_SPEC.md),
|
|
[architecture](docs/ARCHITECTURE.md), [research map](docs/RESEARCH.md), and
|
|
[captured upstream revisions](docs/RESEARCH_SNAPSHOTS.md). The native UI choice
|
|
is intentionally open; see [the measured decision plan](docs/UI_OPTIONS.md).
|
|
|
|
## Scaffold
|
|
|
|
```bash
|
|
bacon # continuous check; t tests, c lints, v runs the full gate
|
|
cargo xtest # fast isolated tests with nextest
|
|
./scripts/ci.sh # format + strict Clippy + tests + doctests
|
|
cargo run -p lumbridge
|
|
```
|
|
|
|
See [the testing strategy](docs/TESTING.md) for fake harnesses, ACP replay,
|
|
terminal conformance, UI driving, recovery, performance, and packaging tests.
|
|
|
|
The accepted local/remote boundary is recorded in
|
|
[decision 0003](docs/decisions/0003-local-data-and-remote-sessions.md). The two
|
|
native shell candidates live in [`spikes/`](spikes/), with results tracked in
|
|
[the UI scorecard](docs/UI_SPIKE_SCORECARD.md).
|
|
The signed-protocol and pane-sharing boundary is in
|
|
[the Buzz integration design](docs/BUZZ_INTEGRATION.md).
|
|
Brand masters, platform-ready raster exports, and usage rules are in
|
|
[`assets/brand/`](assets/brand/) and [the brand guide](docs/BRAND.md).
|