Aether AI Agent — A professional-grade AI coding assistant for your terminal.
Project description
Aether AI Agent 🚀
A professional-grade AI coding assistant that runs directly in your terminal. Aether reads your code, writes files with surgical precision, runs commands safely, and helps you build faster — all from a beautifully designed CLI.
✨ Features
Core
- Rich Markdown Rendering — AI responses are rendered with full Markdown formatting (headers, code blocks, lists, bold/italic) via Rich's live display.
- Streaming with Live Preview — Watch responses render in real-time inside a styled panel with animated thinking spinner.
- Surgical File Editing — The
edit_filetool makes precise search-and-replace edits with color-coded diff previews, instead of rewriting entire files. - Smart Autocomplete —
@-mention files with Tab completion that respects.gitignoreand supports directory traversal.
Tools
Aether has 7 built-in tools the AI can use:
| Tool | Description |
|---|---|
read_file |
Read file contents before making changes |
write_file |
Create new files (with preview) |
edit_file |
Surgical search-and-replace on existing files (with diff preview) |
run_command |
Execute shell commands (safe commands auto-run, dangerous ones require approval) |
list_directory |
List files/folders with sizes, respecting .gitignore |
grep_search |
Search for text or regex patterns across the codebase |
find_files |
Find files by glob pattern (e.g., *.py, Dockerfile) |
Commands
| Command | Description |
|---|---|
/help |
Show all available commands |
/model [name] |
View or switch the active AI model |
/clear |
Clear conversation history |
/save [name] |
Save current conversation to disk |
/load [name] |
Load a previously saved conversation |
/usage |
Show token usage and session statistics |
/compact |
Summarize older messages to save tokens |
/undo |
Undo the last file modification |
/retry |
Retry the last message |
/copy |
Copy last AI response to clipboard |
/export [file] |
Export conversation to a Markdown file |
/config |
View current configuration |
Safety & UX
- Command Safety — Read-only commands (
ls,cat,git status, etc.) auto-execute. Destructive commands (rm,sudo, etc.) always require confirmation. --yoloMode — Auto-approve all operations for power users.- File Backups — Every file modification creates a backup. Use
/undoto restore. - Multi-line Input — End a line with
\to continue on the next line. - Session Persistence — Conversations auto-save on exit. Use
/saveand/loadto manage. - Token Tracking — Track input/output tokens and session duration with
/usage. - Graceful Error Recovery — Helpful hints for common API errors (invalid key, rate limits, timeouts).
Dependencies
openai— OpenAI-compatible API clientpython-dotenv— Environment variable managementrich— Rich text, Markdown rendering, panels, tables, and live displayprompt_toolkit— Interactive command line with autocomplete
Installation
1. Python (pip / pipx) — Recommended
pipx install aether-ai-cli
# Or:
pip install aether-ai-cli
2. NPM (Node.js)
npm install -g aether-ai-cli
3. Homebrew (macOS)
brew tap irtaza302/aether-agent
brew install aether
4. Local Development
git clone https://github.com/irtaza302/aether-agent.git
cd aether-agent
pip install -r requirements.txt
python aether.py
Usage
aether
On first launch, you'll be prompted for your OpenRouter API key. It's saved securely to ~/.aether_config.json.
Command Line Arguments
| Flag | Description |
|---|---|
--version |
Show version |
--model <name> |
Override the default model for this session |
--reset-key |
Clear and re-enter your API key |
--set-base-url <url> |
Set custom API base URL (e.g., http://localhost:11434/v1 for Ollama) |
--yolo |
Auto-approve all file writes and command executions |
Attaching Files
Type @ followed by a filename to give Aether context. Autocomplete filters out .gitignored files:
👤 You
❯ Can you refactor @aether.py to use async?
Multi-line Input
End a line with \ to continue typing on the next line:
👤 You
❯ Write a function that \
⋮ takes a list of numbers \
⋮ and returns the sorted unique values
Configuration
Aether stores its config in ~/.aether_config.json:
{
"OPENROUTER_API_KEY": "sk-or-...",
"API_BASE_URL": "https://openrouter.ai/api/v1",
"DEFAULT_MODEL": "anthropic/claude-sonnet-4"
}
Model Context Protocol (MCP) Support
Aether supports integrating with external Model Context Protocol (MCP) servers to extend its capabilities (e.g. connecting to local databases, searching the web, or accessing custom APIs).
To configure MCP servers, add an "mcp_servers" block to your ~/.aether_config.json:
{
"mcp_servers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "~/test.db"]
},
"everything": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-everything"]
}
}
}
When you start Aether, it will automatically connect to these servers and make their tools available to the AI.
Sessions are saved to ~/.aether_sessions/ and file backups to ~/.aether_backups/.
Publishing & Development
Use the included publish.sh script to build and publish across all platforms (PyPI, NPM, and PyInstaller binaries).
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aether_ai_cli-2.1.0.tar.gz.
File metadata
- Download URL: aether_ai_cli-2.1.0.tar.gz
- Upload date:
- Size: 37.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14905b838948d1c7fae7b070b3654083cd8a8e1bb7d7fcc2a3500911a471f7f7
|
|
| MD5 |
b60afe6df20b4ee562bca91479f2b7f4
|
|
| BLAKE2b-256 |
5fa6e4a8e10941bce8a94ebba006a2db872457ceb27ad3c378976aadedb425cf
|
File details
Details for the file aether_ai_cli-2.1.0-py3-none-any.whl.
File metadata
- Download URL: aether_ai_cli-2.1.0-py3-none-any.whl
- Upload date:
- Size: 31.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21ca5cb4259ce4d87732ae25976a30cfe362288682ce43e4517ae422c96b9bdd
|
|
| MD5 |
f2121e38570f3c9c61589b48717b0af6
|
|
| BLAKE2b-256 |
95f851b545ad0812f2b8953138d8679343cbb37c34ed79599695871257318897
|