Catalog PyPI
Back to packageRELEASE DETAILS

1.5.0

PyPI

aethershell

AetherShell - AI-powered typed shell with workflow orchestration and cloud deployment

agentaiautomationcloudllmpipelineserverlessshellworkflow
Published10 Aug 2026
Direct dependencies14
Transitive dependenciesNot calculated

README

Version 1.5.0 documentation

AetherShell Python SDK

Python bindings for AetherShell - AI-powered typed shell with workflow orchestration and cloud deployment.

Installation

# Core SDK
pip install aethershell

# With LangChain integration
pip install aethershell[langchain]

# With cloud deployment support
pip install aethershell[cloud]

# Everything
pip install aethershell[all]

Or from a checkout of the repository:

pip install ./integrations/python

Requires the ae binary on PATH. Install it with cargo install aethershell, or take a prebuilt binary from the releases page.

Versioning: this SDK versions independently of the ae shell — SDK 1.5.0 is current against shell 4.1.0.

Quick Start

from aethershell import AetherRuntime, Agent

# Create runtime
runtime = AetherRuntime()

# Evaluate AetherShell code
result = runtime.eval('[1, 2, 3] | map(fn(x) => x * 2)')
print(result)  # [2, 4, 6]

# Create and run an agent
agent = runtime.create_agent(
    name="researcher",
    model="openai:gpt-4o",
    tools=["http_get", "search"]
)

result = await agent.run("Find the latest Python release version")
print(result)

Features

  • Evaluation: Execute AetherShell code from Python
  • Pipelines: Process data with typed pipelines
  • Agents: Create and orchestrate AI agents
  • Swarms: Multi-agent coordination
  • Workflows: MapReduce, Saga, Fan-Out patterns
  • Metrics: Prometheus metrics, tracing, health checks
  • Distributed: Service discovery, leader election, load balancing
  • Cloud: Deploy as serverless functions (AWS, Azure, GCP, K8s)
  • LangChain: Full LangChain tool integration

Workflow Orchestration

from aethershell.workflows import (
    MapReduceWorkflow,
    SagaWorkflow,
    PipelineWorkflow,
    CircuitBreaker,
)

# MapReduce for parallel processing
workflow = MapReduceWorkflow(
    name="word_count",
    map_fn=lambda text: len(text.split()),
    reduce_fn=lambda a, b: a + b,
)
result = await workflow.run(["hello world", "foo bar baz"])
print(result.result)  # 5

# Saga with compensation
saga = SagaWorkflow("order")
saga.add_saga_step("reserve", reserve_inventory, rollback_reservation)
saga.add_saga_step("charge", charge_payment, refund_payment)
saga.add_saga_step("ship", ship_order, cancel_shipment)
result = await saga.run(order_data)

# Circuit breaker for fault tolerance
breaker = CircuitBreaker(name="api", failure_threshold=5)
result = breaker.call(lambda: api_request())

Metrics & Observability

from aethershell.metrics import (
    MetricsCollector,
    Counter,
    Gauge,
    Histogram,
    Tracer,
)

# Create metrics
collector = MetricsCollector(namespace="myapp")
requests = collector.counter("requests_total")
latency = collector.histogram("request_latency_seconds")

# Track metrics
requests.inc()
latency.observe(0.125)

# Export to Prometheus
print(collector.to_prometheus())

# Distributed tracing
tracer = collector.tracer("my-service")
with tracer.start_span("handle_request") as span:
    span.set_attribute("user_id", "123")
    # ... process request

Distributed Agents

from aethershell.distributed import (
    ServiceRegistry,
    LeaderElection,
    LoadBalancer,
    DistributedSwarm,
)

# Service discovery
registry = ServiceRegistry()
registry.register("agent-nlp", "host1", 8080)
registry.register("agent-nlp", "host2", 8080)

# Load balancing
lb = LoadBalancer(registry, strategy="round_robin")
service = lb.select_service("agent-nlp")

# Leader election
election = LeaderElection("node-1", registry, "cluster")
await election.run_election()
if election.is_leader:
    print("I am the leader!")

# Distributed swarm
swarm = DistributedSwarm("my-swarm", registry)
swarm.add_local_agent(my_agent)
result = await swarm.dispatch(goal="analyze data", capability="nlp")

Cloud Deployment

Deploy agents as serverless functions:

from aethershell.cloud import (
    CloudProvider,
    FunctionConfig,
    DeploymentConfig,
    deploy_agent,
)

# Configure function
config = DeploymentConfig(
    provider=CloudProvider.AWS_LAMBDA,
    region="us-east-1",
    function_config=FunctionConfig(
        name="my-agent",
        memory_mb=512,
        timeout_seconds=60,
    ),
)

