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.0a2.tar.gz (2.3 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.0a2-py3-none-any.whl (2.4 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for aethergraph-0.1.0a2.tar.gz
Algorithm Hash digest
SHA256 e68be13a9ddc2a22576de74d53979f0ac5ed85ec4d01597f50eb6025647c4319
MD5 ca6e979b604d45724c218bcc4f1087a7
BLAKE2b-256 ad6786fd9513a647362dee16da6312e15f5f6012752fa0cff10f125f71a58009

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for aethergraph-0.1.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 7d87881a593ffc881f9be544e50ceb557af2ddccd88fbef01c28bc3c97007995
MD5 74018387d8486792939e242c0c4aff10
BLAKE2b-256 fa6896d939cba54e8cc1ca499afa69afa2849b592dee30a347efa444465be576

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