Skip to main content

Aetheris

CI License Python PyPI

A terminal AI assistant that works on your machine: it reads and writes files, runs commands and answers their prompts, searches the web, and can undo what it did. It is built for small local models first (Ollama), and talks to Anthropic, OpenAI, Gemini and Attacca with the same tools and the same approval prompts.

 you ──► prompt box / aetheris -p ──► model (Ollama · Anthropic · OpenAI · Gemini)
                                          │ tool call (native, or <tool_call> text + JSON repair)
                                          ▼
              permissions ─► approval ─► tool ─► git commit per edit ─► auto-verify
                                          │                                 │
                                          └──────── result back to the model ◄┘

Quickstart

Requirement Version Notes
Python 3.10+
Ollama any recent Only for local models. /connect reaches hosted providers without it
A model gemma4:e4b recommended Any model Ollama reports tools for, 8B+. See model notes
git optional Enables a commit per AI edit and /undo
# 1. Install
pip install aetheris
# 2. Pull a local model
ollama pull gemma4:e4b
# 3. Start it in the directory you want it to work in
aetheris

Inside, these six cover most sessions - /help shows them, /help all shows the rest:

Command What it does
/connect Pick a provider and model (Ollama, Anthropic, OpenAI, Gemini, Attacca)
/sessions Open a saved conversation
/set NAME value Change a setting, e.g. /set DEEPTHINK on, /set AUTO_ALLOW off
/undo Take back the last file change the AI committed
/clear Start a fresh conversation
/exit Leave

Important: it runs commands and edits files as you, asking first unless you allow it.


Installation / Usage

Option A - from PyPI

pip install aetheris                 # the `aetheris` command
pip install "aetheris[ast]"          # + Tree-sitter, for get_code_skeleton / query_ast_node
pip install "aetheris[attacca]"      # + the packages /connect attacca needs
pip install "aetheris[keyring]"      # + keep API keys in the OS keyring

Option B - from a checkout

# 1. Clone the project
git clone https://github.com/minjun1177/aetheris && cd aetheris
# 2. Install it editable, so a change takes effect without reinstalling
pip install -e .
pip install -r requirements.txt   # ...or only the dependencies; then run: python -m aetheris

Carrying on, and running without the prompt box

aetheris -c                                    # the newest session worked on in this directory
aetheris --resume <id or title>                # a particular one
aetheris -p "summarise CHANGELOG.md"           # one answer on stdout, then exit
git diff | aetheris -p "review this" --json    # piped input + JSON: text, tool calls, tokens
aetheris -p "fix the test" --auto-allow        # tools run without asking: scripts and CI

Using the parts

It is also a typed library: aetheris.MCPServer (MCP without an SDK) and aetheris.start_shell (a command you can answer while it runs). Only aetheris.__all__ is promised - docs/library.md.

Documentation

Topic
Features Everything it does, in one list
Setup and models Which models work, tests, the benchmark
Tools The model's tools, the call format, hashline editing
Providers Ollama, Anthropic, OpenAI, Gemini, Attacca, keys, reasoning models
Running commands run_cmd, live prompts, the Python VM
Undo and verify A commit per edit, /undo, auto-verify, /tdd
Permissions and secrets Allow/deny rules, approvals, .env redaction
Deepthink Plan, check, build, review, verify
Skills and MCP SKILL.md packs and MCP servers
Web search How results are found and ranked
Agent channel · Remote control Several agents in one project; driving a session from a phone
Configuration · Slash commands Every setting and every command
Design Architecture overview, tests, how it differs from other harnesses

Configuration / Environment Variables

/set changes a setting and saves it to ~/.aetheris/settings.json; all of them: docs/configuration.md.

Variable Default Description
AETHERIS_HOME ~/.aetheris Where sessions, settings, memory and keys live
AETHERIS_ACCEPT_TERMS unset 1 accepts the first-run terms where no terminal can ask
OLLAMA_HOST http://localhost:11434 The Ollama daemon (also /set OLLAMA_HOST)
ANTHROPIC_API_KEY · OPENAI_API_KEY · GEMINI_API_KEY unset Hosted keys; /connect can save one instead
AETHERIS_KEYRING on off keeps saved keys in providers.json (0600)

Project Structure

aetheris/
├── aetheris/            # the package: app.py, llm_client.py, tools.py, toolspec.py, ...
├── bench/               # run.py - measure a model on the documented tasks
├── docs/                # the user documentation
├── skills/              # bundled SKILL.md packs
├── tests/               # one script per area; each prints [ok]/[FAIL]
├── ARCHITECTURE.md      # for changing the code: how it fits, what not to break
├── CHANGELOG.md         # what changed, and why
└── pyproject.toml

Compatibility / License

Python 3.10 - 3.14
OS Linux, macOS, Windows (waiting-for-input detection is best on Linux)
Stable surface Slash commands, /set names, tool names, the ~/.aetheris layout and aetheris.__all__ - see CHANGELOG.md
License Apache-2.0 - see LICENSE. Provided "AS IS"; the first run says what it can do to your machine and asks once

Metadata

Release files for aetheris 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aetheris 1.2.0
File Size Uploaded Provenance Actions
aetheris-1.2.0.tar.gz 713.2 kB With provenance Details for aetheris-1.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for aetheris 1.2.0
File Interpreter ABI Platform Actions
aetheris-1.2.0-py3-none-any.whl Python 3 none any Details for aetheris-1.2.0-py3-none-any.whl

Total release size: 1.1 MB

Release files / aetheris-1.2.0.tar.gz

Download URL aetheris-1.2.0.tar.gz
Size 713.2 kB
Tags Source
SHA-256 checksum
How to use checksums
500c8dbbe353fb5fe91500220f25c4374d25fcf6aded6315a94234fa49fde5cd
BLAKE2b-256 checksum
How to use checksums
f9deeb590962b18a87c7edecd255165b56367d501cbcdd4507b97568be226e7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Release files / aetheris-1.2.0-py3-none-any.whl

Download URL aetheris-1.2.0-py3-none-any.whl
Size 392.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fdc2154485819ee6f78cd9aa4002fcd3c91298936ea81594e671a0c22eaf51cb
BLAKE2b-256 checksum
How to use checksums
83e345bd025db3f41faec372f41a90012e08b1c890952d97ae61ff7c368487d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Security for aetheris 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for aetheris-1.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page