abstract-serve
The provider-neutral shared Serve console. It owns the durable conversation store, queue/hold contract, session picker, and provider adapters. Claude, GPT, Hugpy, and local-model packages may provide adapters without owning the Serve runtime.
Run abstract-serve --no-browser to start the console.
pip install abstract-serve-core
abstract-serve --no-browser # standalone
abstract-claude serve # provider package entry point
abstract-gpt serve # same routes, GPT seat installed
Part of the hugpy orbit
┌──────────────────────────── hugpy (fleet) ───────────────────────────┐
│ central + workers: platform · engine · fleet · server · media · … │
│ OpenAI-compatible /v1 — every local model, incl. B (Qwen3-Coder-Next) │
└───────▲───────────────────────▲──────────────────────────▲───────────┘
│ inference │ inference │ B reductions
┌────────────────────────┴──┐ ┌────────────────┴──────────┐ ┌───────────┴───────────────┐
│ hugpy-station │ │ hugpy-agent │ │ abstract-toolserver │
│ desktop + headless console│──▶│ agent runtime · TUI · │◀─▶│ comms · ledgers · boards ·│
│ tmux seats per locus │ │ OpenCode/qwen seats │ │ exchanges · MCP · b_ask │
└────────────┬──────────────┘ └────────────┬──────────────┘ └───────────▲───────────────┘
│ keeper/codex seats │ --serve │ tools (MCP/HTTP)
┌────────────▼──────────────┐ ┌────────────▼──────────────┐ │
│ abstract-gpt (Codex seat) │ │ abstract-claude serve ────┼───────────────┘
│ abstract-claude (Claude) │ │ └ abstract-serve-core │
└───────────────────────────┘ └───────────────────────────┘
everything ships through abstract-pypit → PyPI (+ GitHub)
| Package | Role | PyPI |
|---|---|---|
| hugpy (14 lockstep dists) | the self-hosted LLM fleet: central, workers, engine, media, server | hugpy |
| hugpy-station | Electron desktop + headless backend; tmux seats, prompt composer, loop/bug scan | deb via central install links |
| hugpy-agent | agent runtime on the fleet; hugpy-agent tui over the shared Serve API |
hugpy-agent |
| abstract-claude | Claude Code launch/session/rollover + abstract-claude serve (roles keeper/chat/worker/local) |
abstract-claude |
| abstract-serve-core | provider-neutral HTTP routes (queue, relay, rollover sweeps, session API) | abstract-serve-core |
| abstract-gpt | Codex/ChatGPT seat counterpart of abstract-claude | abstract-gpt |
| abstract-toolserver | one tool service per host: comms, ledgers, boards, exchanges, MCP bridge, B on call | abstract-toolserver |
| abstract-pypit | one-command publisher: bump → build → PyPI → GitHub push | abstract-pypit |
What it owns
Provider CLI entry points import and execute serve-core's HTTP routes. The
route handlers left in abstract_claude/server.py are dead at Serve runtime —
patch serve-core, not a provider package, for shared Serve behaviour. Its
GET /api/state advertises service=abstract-serve and protocol version 1;
clients should identify this API independently of the configured model provider.
- Roles:
keeper,chat,worker,localare standing serve sessions recorded inroster.json— not Claude sessions. Send to one withPOST /api/session/<role>/message. - Cross-locus relay:
session_message/ relay acceptsto="<locus>"orto="<locus>:keeper";relay.send_crossposts a comms ping board row on the target locus tagged[from <locus>:<role>], answers202 queued, and logs torelay.jsonl. Non-keeper cross-locus targets are refused (400). - Queue: queue-first collator; prompts are sent verbatim —
_compile_prompt()only dedups and joins, never runs a model. A model merge exists only as an explicit preview (POST /api/compile {suggest:true}) the operator must apply. - Interrupt = stop (0.1.16): an interrupted batch is done, never retried, never held; queued items drain at the end of the turn.
- Directives:
AC_SESSION_DIRECTIVES_DIR/<role>.mdis appended to every turn of that role. - Rollover sweeps measure context per session (including gpt sessions via the codex rollout) and roll over near the limit.
- Seat report: a sidecar publishes
{surface: serve, port, pid}to the centralseat_state. AC_LOCAL_LLM_URLpoints at the local model (B) used for previews.
Attention-worthy
[rollover] sweep #Nlog lines are routine, not errors (Station's bug scan ignores them since 1.0.152).- Republishing the same version needs
pip install --force-reinstall, or the old files stay. - Token counters are blank for sessions served by the hugpy engine — it emits no per-turn usage.
Changelog
See CHANGELOG.md (0.1.15: verbatim prompts, gpt runaway guard; 0.1.16:
interrupt = stop).
Metadata
Release files for abstract-serve-core 0.1.33
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| abstract_serve_core-0.1.33.tar.gz | 432.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| abstract_serve_core-0.1.33-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 815.1 kB
Release files / abstract_serve_core-0.1.33.tar.gz
| Download URL | abstract_serve_core-0.1.33.tar.gz |
|---|---|
| Size | 432.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bcce88a6ab6eb21e93a20148c58d4e74755b9b4707a48734b92a5d33d6d5cc23
|
|
BLAKE2b-256 checksum How to use checksums |
0c75da0d9c9a86d773e0d049d4b7c5ba982792df0ca8f316613a54372003fbfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / abstract_serve_core-0.1.33-py3-none-any.whl
| Download URL | abstract_serve_core-0.1.33-py3-none-any.whl |
|---|---|
| Size | 382.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bbe5d4e9560a90c0672cff6265f63893910ea340adcde5aa677bf0f34e67a03d
|
|
BLAKE2b-256 checksum How to use checksums |
8eff09d75c8c033ecc48c024b51109ccacb64f710af2f1d68bc66a6cb7ca1c68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|