Open Source · MIT Licensed · 14+ Packages

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.

from abstractcore import create_llm

llm = create_llm("ollama", model="qwen3:4b")

# Text
response = llm.generate("Write a haiku about space.")

# Voice
wav = llm.voice.tts(response.content, format="wav")

# Image
img = llm.vision.t2i("A nebula over mountains")

# Same interface. Any provider. Any model.
14+
Packages
9+
LLM Providers
5
Modalities
100%
Open Source

Choose Your Entry Point

Start lightweight with just the LLM library, or go all-in with a full production gateway. Both paths lead to the same ecosystem.

AbstractCore

A lightweight, unified Python library for interacting with any LLM. Small dependency footprint, zero infrastructure required. Perfect for scripts, notebooks, and building your own tools.

  • 9+ providers with identical API
  • Universal tool calling, structured output, streaming
  • Media handling (images, PDFs, audio, video)
  • OpenAI-compatible HTTP server mode
  • Multimodal via capability plugins (Voice, Vision, Music)
pip install abstractcore

AbstractGateway

A full production control plane for persistent, observable AI applications. Durable runs, scheduled workflows, ledger streaming, bundle discovery. The backbone for complex agentic systems.

  • Durable execution that survives crashes and restarts
  • Append-only tamper-evident ledger for full auditability
  • Scheduled workflows (cron-style, recurring)
  • Multi-client: terminal, browser, tray, Telegram, email
  • Start on one device, continue on another
pip install abstractgateway
# or
docker pull ghcr.io/lpalbou/abstractgateway

Modular by Design

Every package is independently installable. Use one or compose the full stack. Like building blocks, each piece fits precisely with the others.

One Interface for Every Modality

Text, voice, image, video, music. Same generate() pattern. Capability plugins extend AbstractCore seamlessly — install a plugin and new modalities appear on your LLM instance.


Request
text / voice / image

generate()
provider + model

Output
text / voice / image / video / music

Automated fallbacks ensure capabilities work even when a model lacks native support. A text-only model gains vision through smart captioning. A model without tool support gets prompted tool syntax rewriting.

Multimodal generation visual
# Install capability plugins once
pip install abstractcore abstractvoice abstractvision abstractmusic

# Now every llm instance can do more
from abstractcore import create_llm

llm = create_llm("ollama", model="qwen3:4b")

# Text generation
text = llm.generate("Tell me a story.").content

# Text-to-speech (offline, Piper/Whisper)
wav_bytes = llm.voice.tts(text, format="wav")

# Speech-to-text
transcript = llm.audio.transcribe("meeting.wav")

# Text-to-image (local Diffusers / MLX-Gen / OpenAI)
image = llm.vision.t2i("A lighthouse at sunset")

# Text-to-music (local ACE-Step v1.5)
music = llm.music.t2m("Ambient piano in C major", duration=30)

# Vision fallback: text-only models gain image understanding
resp = llm.generate("Describe this image", media=["photo.jpg"])
# Start the AbstractCore server
abstractcore serve --port 8080

# Text generation
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "qwen3:4b", "messages": [{"role": "user", "content": "Tell me a story."}]}'

# Text-to-speech
curl http://localhost:8080/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"input": "Hello world", "voice": "default"}' \
  --output speech.wav

# Text-to-image
curl http://localhost:8080/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{"prompt": "A lighthouse at sunset", "model": "flux.2-klein-4b"}'

Every Piece, Purpose-Built

14 packages. Each one independently useful. Together, a complete AI infrastructure.

Foundation

AbstractCore

Unified LLM API. 9+ providers (OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace, vLLM, OpenRouter, Portkey). Tools, structured output, streaming, media, MCP, embeddings, prompt caching, OpenAI-compatible server.

Foundation

AbstractRuntime

Persistent graph runner with durable execution. Append-only ledger, deterministic replay, pause/resume, snapshots, provenance tracking. Every operation is auditable and workflows survive crashes and restarts.

Composition

AbstractAgent

Agent patterns — ReAct, CodeAct, MemAct loops with durable runs. Configurable tool approval, max iterations, and full observability of every reasoning cycle.

Composition

AbstractFlow

Visual workflow editor inspired by UE4 Blueprints. Drag-and-drop nodes, export as portable .flow bundles, run as specialized agents anywhere. Recursive subflows, multi-agent orchestration.

Application

AbstractGateway

