Skip to main content

Aether — AI-native pipeline language and kernel

Project description

Aether

A deterministic orchestration language for AI agents.

CI License Version


LLM agents fail silently, run code with no safety model, and produce pipelines that are impossible to audit. Aether is an intermediate representation (IR) that gives AI-generated pipelines verifiable intent, typed outputs, and compile-time safety gates — without replacing the guest languages (Python, JS, shell) your nodes already use.

"Intent is Compilation."

How it works

You write (or generate) a .ae program describing a pipeline as a directed acyclic graph of typed nodes. Each node declares what it does (_intent), what safety level it requires (_safety), what it reads (::IN), what it writes (::OUT), and what must be true after it runs (::VALIDATE). The Aether kernel executes the DAG, enforces safety gates, validates outputs, and — if a node fails — optionally calls an LLM to repair the code and retry.

§ROOT 0xFF_MAIN {

  §ACT 0x1A {
    ::META { _intent: "fetch active users", _safety: "read_only" }
    ::EXEC<PYTHON> {
      import urllib.request, json
      return json.loads(urllib.request.urlopen("https://api.example.com/users").read())
    }
    ::OUT { $0xUSERS: Type<JSON> }
  }

  §ACT 0x2B {
    ::META { _intent: "filter to adults only", _safety: "pure" }
    ::IN   { $0xSRC: Ref($0xUSERS) }
    ::EXEC<PYTHON> {
      return [u for u in $0xSRC if u["age"] >= 18]
    }
    ::OUT      { $0xADULTS: Type<JSON> }
    ::VALIDATE { ASSERT len($0xADULTS) >= 0 OR HALT }
  }

}

Or use Aether-Short (.as) for ~60% fewer lines:

@pipeline 0xFF_MAIN

  $0xUSERS:  JSON = @std.io.net_get() {
    import urllib.request, json
    return json.loads(urllib.request.urlopen("https://api.example.com/users").read())
  }

  $0xADULTS: JSON = @std.proc.list.filter($0xUSERS) {
    return [u for u in $0xUSERS if u["age"] >= 18]
  } | ASSERT len($0xADULTS) >= 0 OR HALT

@end

Why not just write Python?

Raw Python / LangGraph Aether
Safety model None L0–L4 compile-time gates
Typed outputs Runtime duck typing Declared + validated at write time
Audit trail Manual logging Automatic output.ae.json with full node traces
Self-healing Manual try/except ASSERT ... OR RETRY(3) — LLM repairs the node
LLM generation cost 715–1,225 tokens (LangGraph/AutoGen) 415 tokens (3-node baseline)
Runtime LLM calls 0 (LangGraph) — 6,200 (AutoGen) 0 for deterministic pipelines

See docs/benchmark.md for the full token-cost comparison.

Features

  • 5-tier safety model — L0 (pure math) → L4 (system root). Nodes above your threshold are blocked before execution.
  • Typed state ledger — outputs are written to an immutable address space ($0xADDR) with type validation on every write.
  • Parallel DAG execution — independent nodes run concurrently via tokio::spawn; dependencies resolved with Kahn's topological sort.
  • ASL registry — 32 canonical intents (std.io.*, std.proc.*, std.ml.*, std.sec.*, etc.) with safety and language defaults.
  • Self-healing RETRYASSERT expr OR RETRY(3) sends failing code + assertion to Claude for repair. Requires your own ANTHROPIC_API_KEY.
  • English Toggleaether gen "description" turns plain English into a .ae program via Claude. Requires your own ANTHROPIC_API_KEY.
  • MCP serveraether-mcp exposes validate/execute/inspect as tools for Claude Code and other MCP-compatible clients.
  • REST APIaether-api runs on port 3737 for integration with LangChain, AutoGen, n8n, or any HTTP client.
  • Aether Lens — a standalone DAG visualizer (lens/index.html) that renders any output.ae.json execution log.

Installation

# Option 1: pip (recommended — no Rust required)
pip install aether-kernel

# Option 2: Pre-built binary
curl -fsSL https://raw.githubusercontent.com/baiers/aether/main/install.sh | bash

# Option 3: Build from source
cargo build --release

Quick Start

# Run a pipeline
aether examples/demo.ae

