Unified installer and documentation hub for the AbstractFramework ecosystem
Project description
AbstractFramework
Write once. Generate everything.
A modular, open-source ecosystem for building durable, observable, multimodal AI systems. Text, voice, image, video, music — one unified interface, any provider, any model, local or cloud.
AbstractFramework is an ecosystem of composable packages for building AI systems that work in operational reality:
- Durable by default: workflows pause and resume safely (survive crashes and restarts)
- Observable: an append-only ledger so any UI can reconstruct state by replaying history
- Controlled actions: explicit boundaries for tool execution, approvals, and evidence
- Multimodal: capability plugins (voice, vision, music) that stay out of your way until you need them
Think of it as an agentic OS: durable runs + replay-first observability + multimodal capabilities — write once, run across providers and deployment modes.
Prerequisites: Python 3.10+. Node.js 18+ for browser UIs. An LLM backend (Ollama, LM Studio, vLLM, or a cloud API key).
Two entrypoints
Start lightweight with just the LLM library, or go all-in with a production gateway. Both paths lead to the same ecosystem.
1) AbstractCore — LLM SDK + OpenAI-compatible /v1 server
Start here if you need a lightweight LLM library for scripts, notebooks, or existing applications. No infrastructure required — just pip install and call. Add multimodal capabilities with plugins as you grow.
- 9+ providers with identical API (local + cloud)
- Universal tool calling, structured output, streaming
- Media handling (images, PDFs, audio, video)
- OpenAI-compatible HTTP server mode (
/v1) - Multimodal via capability plugins (Voice, Vision, Music)
pip install abstractcore
from abstractcore import create_llm
llm = create_llm("ollama", model="qwen3:4b-instruct")
resp = llm.generate("Explain durable execution in 3 bullets.")
print(resp.content)
AbstractCore gives you one interface for provider switching, tools, structured output, and media — as a Python SDK or via /v1 for any OpenAI-compatible client.
2) AbstractGateway — durable run control plane (HTTP/SSE APIs)
Start here if you're building persistent AI applications — agents that run for hours, workflows that survive crashes, scheduled tasks. The gateway is your AI control plane: durable runs with ledger replay/streaming and thin clients that can attach/detach across devices.
- Durable execution that survives crashes and restarts
- Append-only ledger (replay-first) for auditability
- Scheduled workflows (cron-style, recurring)
- Multi-client: terminal, browser, tray, Telegram, email
- Start on one device, continue on another
pip install abstractgateway
export ABSTRACTGATEWAY_USER_AUTH=1
export ABSTRACTGATEWAY_ALLOWED_ORIGINS="http://localhost:*,http://127.0.0.1:*"
export ABSTRACTGATEWAY_WORKFLOW_SOURCE=bundle
export ABSTRACTGATEWAY_FLOWS_DIR="$PWD/bundles"
export ABSTRACTGATEWAY_DATA_DIR="$PWD/runtime/gateway"
abstractgateway serve --host 127.0.0.1 --port 8080
On first local start, Gateway creates default/admin, writes the browser-login
token to runtime/gateway/auth/bootstrap-admin-token, and prints the token in
the terminal. Use that admin user token in /console, AbstractFlow,
AbstractCode Web, or AbstractObserver. ABSTRACTGATEWAY_AUTH_TOKEN remains a
legacy server/operator bearer token; it is not a browser sign-in token.
Monitor runs from a browser:
npx @abstractframework/observer # open http://localhost:3001
For artifact and runtime-resource investigation, see
docs/guide/runtime-artifacts.md.
Author once, run everywhere (AbstractFlow)
AbstractFlow lets you author complex agentic orchestration as portable .flow bundles:
- Open the Flow Editor (
npx @abstractframework/flow) - Build a workflow: LLM steps, tool steps, branching, loops, subflows
- Export a
.flowbundle and copy it toABSTRACTGATEWAY_FLOWS_DIR - Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
AbstractAgent provides ready-made agent patterns (ReAct, CodeAct, MemAct) that can be used inside flows or standalone.
Monitor and schedule with AbstractObserver
- Observe: replay the full ledger of any run, or watch one live over SSE
- Control: cancel, resume, or inspect runs from the browser
- Schedule: durable schedules (cron-style) owned by the gateway — they survive restarts
Example apps
| App | What it does | Install |
|---|---|---|
| AbstractCode | Terminal agentic dev client — durable sessions, tool approvals, /workflow support |
pip install abstractcode |
| AbstractAssistant | macOS tray client — gateway-first, workflow picker per session, voice support | pip install abstractassistant |
| AbstractObserver | Browser UI — monitor, control, and schedule gateway runs | npx @abstractframework/observer |
| Code Web UI | Browser coding assistant (gateway-backed) | npx @abstractframework/code |
Install the pinned ecosystem profile
Light / Apple / GPU profiles
Choose how the framework runs based on your hardware and constraints. All profiles keep the same interfaces; they mainly change which local inference stacks are available.
Light (default) — endpoint-only inference (cloud APIs or local OpenAI-compatible servers), no in-process ML engine stacks:
pip install abstractframework
Apple — native Apple Silicon local stacks (MLX/Metal) in addition to endpoint providers:
pip install "abstractframework[apple]"
GPU — native GPU local stacks (CUDA/ROCm) in addition to endpoint providers:
pip install "abstractframework[gpu]"
See docs/install.md for the full install chooser, uv/venv guidance,
abstractframework doctor, and the generated installer manifest contract.
Documentation
| Page | What it covers |
|---|---|
| docs/README.md | Documentation hub — pick your starting point |
| docs/install.md | Light / Apple / GPU install chooser and first checks |
| docs/getting-started.md | Two entry points + first end-to-end run |
| docs/architecture.md | Layered model, durable execution primitives, comparisons |
| docs/configuration.md | Minimal config, where defaults live, Core vs Gateway |
| docs/glossary.md | Shared terminology (run, ledger, effect, wait, bundle, …) |
| docs/faq.md | Common questions, comparisons, troubleshooting |
| docs/api.md | Meta-package API (pins, helpers, re-exports) |
Developer setup (from source)
Clone all sibling repos and build everything in editable mode:
./scripts/clone.sh # clone 14 repos as siblings
source ./scripts/build.sh # editable installs into .venv (use `source` to stay in the venv)
Then configure:
abstractcore --config
abstractcore --install
License
MIT. See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file abstractframework-0.1.11.tar.gz.
File metadata
- Download URL: abstractframework-0.1.11.tar.gz
- Upload date:
- Size: 742.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9efcabebf3712839f4fee0a2c6d7d1e9a84500985e4932b429760713ef4a4300
|
|
| MD5 |
b198f56d9251811ef72964af746eec13
|
|
| BLAKE2b-256 |
4dad10eda424b37d707eda213b9ba6e65e34511787d2893acba050f2fa1f59f4
|
Provenance
The following attestation bundles were made for abstractframework-0.1.11.tar.gz:
Publisher:
release.yml on lpalbou/AbstractFramework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
abstractframework-0.1.11.tar.gz -
Subject digest:
9efcabebf3712839f4fee0a2c6d7d1e9a84500985e4932b429760713ef4a4300 - Sigstore transparency entry: 1819398514
- Sigstore integration time:
-
Permalink:
lpalbou/AbstractFramework@a3c4e7fb701a92e437c781b9184d685eeb8279ed -
Branch / Tag:
refs/tags/v0.1.11 - Owner: https://github.com/lpalbou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a3c4e7fb701a92e437c781b9184d685eeb8279ed -
Trigger Event:
push
-
Statement type:
File details
Details for the file abstractframework-0.1.11-py3-none-any.whl.
File metadata
- Download URL: abstractframework-0.1.11-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd4e811427eb99cdafbfcc3165f4f8e33b7bc9c53cc49989fc66ce9c751f2edf
|
|
| MD5 |
13e3e66c653900e6d5d5e58640f29f26
|
|
| BLAKE2b-256 |
c69f3ff841744d4f629bbce4ba361d295544131f5a205dbd79ad30afbd9f7ed2
|
Provenance
The following attestation bundles were made for abstractframework-0.1.11-py3-none-any.whl:
Publisher:
release.yml on lpalbou/AbstractFramework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
abstractframework-0.1.11-py3-none-any.whl -
Subject digest:
cd4e811427eb99cdafbfcc3165f4f8e33b7bc9c53cc49989fc66ce9c751f2edf - Sigstore transparency entry: 1819398719
- Sigstore integration time:
-
Permalink:
lpalbou/AbstractFramework@a3c4e7fb701a92e437c781b9184d685eeb8279ed -
Branch / Tag:
refs/tags/v0.1.11 - Owner: https://github.com/lpalbou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a3c4e7fb701a92e437c781b9184d685eeb8279ed -
Trigger Event:
push
-
Statement type: