Skip to main content

Python-first agentic DAG execution framework

Project description

AetherGraph

AetherGraph

AetherGraph is a Python-first agentic DAG execution framework for building and orchestrating AI-powered workflows. It pairs a clean, function-oriented developer experience with a resilient runtime—event-driven waits, resumable runs, and pluggable services (LLM, memory, artifacts, RAG)—so you can start simple and scale to complex R&D pipelines.

Use AetherGraph to prototype interactive assistants, simulation/optimization loops, data transforms, or multi-step automations without boilerplate. It works with or without LLMs—bring your own tools and services, and compose them into repeatable, observable graphs.


Requirements

  • Python 3.10+
  • macOS, Linux, or Windows
  • (Suggested) LLM API keys (OpenAI, Anthropic, Google, etc.)
  • (Optional) slack or telegram token. See Channel Setup
  • (Optional UI) A modern browser to use the built-in AetherGraph web UI

Install

Option A — PyPI (recommended)

pip install aethergraph

Optional extras:

# Slack adapter
pip install "aethergraph[slack]"

# Dev tooling (linting, tests, types)
pip install "aethergraph[dev]"

The PyPI package ships with a prebuilt UI bundle, so /ui works out of the box when you run the server locally.

Option B — From source (editable dev mode)

git clone https://github.com/AIperture/aethergraph.git
cd aethergraph

# Base
pip install -e .

# With extras
echo "(optional)" && pip install -e ".[slack,dev]"

When running from source, the backend still works without the frontend bundle. If you want the built-in UI from source, you’ll need to build the frontend and copy the static bundle into aethergraph/server/ui_static/ (see the “UI Guide” in the docs).


Configure

Aethergraph can run without an LLM, but for many LLM-backed flows in examples, set keys via environment variables or a local secrets file.

Minimal example (OpenAI):

# .env (example)
AETHERGRAPH_LLM__ENABLED=true
AETHERGRAPH_LLM__DEFAULT__PROVIDER=openai
AETHERGRAPH_LLM__DEFAULT__MODEL=gpt-4o-mini
AETHERGRAPH_LLM__DEFAULT__API_KEY=sk-...your-key...

Or inline in a script at runtime (for on-demand key setting):

from aethergraph.runtime import register_llm_client

open_ai_client = register_llm_client(
    profile="my_llm",
    provider="openai",
    model="gpt-4o-mini",
    api_key="sk-...your-key...",
)

See the docs for setup of external channel methods (Slack, Telegram, etc.) for real-time interaction.

Where should .env live? In your project root (the directory where you run your Python entry point). You can override with AETHERGRAPH_ENV_FILE=/path/to/.env if needed.


Verify install

python -c "import aethergraph; print('AetherGraph OK, version:', getattr(aethergraph, '__version__', 'dev'))"

Run the built-in UI

AetherGraph ships with a small web UI that lets you:

  • Browse and launch apps (click-to-run graphs)
  • Chat with agents (graph-backed chat endpoints)
  • Inspect runs, sessions, and artifacts

1. Define a simple project module

From your project root:

my_project/
  demos/
    __init__.py
    chat_demo.py
  aethergraph_workspace/   # workspace (created automatically as needed)

Example chat_demo.py:

# demos/chat_demo.py
from aethergraph import graphify

@graphify(
    name="chat_with_memory_demo",
    inputs=[],
    outputs=["turns", "summary"],
    as_app={
        "id": "chat_with_memory_demo",
        "name": "Chat with Memory",
    },
)
def chat_with_memory_demo():
    # Your graph implementation here – tools, nodes, etc.
    ...

as_app={...} tells AetherGraph to expose this graph in the App Gallery of the UI. You can also define graph_fn-based agents with as_agent={...} to appear in the Agent Gallery.

2. Start the server with UI from the terminal (recommended)

From my_project/:

aethergraph serve \
  --project-root . \
  --load-module demos \
  --reload

This will:

  • Add . to sys.path so demos can be imported.
  • Load any graphs/apps/agents defined in the demos module.
  • Start the API + UI server on http://127.0.0.1:8745.
  • Enable auto-reload: editing your graph files triggers a restart and reload.

You should see log lines like:

[AetherGraph] 🚀  Server started at:  http://127.0.0.1:8745
[AetherGraph] 🖥️  UI:                 http://127.0.0.1:8745/ui
[AetherGraph] 📡  API:                http://127.0.0.1:8745/api/v1/
[AetherGraph] 📂  Workspace:          ./aethergraph_workspace
[AetherGraph] ♻️  Auto-reload:        enabled

Then open in your browser:

  • UI: http://127.0.0.1:8745/ui – App Gallery, Agent Gallery, runs, sessions, artifacts.
  • API: http://127.0.0.1:8745/api/v1/ – for direct HTTP calls.

3. (Optional) Start the server from a Python script

If you prefer to embed the server in your own launcher:

# start_server.py
from aethergraph import start_server

if __name__ == "__main__":
    start_server(
        workspace="./aethergraph_workspace",
        project_root=".",
        load_module=["demos"],
        host="127.0.0.1",
        port=8745,
    )
python start_server.py

For active development, the CLI with --reload is recommended. start_server(...) is better when you want a simple “ship a server in my app” story.

For more details, see the UI Guide section in the docs (server setup, agents/apps, and common pitfalls).


Examples

Quick-start scripts live under examples/ in this repo.

Run an example:

cd examples
python hello_world.py

A growing gallery of standalone examples and recipes lives under:


Troubleshooting

  • ModuleNotFoundError: ensure you installed into the active venv and that your shell is using it.

  • LLM/API errors: confirm provider/model/key configuration (env vars or your local secrets file).

  • Windows path quirks: clear any local cache folders (e.g., .rag/) and re-run; verify write permissions.

  • Slack extra: install with pip install "aethergraph[slack]" if you need Slack channel integration.

  • UI shows no apps/agents:

    • Make sure your module (e.g. demos) is importable under --project-root.
    • Ensure at least one graph has as_app={...} or graph_fn has as_agent={...}.

Contributing (early phase)

  • Use feature branches and open a PR against main.
  • Keep public examples free of real secrets.
  • Run tests locally before pushing.

Dev install:

pip install -e .[dev]
pytest -q

Project Links


License

Apache-2.0 — 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

aethergraph-0.1.0a11.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

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

aethergraph-0.1.0a11-py3-none-any.whl (3.4 MB view details)

Uploaded Python 3

File details

Details for the file aethergraph-0.1.0a11.tar.gz.

File metadata

  • Download URL: aethergraph-0.1.0a11.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for aethergraph-0.1.0a11.tar.gz
Algorithm Hash digest
SHA256 3e1281904f60f8e562fbb2eaf364bf333d2dfa0dba9980c1f5b1426d1cb78aed
MD5 1b4b9ec7d1f3b9f5144fd7f99a4f91af
BLAKE2b-256 7a71c65e69c153a751344cd694cd02e45efdb54b3d2d125f64a58544cba20755

See more details on using hashes here.

File details

Details for the file aethergraph-0.1.0a11-py3-none-any.whl.

File metadata

  • Download URL: aethergraph-0.1.0a11-py3-none-any.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for aethergraph-0.1.0a11-py3-none-any.whl
Algorithm Hash digest
SHA256 0e385f4f6519c84db61d5f66212359722cc71e2f5ca6373b2faafd6a1600ab5b
MD5 bca3896f04707bf07afc9c9b9557c42f
BLAKE2b-256 2b0b376bfe5d66f2048cc409f4b2dfb0f1aebdce83e0fbfdd211ef2779286a63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page