Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

AetherShell can be configured through environment variables and config files.

Configuration File

The main configuration file is located at:

  • Linux/macOS: ~/.config/aethershell/config.toml
  • Windows: %APPDATA%\aethershell\config.toml

Example Configuration

# AetherShell Configuration

[general]
# Default shell features
history_size = 10000
auto_save_history = true
multiline_prompt = true

[ai]
# Default AI provider
default_provider = "openai"
default_model = "gpt-4o-mini"

# Response settings
max_tokens = 4096
temperature = 0.7
stream = true

[ai.providers.openai]
api_key = "${OPENAI_API_KEY}"  # Use env var
base_url = "https://api.openai.com/v1"

[ai.providers.anthropic]
api_key = "${ANTHROPIC_API_KEY}"
default_model = "claude-3-sonnet-20240229"

[ai.providers.ollama]
base_url = "http://localhost:11434"
default_model = "llama3"

[tui]
# TUI settings
theme = "catppuccin-mocha"
show_images = true
image_protocol = "kitty"  # kitty, iterm, sixel
max_image_width = 80
show_timestamps = true

[agent]
# Agent defaults
allowed_commands = ["ls", "cat", "grep", "find", "curl"]
max_tool_calls = 10
timeout_seconds = 300

[server]
# API server settings
host = "127.0.0.1"
port = 3002
enable_cors = true

[logging]
level = "info"  # debug, info, warn, error
file = "~/.local/share/aethershell/aethershell.log"

Environment Variables

VariableDescriptionExample
AETHER_AIDefault AI provideropenai, claude, ollama
OPENAI_API_KEYOpenAI API keysk-...
ANTHROPIC_API_KEYAnthropic API keysk-ant-...
GOOGLE_API_KEYGoogle AI API keyAIza...
OLLAMA_HOSTOllama server URLhttp://localhost:11434
AGENT_ALLOW_CMDSAllowed agent commandsls,cat,grep
AETHERSHELL_LOGLog leveldebug, info, warn

Setting Environment Variables

In your shell config (.bashrc, .zshrc, etc.):

export OPENAI_API_KEY="sk-your-key-here"
export AETHER_AI="openai"
export AGENT_ALLOW_CMDS="ls,cat,grep,find,curl,http_get"

Or in AetherShell:

env_set("OPENAI_API_KEY", "sk-your-key-here")

AI Provider Setup

OpenAI

export OPENAI_API_KEY="sk-..."

Available models: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo

Anthropic (Claude)

export ANTHROPIC_API_KEY="sk-ant-..."

Available models: claude-3-opus, claude-3-sonnet, claude-3-haiku

Google (Gemini)

export GOOGLE_API_KEY="AIza..."

Available models: gemini-pro, gemini-pro-vision

Local Models (Ollama)

  1. Install Ollama: https://ollama.ai
  2. Pull a model: ollama pull llama3
  3. Use in AetherShell:
ai("Hello", { model: "ollama:llama3" })

Multiple Providers

Use model URIs to specify the provider:

# OpenAI
ai("Query", { model: "openai:gpt-4o" })

# Anthropic
ai("Query", { model: "claude:claude-3-sonnet" })

# Ollama (local)
ai("Query", { model: "ollama:llama3" })

# OpenRouter
ai("Query", { model: "openrouter:anthropic/claude-3-opus" })

Command-Line Options

ae --help

Options:
  -e, --eval <CODE>       Evaluate code directly
  -c, --command <CMD>     Run a single command
  --tui                   Start in TUI mode
  --no-history           Disable history
  --config <PATH>        Use alternate config file
  --log-level <LEVEL>    Set log level
  --server               Start API server mode
  --port <PORT>          API server port (default: 3002)

Profile Scripts

AetherShell runs profile scripts on startup:

  • ~/.config/aethershell/init.ae - Runs on every startup
  • ~/.config/aethershell/login.ae - Runs on login shells

Example init.ae:

# Set up aliases
let ll = fn() => ls "." | sort_by("modified", "desc")
let search = fn(pattern) => grep pattern "."

# Configure AI
env_set("AETHER_AI", "openai")

# Welcome message
print("Welcome to AetherShell! 🐚")