AVRELIO
OSS · GRAPHAI 0.0.7 · MIT · PYTHON 3.9+ →
G · ORCHESTRATE
$ graphai --about

Lightweight, modular, graph-based AI.

GraphAI is a lightweight, modular framework for building graph-based AI agents and workflows. Unlike monolithic AI frameworks, it provides a clean foundation without abstractions for LLMs, embeddings, or vector databases — giving you the flexibility to build ultrafast, use-case-specific AI applications.

View on GitHub →Read the docs
GRAPHAI · EXECUTION TRACEAWAIT G.EXECUTE() · CONCURRENCY 8
add_joinstart{}parallel_router→ web · sqlweb_searchweb_resultsql_querysql_resultcode_execnot takenanswerstate merged
nodes executed
5 / 5
parallel branches
2
concurrent · 1 skipped
wall clock
1,853ms
if run sequentially
2,333ms
parallel_agent.pyASYNC
from graphai import Graph, node

@node(start=True)
async def start(input: dict):
    return {}

@node
async def web_search(input: dict):
    return {"web": await search(input["q"])}

@node
async def sql_query(input: dict):
    return {"sql": await db.fetch(input["q"])}

@node(end=True)
async def answer(input: dict):
    return {}

g = Graph()
g.add_parallel(start, [web_search, sql_query])
g.add_join([web_search, sql_query], answer)

result = await g.execute(input={"q": q})
§ I — WHY GRAPHAI3 PRINCIPLES
I
Modular

GraphAI provides a clean foundation without abstractions for LLMs, embeddings, or vector databases, giving you complete control over your AI stack.

II
Lightweight

Unlike monolithic AI frameworks, GraphAI is designed to be minimal and fast, letting you build use-case-specific solutions without unnecessary overhead.

III
Graph-based

Build complex AI workflows as interconnected graphs, enabling sophisticated agent behaviors and decision-making processes — each node a specific operation or decision point.

// YOUR STACK — COMPLETE CONTROLNO WRAPPERS
LLMs
OpenAI · Anthropic · Ollama · llama.cpp — called directly, no wrapper
Embeddings
Any encoder you already use, including semantic-router encoders
Vector DBs
Pinecone · Qdrant · pgvector — your client, your query
Observability
OpenTelemetry traces and streaming callbacks per node
// API — NODES, ROUTERS, JOINSPYTHON 3.9+
from graphai import Graph, node

@node(start=True)
async def node_start(input: dict):
    """Entry point for our graph."""
    return {"input": input}

@node
async def summarise(input: dict):
    text = input["input"]["text"]
    return {"summary": await llm.asummarise(text)}

@node(end=True)
async def node_end(input: dict):
    """Exit point for our graph."""
    return {"output": input["summary"]}

graph = Graph()
graph.add_node(node_start).add_node(summarise).add_node(node_end)

graph.add_edge(node_start, summarise)
graph.add_edge(summarise, node_end)

result = await graph.execute(input={"text": doc})
GET STARTED

Orchestrate the whole mesh.

Router decides, chunkers ingest, graphai runs it. Three libraries, one semantic mesh — from empty file to running graph.

FULLY OPEN SOURCE

Transparency in code, creativity in collaboration. GraphAI uses an MIT license so you can use it however and wherever you want. Interested in contributing? Find us at github.com/aurelio-labs/graphai.

AMERICA · EVROPA · ASIA© 2026 Aurelio Labs · MIT Licensed