Skip to main content

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, local are standing serve sessions recorded in roster.json — not Claude sessions. Send to one with POST /api/session/<role>/message.
  • Cross-locus relay: session_message / relay accepts to="<locus>" or to="<locus>:keeper"; relay.send_cross posts a comms ping board row on the target locus tagged [from <locus>:<role>], answers 202 queued, and logs to relay.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>.md is 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 central seat_state.
  • AC_LOCAL_LLM_URL points at the local model (B) used for previews.

Attention-worthy

  • [rollover] sweep #N log 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)

Source distribution for abstract-serve-core 0.1.33
File Size Uploaded
abstract_serve_core-0.1.33.tar.gz 432.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for abstract-serve-core 0.1.33
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page