# Generate deployment files
agent_code = '''
def create_agent(runtime):
    return Agent(name="analyst", model="openai:gpt-4o", runtime=runtime)
'''

files = deploy_agent(config, agent_code, output_dir="./deploy")
# Creates: handler.py, template.yaml, samconfig.toml, requirements.txt

Supported platforms:

  • AWS Lambda (SAM template)
  • Azure Functions (Bicep)
  • GCP Cloud Functions (Terraform)
  • Kubernetes/Knative (manifests + Skaffold)

LangChain Integration

from aethershell.langchain import (
    get_all_aethershell_tools,
    AetherWorkflowTool,
    AetherMapReduceTool,
    AetherMetricsTool,
)

# Get all tools for LangChain agent
tools = get_all_aethershell_tools()

# Use with LangChain
from langchain.agents import initialize_agent
agent = initialize_agent(tools, llm, agent="zero-shot-react-description")
agent.run("Process this data with MapReduce: [1,2,3,4,5]")

API Reference

AetherRuntime

runtime = AetherRuntime()

# Evaluate code
result = runtime.eval(code: str) -> Any

# Create agent
agent = runtime.create_agent(
    name: str,
    model: str = "openai:gpt-4o-mini",
    tools: List[str] = [],
    max_steps: int = 10
) -> Agent

# Run swarm
result = await runtime.run_swarm(
    agents: List[Agent],
    goal: str,
    policy: str = "round_robin",
    max_iterations: int = 10
) -> SwarmResult

Agent

agent = Agent(name="agent1", model="openai:gpt-4o")

# Run agent
result = await agent.run(goal: str) -> AgentResult

# Get trace
trace = agent.trace  # List of steps taken

A2UI Events

# Subscribe to events
def on_event(event: A2UIEvent):
    print(f"Event: {event.type}")

runtime.subscribe_a2ui(on_event)

# Event types
# - Notify: Notifications
# - Progress: Progress updates
# - Prompt: User prompts
# - AgentThinking: Agent reasoning

Development

# Clone repository
git clone https://github.com/nervosys/AetherShell.git
cd AetherShell/integrations/python

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Build package
python -m build

License

AGPL-3.0-or-later with commercial dual-license option — see LICENSE for details.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 22

Native requirements
14 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
typing-extensions
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
typing-extensions>=4.0runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pytest>=7.0; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.21; extra == "dev"runtime
black
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
black>=23.0; extra == "dev"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
mypy>=1.0; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
ruff>=0.1; extra == "dev"runtime
langchain
Environment
{
  "extras": "",
  "marker": "extra == \"langchain\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
langchain>=0.1; extra == "langchain"runtime
pydantic
Environment
{
  "extras": "",
  "marker": "extra == \"langchain\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.0; extra == "langchain"runtime
llama-index
Environment
{
  "extras": "",
  "marker": "extra == \"llamaindex\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
llama-index>=0.10; extra == "llamaindex"runtime
boto3
Environment
{
  "extras": "",
  "marker": "extra == \"cloud\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
boto3>=1.28.0; extra == "cloud"runtime
azure-functions
Environment
{
  "extras": "",
  "marker": "extra == \"cloud\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
azure-functions>=1.15.0; extra == "cloud"runtime
functions-framework
Environment
{
  "extras": "",
  "marker": "extra == \"cloud\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
functions-framework>=3.0; extra == "cloud"runtime
fastapi
Environment
{
  "extras": "",
  "marker": "extra == \"cloud\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.100.0; extra == "cloud"runtime
uvicorn
Environment
{
  "extras": "",
  "marker": "extra == \"cloud\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
uvicorn>=0.23.0; extra == "cloud"runtime
langchain
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
langchain>=0.1; extra == "all"runtime
pydantic
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.0; extra == "all"runtime
llama-index
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
llama-index>=0.10; extra == "all"runtime
boto3
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
boto3>=1.28.0; extra == "all"runtime
azure-functions
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
azure-functions>=1.15.0; extra == "all"runtime
functions-framework
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
functions-framework>=3.0; extra == "all"runtime
fastapi
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
fastapi>=0.100.0; extra == "all"runtime
uvicorn
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
uvicorn>=0.23.0; extra == "all"runtime

Distribution files

2 collected
aethershell-1.5.0-py3-none-any.whl

bdist_wheel · 35.42 KB · Python py3

Source file
aethershell-1.5.0.tar.gz

sdist · 44.74 KB · Python source

Source file

Repository

PENDING
nervosys/aethershell

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:55 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:8babbe796a5519339bfd5986154ed55b66a2e2f0e1801eb72d44d3dc4029d5aa

Other collected versions

View all collected versions →