# Expand Aether-Short to inspect generated .ae
aether examples/pipeline.as --expand-only

# Run with a higher safety threshold (allow network calls)
aether examples/demo_showcase.ae --safety l3

# Self-healing (requires ANTHROPIC_API_KEY)
ANTHROPIC_API_KEY=sk-... aether examples/self_heal_demo.ae

# Generate a .ae program from plain English
ANTHROPIC_API_KEY=sk-... aether gen "fetch the top 10 HN stories and summarize each one"

# Start the REST API
aether-api  # → http://localhost:3737

# Start the MCP server (for Claude Code integration)
aether-mcp

Claude Code / MCP Integration

Add to your MCP config (~/.claude/mcp_config.json):

{
  "mcpServers": {
    "aether-kernel": {
      "command": "aether-mcp",
      "args": []
    }
  }
}

Claude can then call aether_validate, aether_execute, and aether_inspect directly.

Project Structure

src/          Rust kernel (parser, executor, ASL registry, self-healing, MCP, REST API)
asl/          ASL registry — 32 canonical intents (JSON)
examples/     Runnable .ae and .as programs
spec/         Formal EBNF grammar and type system docs
docs/         Whitepaper, benchmark paper, kernel manual
lens/         Aether Lens DAG visualizer (standalone HTML, no build step)
sdk/          LLM system prompt, MCP config, audit prompt
benchmark/    LangGraph / AutoGen equivalents + token counting scripts
python/       pip-installable wrapper (aether-kernel)

What's Included (Community — Free, Apache 2.0)

Feature
Parser, AST, topological executor
5-tier safety model (L0–L4)
ASL registry (32 canonical intents)
Aether-Short (.as) notation
Self-healing RETRY (your ANTHROPIC_API_KEY)
English Toggle aether gen (your ANTHROPIC_API_KEY)
MCP server for Claude Code
REST API
Aether Lens DAG visualizer

Aether Pro — hosted execution, managed LLM calls (no API key needed), extended ASL (200+ intents), persistent history. Learn more →

License

Licensed under the Apache License 2.0.

See docs/open-core.md for the Community vs Pro vs Enterprise breakdown.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

aether_kernel-0.3.0-py3-none-win_amd64.whl (6.3 MB view details)

Uploaded Python 3Windows x86-64

aether_kernel-0.3.0-py3-none-manylinux_2_17_x86_64.whl (13.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

aether_kernel-0.3.0-py3-none-macosx_14_0_arm64.whl (13.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

aether_kernel-0.3.0-py3-none-macosx_13_0_x86_64.whl (13.9 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file aether_kernel-0.3.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for aether_kernel-0.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ae379f2fd247d69d8b0292b2b25e1819ff277045b23f803597cd06f8e5db849a
MD5 fda898620e83df4e1c5871dc9b6106a4
BLAKE2b-256 596c481efa99d9b274d24087e1aea365dbde5e8a78477f15eb65635bbfc79ef1

See more details on using hashes here.

File details

Details for the file aether_kernel-0.3.0-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for aether_kernel-0.3.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 8a711bdc766009b9ffa146e89892a276bab5fa0705fede202e835b21084ea52c
MD5 096d840ffb12ec18d29bd8ac3c05b2e8
BLAKE2b-256 40f90ca968cbd4f8b06aa7f9db38c7fe0cea6964d921796849a89466b1a5c898

See more details on using hashes here.

File details

Details for the file aether_kernel-0.3.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for aether_kernel-0.3.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c06b237263ccf01fd34d365ed0cfd4bf3baaedcc90867f9d61ddbd8f4f56713d
MD5 82f0a4937a264c42faa44b590e10bbc8
BLAKE2b-256 19cafd08af30c69c2db4124e7adccc044d1aded2bdd5bd9a9a1794a7f1f3e2de

See more details on using hashes here.

File details

Details for the file aether_kernel-0.3.0-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for aether_kernel-0.3.0-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 14d4259f85414004f54f4f0dc3284567fd5165a5ed5de05c8154cdfb8f755d96
MD5 b92c2849f4aa677461d3b4eda8b10a0f
BLAKE2b-256 6b92ceea40f3f3906ae4f4d0b38a5a55b7e9bc89058f02d3a2c778f7e8323d65

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