HTTP control plane for production AI. Durable runs with SSE streaming, scheduled workflows, bundle discovery, multi-client support. SQLite or Postgres backends. Docker-ready.

Application

AbstractCode

A durable coding assistant — available as a terminal TUI and a browser web app. Plan/review modes, MCP tools, persistent sessions. Full audit trail for every interaction.

Application

AbstractObserver

Full observability dashboard. Browse every run, replay agent cycles, schedule workflows, monitor real-time activity. Every AI decision is transparent and inspectable.

Application

AbstractAssistant

macOS tray assistant with voice mode. Gateway-first thin client with durable runs, workflow selection, real-time voice meter, and one-click voice interaction.

Modality Plugin

AbstractVoice

Voice I/O for AbstractCore. TTS (Piper, OmniVoice, Supersonic, AudioDIT), STT (Whisper), voice cloning, multilingual. Works entirely offline on your hardware.

Modality Plugin

AbstractVision

Image & video generation for AbstractCore. Text-to-image, image editing, text-to-video, image-to-video. Powered by Diffusers, MLX-Gen, GGUF, and OpenAI-compatible backends.

Modality Plugin

AbstractMusic

Music generation for AbstractCore. Text-to-music via ACE-Step v1.5 (local). Instrumental and vocal tracks, duration control, genre/style prompting.

Knowledge

AbstractMemory

Temporal triple store with provenance-aware knowledge graph, vector search, and LanceDB backend. Gives agents persistent, queryable memory across sessions.

Knowledge

AbstractSemantics

Schema registry for predicates, entity types, and JSON Schema refs. Provides vocabulary validation so knowledge graphs and agent memory stay consistent.

Tooling

MLX-Gen

Generative image & video model runtimes for Apple Silicon MLX. FLUX.2, Z-Image, Qwen, ERNIE, Wan2.2 T2V/I2V. Quantized models, LoRA, depth estimation. Powers AbstractVision on Mac.

Blueprint Your AI Workflows

Inspired by Unreal Engine 4 Blueprints. Drag-and-drop nodes, wire connections, export portable .flow bundles that run anywhere in the ecosystem.

AbstractFlow visual editor showing a multimodal dialogue workflow

Design Complex Pipelines Visually

Create workflows that combine LLM calls, voice generation, image generation, conditionals, loops, and subflows. Every node is configurable with provider, model, and parameter controls.

  • LLM, Agent, Tool, Conditional, Loop, and Subflow nodes
  • Multi-agent orchestration with self-check loops
  • Export as .flow bundle — share with the community
  • Use flows as specialized agents in conversations

Multimodal Output at Every Turn

A single workflow turn can produce text, narrated audio, and a generated image. All artifacts are tracked, stored, and replayable through the ledger.

  • Text + voice + image generated per turn
  • Full artifact provenance and storage
  • Interactive audio player with scrubbing
  • Every step inspectable with raw JSON
One turn producing text, voice audio, and a generated image
Multi-agent orchestration flow with intent analyzer, agent, and reviewer

Multi-Agent Orchestration

Build self-correcting loops with specialized agents. An intent analyzer feeds an executor agent, whose output is reviewed and optionally revised before delivery. Compose arbitrarily complex reasoning chains.

  • Intent Analyzer → Agent → Reviewer pipeline
  • Conditional branching for iterative improvement
  • JSON Schema validation for structured outputs
  • Each agent can use different provider/model

AbstractCode — Terminal and Web

A durable coding assistant that works in your terminal and browser. Every session, every tool call, every decision is persisted and auditable. Start in the terminal, continue in the browser.

AbstractCode full auditability view

Complete Auditability

Every LLM call, every tool execution, every reasoning step is recorded in the ledger. Inspect system prompts, user messages, responses, tool calls, and raw JSON. Replay any conversation from history.

  • Full message history with System/User/Tools/Response tabs
  • Reasoning traces visible and inspectable
  • Run context with token counts and timing
  • Cross-device continuity via gateway

AbstractObserver — See Everything

Monitor every AI activity. Schedule agentic tasks. Browse the full ledger. Every decision your AI ever made is transparent, replayable, and auditable.

AbstractObserver scheduling interface

Schedule Agentic Tasks

Set up recurring AI jobs with full cron-style scheduling. Daily news digests, code analysis, monitoring reports — with shared context across executions and durable history.

  • Immediate or scheduled execution
  • Repeat forever, N times, or until a date
  • Shared context across executions
  • Provider and model selection per schedule

Full Ledger Transparency

Browse every step, every tool call, every LLM interaction in real-time. The ledger view shows the complete execution trace with timing, status, and full payloads.

  • Real-time SSE streaming of execution events
  • Step-by-step trace with JSON inspection
  • Tool approval tracking and wait states
  • Context compaction monitoring
AbstractObserver ledger view

Images and Video, Locally

Generate images and video on your hardware. MLX-Gen powers Apple Silicon with FLUX.2, Z-Image, Qwen, ERNIE, Wan2.2. Mixed quantization (q4/q8) for efficiency on consumer hardware.

Text-to-Video (Wan2.2)

Local video generation via Wan2.2 TI2V 5B with first-frame image-to-video conditioning. Generated entirely on-device.

Text-to-Music (ACE-Step / ACE Music)

Generate music from text prompts. Local via ACE-Step v1.5 on Apple Silicon, or remote via ACE Music API. Instrumental and vocal tracks with genre/style control.

Ambient Electronic Chill
Prompt: "ambient electronic chill lofi beats, soft synthesizer pads, gentle piano melody"

Three Modes of Operation

Choose how the framework runs based on your hardware, privacy requirements, and cost constraints. All modes use the same code and interfaces.

Light

Remote inference only. Use cloud APIs from OpenAI, Anthropic, OpenRouter, Portkey, or any OpenAI-compatible endpoint. Minimal hardware requirements.

OpenAI Anthropic OpenRouter Portkey

Apple

Full local multimodal inference on Apple Silicon. Ollama, LMStudio, MLX, MLX-Gen for images/video. Unified memory enables running large models efficiently.

MLX MLX-Gen Ollama LMStudio

GPU

Local multimodal inference on NVIDIA or AMD GPUs. vLLM, HuggingFace Transformers, Diffusers. High-throughput production workloads with full CUDA/ROCm support.

vLLM HuggingFace Diffusers CUDA

Start Anywhere. Continue Everywhere.

Thanks to the durable runtime and gateway, conversations and tool histories replay across any device and any application. Start work on the terminal, continue in the browser, check on your phone.


Terminal TUI

Gateway + Ledger

Browser / Tray / Telegram

The append-only ledger captures every operation. Any client connecting to the gateway can replay and continue any run from its full history. Gateway-first architecture ensures all runs are durable by default.

Graph Memory & Strong Semantics

Agents need memory. AbstractMemory provides a temporal, provenance-aware knowledge graph. AbstractSemantics ensures schema consistency across the entire ecosystem.

Knowledge graph visualization

Temporal Triple Store

Every fact is a triple (subject, predicate, object) with timestamps, confidence scores, and provenance. Facts expire. Facts can be observations or beliefs. The graph remembers when something was true, not just that it was true.

  • Append-only with validity windows (since/until)
  • Provenance: who extracted it, from what span
  • Multiple backends: InMemory, SQLite, LanceDB
  • Vector search for semantic similarity queries
from abstractmemory import InMemoryTripleStore, TripleAssertion, TripleQuery

store = InMemoryTripleStore()
store.add([
    TripleAssertion(
        subject="user",
        predicate="prefers",
        object="dark mode",
        scope="session",
        confidence=0.95,
        provenance={"source": "conversation"}
    )
])

hits = store.query(TripleQuery(subject="user", limit=10))
# Query the knowledge graph via gateway
curl http://localhost:8080/api/gateway/kg/query \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"subject": "user", "limit": 10}'

# AbstractSemantics validates predicates
from abstractsemantics import load_semantics_registry
reg = load_semantics_registry()
# 50+ predicates, entity types, CURIE prefixes

Schema-Validated Semantics

AbstractSemantics provides the ontology: allowed predicates, entity types, CURIE prefixes. JSON Schema generation ensures every knowledge assertion is valid. No hallucinated predicates, no schema drift.

  • YAML registry of predicates and entity types
  • JSON Schema builder for LLM structured output
  • Framework-wide vocabulary consistency
  • Override via env for custom ontologies
prefers works_on knows uses related_to user dark_mode project_ alpha Python

One API. Every Provider.

Switch between providers with a single line change. Same code, same tools, same structured output. From local open-source models to cloud APIs.

# Switch providers with zero code changes
llm = create_llm("ollama",     model="qwen3:4b-instruct")
llm = create_llm("lmstudio",   model="qwen/qwen3-4b-2507")
llm = create_llm("mlx",        model="mlx-community/Qwen3-4B")
llm = create_llm("huggingface", model="Qwen/Qwen3-4B-Instruct")
llm = create_llm("openai",     model="gpt-4o-mini")
llm = create_llm("anthropic",  model="claude-haiku-4-5")
llm = create_llm("openrouter", model="any/model")
llm = create_llm("vllm",       model="your-model")
llm = create_llm("portkey",    model="any/model")

# Same interface everywhere
response = llm.generate("Hello", tools=[my_tool], response_model=MySchema)
# AbstractCore's server is OpenAI-compatible
# Point any OpenAI SDK or tool at it

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8080/v1", api_key="unused")

response = client.chat.completions.create(
    model="qwen3:4b",
    messages=[{"role": "user", "content": "Hello"}],
    tools=[my_tool_schema],
)

# Works with LangChain, LlamaIndex, Vercel AI SDK, etc.

Up and Running in Minutes

# Install the core LLM library
pip install abstractcore

# Local provider (no API keys needed)
ollama serve && ollama pull qwen3:4b

# Your first call
from abstractcore import create_llm
llm = create_llm("ollama", model="qwen3:4b")
print(llm.generate("Hello!").content)

# Add multimodal capabilities
pip install abstractvoice abstractvision abstractmusic
# Install the entire framework
pip install "abstractframework[all]"

# Start the gateway
abstractgateway serve --port 8080

# Launch browser UIs
npx @abstractframework/observer
npx @abstractframework/flow
npx @abstractframework/code

# Or use the terminal agent
abstractcode --provider ollama --model qwen3:4b
# Pull and run the gateway
docker pull ghcr.io/lpalbou/abstractgateway

docker run -p 8080:8080 \
  -v abstractdata:/data \
  ghcr.io/lpalbou/abstractgateway

# Then connect any thin client
npx @abstractframework/observer
npx @abstractframework/code

Apple Silicon Profile

pip install "abstractframework[apple]"

Optimized for M-series Macs with MLX, MLX-Gen, and unified memory.

GPU Profile

pip install "abstractframework[gpu]"

Full CUDA/ROCm support with vLLM, Diffusers, and HuggingFace.

Light Profile

pip install "abstractframework[all]"

Cloud-only inference. Works anywhere Python runs.

Where We Are & What's Next

AbstractFramework is under active development. Here's what's shipped and what we're building next.

Shipped

Foundation

AbstractCore (9+ LLM providers), AbstractRuntime (durable execution), AbstractAgent (ReAct/CodeAct/MemAct)

Shipped

Multimodal Capabilities

AbstractVoice (TTS/STT/cloning), AbstractVision (T2I/I2I/T2V/I2V via MLX-Gen), AbstractMusic (ACE-Step)

Shipped

Applications

AbstractGateway (control plane), AbstractFlow (visual editor), AbstractCode (TUI + web), AbstractObserver (monitoring)

Shipped

Knowledge Layer

AbstractMemory (temporal KG), AbstractSemantics (schema registry), agent memory effects

In Progress

Ecosystem Maturation

OpenAI Responses API support, Agent Skills integration, advanced prompt caching, expanded model registries, installer UX

Planned

Scale & Community

Community skill marketplace, shared .flow bundle registry, multi-tenant gateway, enterprise deployment guides, expanded Docker profiles

Why AbstractFramework?

100% Open Source

MIT licensed. No black boxes, no vendor lock-in. You own everything. Inspect, modify, and extend every line of code.

Local First

Run entirely offline with open-source models. Privacy and cost control by default. Cloud APIs available when you need them.

Durable by Default

Workflows survive crashes and restarts. Resume exactly where you left off. The append-only ledger ensures nothing is lost.

Observable

Every LLM call, tool execution, and decision is logged. Replay any run from history. No AI black boxes.

Composable

Use one package or the full stack. Every component is independently installable and works with or without the others.

Write Once, Run Everywhere

Same code across providers. Same workflows across devices. Export and share .flow bundles with anyone.

Build the Future of AI Systems

AbstractFramework gives you the building blocks. What you build is up to you.

Get Started on GitHub Install from PyPI AbstractCore Docs Docker Hub 🤗 HuggingFace Models npm Packages