Skip to main content

abstract-claude

Fresh Claude Code session manager: a settings-only template, durable OAuth, automatic quota fallback, and a web console — packaged as one pip-installable CLI.

Install

pip install abstract-claude                 # from your index
# or from the private index:
pip install -i https://<index>/api/pypi/simple/ abstract-claude

Quickstart

abstract-claude init                        # materialize AC_ROOT (config + template)
abstract-claude serve                       # web console (default http://127.0.0.1:9111)
sudo abstract-claude install-service        # install + enable the systemd unit

Commands

Command What it does
serve [--host --port] Run the web console (Model+fallback, OAuth, Template+reset, Session settings).
init Create AC_ROOT with config.json + template/ from shipped defaults.
save-template Capture current ~/.claude/settings.json + minimal flags as the template.
restore Create a fresh ~/.claude (settings + flags) if it doesn't exist.
reset [-y] Wipe ALL Claude state (transcripts/history/creds) → reseed template → clean session.
oauth-status / oauth-set <token> Show / store the durable 1-year claude-auth token.
launch -- <claude args> Delete ~/.claude, rebuild it from the template + login, run Claude Code (no memory of earlier sessions), auto-switching to the fallback model when the default is over quota.
sessions [--prune KEEP] List per-launch session dirs (LIVE/done); --prune removes the oldest finished ones beyond KEEP.
mct [ws] [--model ID] [--plain] Pointer-exchange REPL for the frontier seat: a Claude-Code-style input box pinned to the bottom of the terminal (output scrolls above, status bar below), multi-line input as one prompt (Enter sends; \+Enter, Alt+Enter, Ctrl-J or Shift+Enter add a line; pasted blocks stay one prompt); --plain = readline line loop. Also deletes ~/.claude and starts a NEW claude session on every launch (drops the persisted session.json id) — same fresh_session_mode / AC_FRESH=0 knobs as launch.
mcp stdio MCP bridge: exposes an abstract_toolserver instance to Claude Code as native tools (TOOLSERVER_URL, default https://toolserver.hugpy.ai).
install-service [--user] Write + enable 9111_abstract_claude_web.service (needs sudo).

Tool-aware sessions (MCP)

abstract-claude mcp discovers a toolserver's /endpoints and serves them to Claude Code over stdio MCP — so the .claude session can call the whole abstract_* tool surface (and /claude/*) through one authed entry point. The template registers it automatically; to add it to an existing install:

claude mcp add -s user toolserver -e TOOLSERVER_URL=https://toolserver.hugpy.ai -- abstract-claude mcp

How it works

  • Template = config only. template/settings.json + a minimal ~/.claude.json (onboarding/trust flags). No credentials, history, or transcripts — a reset gives a genuinely clean session, not a restored snapshot.
  • OAuth is not templated. Login rides on the durable 1-year CLAUDE_CODE_OAUTH_TOKEN (managed by claude-auth), so a fresh session auto-authenticates — no /login.
  • Quota fallback is the wrapper. Claude Code's fallbackModel only fires on overload, never on quota; autoContinueAtUsageLimit doesn't exist before v2.1.234. abstract-claude launch handles the real case: default Fable maxed → run on Opus 4.8.
  • Fresh .claude per launch — no memory. Every launch DELETES ~/.claude and ~/.claude.json and rebuilds them with only the template settings (or the embedder's AC_SETTINGS_JSON), fresh onboarding/trust flags + MCP servers, and the login (freshest credentials + oauthAccount/userID identity). Transcripts, history, todos, project trust and caches from earlier sessions are gone; the launch cwd is trusted. config.json fresh_session_mode: wipe (default), dir (keep ~/.claude, use a new ~/.claude-sessions/<stamp>-<pid> via CLAUDE_CONFIG_DIR; sessions [--prune] lists), or off. AC_FRESH=0 or a pre-set CLAUDE_CONFIG_DIR skips it for one launch. An explicit --model in the pass-through args is honored as-is (no launcher model, no quota preflight). abstract-claude mct does the same at REPL start and additionally forgets the persisted session.json id, so A opens a brand-new claude session each launch.
  • Claude-Code-style input for mct. The prompt box stays at the bottom of the terminal (prompt_toolkit); A's activity and the rendered turn scroll above it and a status bar under it shows spinner · turn · elapsed · pending queries. Multi-line input is one prompt: Enter sends, \+Enter / Alt+Enter / Ctrl-J / Shift+Enter add a line, bracketed paste keeps newlines, first Ctrl-C clears the box. --plain, no TTY, or a missing prompt_toolkit fall back to the readline line loop. Wire it up with:
    alias claude='abstract-claude launch --dangerously-skip-permissions'
    

Config

AC_ROOT (default /srv/abstract_claude) holds config.json:

{ "listen_host": "127.0.0.1", "listen_port": 9111,
  "default_model": "claude-fable-5[1m]", "quota_fallback_model": "claude-opus-4-8",
  "preflight_quota_check": true }

Override the data root with AC_ROOT=/path abstract-claude ....

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abstract_claude-0.1.27.tar.gz (48.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abstract_claude-0.1.27-py3-none-any.whl (51.7 kB view details)

Uploaded Python 3

File details

Details for the file abstract_claude-0.1.27.tar.gz.

File metadata

  • Download URL: abstract_claude-0.1.27.tar.gz
  • Upload date:
  • Size: 48.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for abstract_claude-0.1.27.tar.gz
Algorithm Hash digest
SHA256 5821f210e6fcd52b70a6a9f6af8b6caf6cb4781d2e80cd6afd2dbaf566ab8848
MD5 71b84a729bbf1ecbf1ba983b53206586
BLAKE2b-256 038590da4963ef8768dd0b31baf490c2b7538c3a8c23cc070bfed9d405c42c8d

See more details on using hashes here.

File details

Details for the file abstract_claude-0.1.27-py3-none-any.whl.

File metadata

File hashes

Hashes for abstract_claude-0.1.27-py3-none-any.whl
Algorithm Hash digest
SHA256 f0b66a6fba88eb9e076ad392dcd206ab34e5876cf7e90ee85ae2d8ea9d1c805e
MD5 31bf3399d66f59206999c30f2fae922d
BLAKE2b-256 74959064c1f3b3ec0060654d4d83091deba2eba7c8c3a42b9fa8bb17ceed972e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.29

2 files

0.1.28

2 files

This release

0.1.27 This release

2 files

0.1.26

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

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