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_data/   # 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_data
[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_data",
        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.0a6.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.0a6-py3-none-any.whl (3.3 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aethergraph-0.1.0a6.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.0a6.tar.gz
Algorithm Hash digest
SHA256 5c7d3ebb1caeb6c379f4ed93d92ee901aded56169d7b394d0931e4a1c42c81dd
MD5 1979aca9c8ffb461b1ea7eff2affe316
BLAKE2b-256 383cbc2f3f55954331d842dcee30c4839747c60b505245e83151fcc45dc21aec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aethergraph-0.1.0a6-py3-none-any.whl
  • Upload date:
  • Size: 3.3 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.0a6-py3-none-any.whl
Algorithm Hash digest
SHA256 6a88eea86c78cd17a756870044246294e482d0f21cf970d45c021b8648e2aaff
MD5 fd9ec5decf7a83a5d292d69b7e5d7bf3
BLAKE2b-256 cbe0f6d605188a2c310cb469deaa150895eaf1a1a11e73ae11b46ece457cb6c2

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