Skip to content

liruifengv/amon-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

76 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Amon

Amon Coworker

Your AI coworker running on your desktop

δΈ­ζ–‡ | English



License: AGPL v3 Electron React TypeScript Zod

About Amon

Amon is an intelligent AI coworker that runs locally on your desktop. It doesn't just chat with you β€” it actually helps you get work done: writing code, executing commands, searching for information, and managing files.

Amon features a custom three-layer agent architecture with a provider-agnostic AI streaming layer, supporting multiple LLM providers including Anthropic Claude, OpenAI, Google Gemini, and API-compatible providers out of the box.

Starting with 0.3.0, Amon no longer depends on Claude Agent SDK. The runtime is implemented in-repo with a provider-agnostic AI layer, a framework-agnostic agent core, and Electron-specific integration.

Breaking Changes in 0.3.0

  • Claude Agent SDK has been removed and replaced by Amon's own agent core and runtime.
  • Settings and provider configuration moved to the new agent.providerConfigs[] / agent.activeProviderId / agent.activeModelId schema.
  • Existing settings are migrated on a best-effort basis. Older provider-specific fields and deprecated options may need to be reconfigured manually after upgrading.

Feature Overview

Let's take a look at Amon's features through screenshots.

Thinking / Tool Calls

Amon can think through your messages, execute tool calls, and complete your tasks.

Dark Theme

Amon supports both dark and light theme modes.

File Diff

Amon can display file modification diffs.

Send Images

Amon supports sending image messages.

Custom Multi-Provider

Amon allows you to add multiple API providers with built-in support for Anthropic Claude, OpenAI, Google Gemini, and API-compatible providers (GLM, MiniMax, Kimi, etc.).

Workspaces

Amon works on a per-workspace (folder) basis. You can set up multiple workspaces. Default workspace: ~/.amon/workspace

Amon supports Agent Skills β€” you can install Skills to add specialized capabilities to Amon.

Getting Started

Installation

Visit the Releases page to download the installer for your platform.

Note for macOS Users

Since the app is not Apple-signed, macOS may block it from running. After downloading, run the following command in the terminal to remove the quarantine attribute:

xattr -cr /Applications/Amon.app

Configuration

After first launch, follow these steps to configure:

  1. Configure AI Provider

    Go to Settings β†’ Provider, create and enable the AI provider you want to use

  2. Create a Workspace

    Go to Settings β†’ Workspace, create a new workspace and select a local folder as the project root

    Default workspace: ~/.amon/workspace

  3. Start Using

    Return to the main screen, click New Session, select a workspace and start chatting

Development Guide

Prerequisites

  • Node.js 18+ or Bun 1.0+
  • macOS / Windows / Linux

Development Commands

bun install            # Install dependencies
bun start              # Start dev server (with hot reload)
bun run lint           # Lint code
bun run typecheck      # Type check
bun run test           # Run tests
bun run changeset      # Create a changeset
bun run version        # Apply changesets and update CHANGELOG

Build and Package

bun run download:binaries  # Download runtime binaries (bun, uv)
bun run package            # Create app package (no installer)
bun run make               # Create platform installers

Project Structure

amon-agent/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ ai/            # Provider-agnostic AI streaming layer
β”‚   β”‚   β”œβ”€β”€ providers/ # Built-in providers (Anthropic, OpenAI, Google)
β”‚   β”‚   └── utils/     # Event stream, JSON parsing, overflow detection
β”‚   β”œβ”€β”€ agent/         # Framework-agnostic Agent class and loop
β”‚   β”œβ”€β”€ main/          # Electron main process
β”‚   β”‚   β”œβ”€β”€ agent/     # Electron-specific agent integration
β”‚   β”‚   β”œβ”€β”€ ipc/       # IPC communication handlers
β”‚   β”‚   β”œβ”€β”€ store/     # State management and persistence
β”‚   β”‚   β”œβ”€β”€ tools/     # 8 built-in tools (bash, read, write, edit, etc.)
β”‚   β”‚   β”œβ”€β”€ skills/    # Skill loading and parsing
β”‚   β”‚   └── workspace/ # User file loading (AGENTS.md, SOUL.md)
β”‚   β”œβ”€β”€ renderer/      # React renderer process
β”‚   β”‚   β”œβ”€β”€ components/# UI components
β”‚   β”‚   └── store/     # Zustand state management
β”‚   β”œβ”€β”€ preload/       # contextBridge IPC bridge
β”‚   β”œβ”€β”€ shared/        # Shared types, schemas, constants
β”‚   └── locales/       # i18n files (en, zh)
β”œβ”€β”€ resources/
β”‚   β”œβ”€β”€ icons/         # App icons
β”‚   └── [bun, uv]     # Runtime binaries
β”œβ”€β”€ skills/           # Built-in skills packaged with the app
└── forge.config.ts    # Electron Forge configuration

Architecture

Amon adopts a three-layer agent architecture, with each layer cleanly decoupled:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  src/ai/        AI Streaming Layer          β”‚  Provider-agnostic, multi-provider
β”‚                 (Anthropic / OpenAI / Google)β”‚  Unified streaming event model
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  src/agent/     Agent Core                  β”‚  Framework-agnostic Agent + Loop
β”‚                 (State, Tools, Messages)     β”‚  Dual-loop: tool exec + follow-up
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  src/main/agent/ Electron Integration       β”‚  AgentService, EventAdapter
β”‚                 (IPC, Push, Persistence)     β”‚  Session management, system prompt
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • AI Layer (src/ai/) β€” Provider-agnostic streaming abstraction. Global provider registry with 4 built-in providers. Normalizes all responses into a unified AssistantMessageEvent stream.
  • Agent Layer (src/agent/) β€” Framework-agnostic Agent class. Dual-loop architecture: inner loop (LLM call -> tool execution -> steering check), outer loop (follow-up queue -> repeat). Tool input validated with Zod schemas.
  • Integration Layer (src/main/agent/) β€” Wires Agent into Electron. AgentService resolves providers, models, skills, and workspace bootstrap files per session. EventAdapter bridges agent events to session store mutations and push notifications.

Tech Stack

Core Frameworks

  • Electron β€” Cross-platform desktop apps
  • React 19 β€” UI framework
  • TypeScript β€” Type safety

AI Layer

  • Custom provider-agnostic streaming layer
  • Anthropic SDK / OpenAI SDK / Google GenAI SDK
  • Dual-loop agent architecture (tool execution + follow-up)

Frontend

  • Tailwind CSS + Shadcn/ui β€” UI design
  • Zustand β€” State management
  • Streamdown β€” Streaming Markdown rendering

Build Tools

  • Vite β€” Lightning-fast builds
  • Electron Forge β€” Packaging and distribution
  • Bun β€” Runtime and package manager

Data & Validation

  • Zod v4 β€” Runtime type validation and tool input schemas
  • Shiki β€” Code syntax highlighting
  • i18next β€” Internationalization (en, zh)

License

This project is open-sourced under the AGPL-3.0 license.


Built with ❀️ by @liruifengv

About

Amon - Your AI coworker running on your desktop

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors