Skip to content

HieuAnh87/aether

Repository files navigation

Aether

AI Proxy Manager for macOS

A native macOS desktop application for managing AI agent presets and routing requests through a local proxy.

macOS Tauri SolidJS


Quick Start

# 1. Download the latest release
# Visit https://github.com/hieuda/aether/releases

# 2. Install Aether.app to Applications folder

# 3. Launch Aether and start the proxy
# Click "Start Proxy" in the Dashboard

# 4. Configure your AI client to use the proxy
# Set proxy URL to: http://localhost:8317

That's it! Your AI requests will now be routed through Aether's intelligent proxy.


Overview

Aether is a macOS desktop application that provides a graphical interface for managing AI agent presets and provider accounts. It bundles and manages a Go-based proxy sidecar (CLIProxyAPI) that routes AI requests based on configurable presets.

Key Features

  • 🎯 Agent Preset Management β€” Create, edit, and organize AI agent configurations
  • πŸ”‘ Provider Account Management β€” Securely store API keys in macOS Keychain
  • πŸ“Š Request Monitoring β€” Real-time view of proxied requests with detailed logs
  • πŸš€ Local Proxy Server β€” Bundled Go sidecar runs on port 8317 (configurable)
  • 🎨 Native macOS UI β€” Dark glassmorphism design with system tray integration
  • πŸ”„ Hot Reload β€” Automatically detects external config changes

Architecture

Aether is built with three layers:

  1. Frontend β€” SolidJS + Tailwind CSS v4
  2. Backend β€” Rust (Tauri v2) with native macOS integrations
  3. Sidecar β€” Go binary (CLIProxyAPI) managed as a child process
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         SolidJS Frontend (UI)           β”‚
β”‚  Stores: proxy, preset, account, etc.   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚ Tauri IPC
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       Rust Backend (Tauri v2)           β”‚
β”‚  Commands, Config, Keychain, Watcher    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚ stdin/stdout
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      Go Sidecar (CLIProxyAPI)           β”‚
β”‚   Proxy Server on localhost:8317        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

For detailed architecture documentation with Mermaid diagrams, see ARCHITECTURE.md.


Prerequisites

  • macOS 13.0+ (Ventura or later)
  • Node.js 18+ and pnpm
  • Rust 1.77.2+ (for building from source)
  • Xcode Command Line Tools

Installation

From Release (Recommended)

Download the latest .dmg from Releases and drag Aether to your Applications folder.

macOS Users

The app is not signed with an Apple Developer certificate yet. If macOS blocks the app:

xattr -cr /Applications/Aether.app

From Source

# Clone the repository
git clone https://github.com/hieuda/aether.git
cd aether

# Install dependencies
pnpm install

# Download the bundled sidecar binary (REQUIRED)
./scripts/download-sidecar.sh

# Run in development mode
pnpm tauri dev

# Build for production
pnpm tauri build

Important: The download-sidecar.sh script must be run before any Rust build. The sidecar version is pinned in .cliproxyapi-version.


Configuration

Aether reads and writes configuration files in ~/.config/aether/:

File Purpose
proxy-config.yaml Generated proxy configuration for CLIProxyAPI
settings.json Application settings (port, auto-start, etc.)

It also reads AI model/provider data from:

  • ~/.config/opencode/opencode.json β€” Model and provider definitions
  • ~/.config/opencode/oh-my-opencode-slim.json β€” Preset configurations

Note: Config path is ~/.config/aether/ (not ~/Library/Application Support/) because the Go sidecar's flag parser breaks on spaces in paths.


Usage

Starting the Proxy

  1. Launch Aether from Applications or the menu bar icon
  2. Click Start Proxy in the Dashboard or Control Panel
  3. The proxy will start on port 8317 (default, configurable in Settings)

Creating a Preset

  1. Navigate to Presets page
  2. Click Create Preset
  3. Configure:
    • Name and description
    • Model selection (provider/model/variant)
    • Temperature, max tokens, etc.
  4. Save

Adding Provider Accounts

  1. Navigate to Accounts page
  2. Click Add Account
  3. Select provider (OpenAI, Anthropic, etc.)
  4. Enter API key (stored securely in macOS Keychain)

Monitoring Requests

  1. Navigate to Monitor page
  2. View real-time request logs with:
    • Timestamp, method, path
    • Status code, duration
    • Request/response bodies

Development

Project Structure

aether/
β”œβ”€β”€ src/                    # SolidJS frontend
β”‚   β”œβ”€β”€ pages/             # Route pages
β”‚   β”œβ”€β”€ components/        # Reusable components
β”‚   β”œβ”€β”€ stores/            # State management
β”‚   └── styles/            # Tailwind CSS
β”œβ”€β”€ src-tauri/             # Rust backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ commands/      # Tauri commands
β”‚   β”‚   β”œβ”€β”€ config/        # Config management
β”‚   β”‚   β”œβ”€β”€ proxy/         # Sidecar lifecycle
β”‚   β”‚   └── keychain/      # macOS Keychain integration
β”‚   └── binaries/          # Sidecar binaries (downloaded)
β”œβ”€β”€ scripts/               # Build and utility scripts
└── public/                # Static assets

Available Commands

Task Command
Dev (full app) pnpm tauri dev
Dev (frontend only) pnpm dev
Typecheck tsc -b
Build pnpm tauri build
Bump version ./scripts/version-bump.sh <version>

Tech Stack

  • Frontend: SolidJS 1.9, Tailwind CSS v4, SolidJS Router
  • Backend: Rust (Tauri v2), Tokio async runtime
  • Sidecar: Go (CLIProxyAPI)
  • Build: Vite 6, TypeScript 6.0, esbuild

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Style

  • TypeScript/SolidJS: Use SolidJS primitives (createSignal, createEffect), not React hooks
  • Rust: Follow Rust 2021 edition conventions, use anyhow::Result for errors
  • CSS: Tailwind utility-first, custom tokens in src/styles/app.css

License

This project is licensed under the MIT License - see the[LICENSE](LICENSE) file for details.

Acknowledgments

  • CLIProxyAPI β€” Go-based AI proxy server
  • Tauri β€” Rust-based desktop app framework
  • SolidJS β€” Reactive JavaScript library

Support


Star History

Star History Chart


Made with ❀️ for the AI developer community

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors