EvoDuck is a local-first AI agent framework written in Go for personal workflows, customer support, and internal team support.
It combines native memory, knowledge accumulation, context compression, background experience curation, MCP integration, language-agnostic plugins, and multi-channel delivery in a lightweight runtime.
EvoDuck is built for operators who want AI agents that are inspectable, extensible, and practical in real long-running environments.
Instead of treating the agent as disposable chat, EvoDuck keeps configuration, memory, logs, sessions, and runtime assets close to the operator. It is designed to start fast, stay lightweight, and get stronger through repeated use.
- Built for both personal and enterprise-facing use with native
admin,employee, andcustomerrole boundaries. - Works in simple admin mode for solo use, and also supports customer support and internal team support scenarios.
- Requires very little configuration to become useful for support-style workloads.
- Includes a native knowledge base and native memory system so the agent can accumulate durable context over time.
- Performs automatic memory extraction and memory refinement instead of treating every conversation as isolated.
- Uses native context compression to balance capability and token efficiency for long-running use.
- Supports background experience curation, turning valuable work into reusable knowledge and skills.
- Keeps first-class MCP support so teams can reuse the mature MCP ecosystem instead of rebuilding integrations from scratch.
- Provides a lightweight, language-agnostic plugin mechanism for
tool,provider,channel, andhookextensions. - Connects agents to real channels including
webchat,weixin, andwecom. - Written in Go for fast startup, responsive execution, and low resource consumption.
- Install or build the
evoduckbinary. - Run
evoduck runfor the first time. - EvoDuck creates the default config and runtime directories.
- If the config is still the default template, EvoDuck enters the setup wizard.
- After setup, extend the system with channels, Skills, MCP servers, and plugins.
EvoDuck does not force a single extension model.
- Use Skills to package reusable behavior and operational guidance.
- Use MCP to quickly plug into an existing and mature external tool ecosystem.
- Use plugins when you want lightweight integration for your own tools, providers, channels, or hooks.
- Plugins are language-agnostic, which makes it easier to connect internal systems and custom business logic without forcing everything into the Go core.
Windows PowerShell:
irm https://raw.githubusercontent.com/chawuciren/evoduck/main/scripts/install.ps1 | iexWith an HTTP proxy:
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:HTTPS_PROXY="http://127.0.0.1:7897"
irm -Proxy "http://127.0.0.1:7897" https://raw.githubusercontent.com/chawuciren/evoduck/main/scripts/install.ps1 | iexmacOS/Linux:
curl -fsSL https://raw.githubusercontent.com/chawuciren/evoduck/main/scripts/install.sh | shThe install scripts install EvoDuck into a user-level bin directory and can be rerun later to update an existing installation.
If the online script is unavailable, install from the latest GitHub Release manually:
- Open
https://github.com/chawuciren/evoduck/releases/latest. - Download the asset for your system:
- Windows x64:
evoduck-windows-amd64.zip - Windows ARM64:
evoduck-windows-arm64.zip - macOS Intel:
evoduck-darwin-amd64.tar.gz - macOS Apple Silicon:
evoduck-darwin-arm64.tar.gz - Linux x64:
evoduck-linux-amd64.tar.gz - Linux ARM64:
evoduck-linux-arm64.tar.gz
- Windows x64:
- Extract the archive. The archive root contains
evoduck.exeon Windows orevoduckon macOS/Linux. - Move the executable to a user-level bin directory:
- Windows:
%USERPROFILE%\.local\bin\evoduck.exe - macOS/Linux:
~/.local/bin/evoduck
- Windows:
- Add that bin directory to your
PATH. - Open a new terminal and verify with
evoduck version.
First use after manual install:
- Run
evoduck run. - EvoDuck creates the default config under
.evoduck. - If the provider is not configured, the setup wizard starts automatically.
- Configure channels later with
evoduck channel add, or edit the config file directly.
evoduck updateUseful options:
evoduck update --check
evoduck update --version v0.1.0
evoduck update --force
evoduck update --install-dir ~/.local/binEnvironment overrides:
EVODUCK_VERSION: install a specific release version, defaultlatestEVODUCK_INSTALL_DIR: override the install directoryEVODUCK_REPO: override the GitHub repository, defaultchawuciren/evoduck
Binary install locations:
- Linux/macOS:
~/.local/bin/evoduck - Windows:
%USERPROFILE%\.local\bin\evoduck.exe
Runtime data locations:
- Linux/macOS:
~/.evoduck - Windows:
%USERPROFILE%\.evoduck
Requirements:
- Go 1.26+
git clone https://github.com/chawuciren/evoduck.git
cd evoduck
go mod download
go build -o evoduck ./cmd/evoduckWindows PowerShell:
go build -o evoduck.exe .\cmd\evoduckRun EvoDuck directly after installation or build:
evoduck runIf you start from a local Windows build:
.\evoduck.exe runDefault config path when --config is not provided:
- Windows:
%USERPROFILE%\.evoduck\config\config.yaml - Linux/macOS:
~/.evoduck/config/config.yaml
On first run, EvoDuck automatically:
- creates the config file
- creates the runtime root directory
- creates
logs/ - creates
shared/skills/ - writes built-in Skills
- creates scaffold files for the default agent
If EvoDuck detects that the config is still using the default template and the default provider is not fully configured, it automatically enters the setup wizard.
You can also start the wizard directly:
evoduck setupThe wizard currently performs these steps:
- Select the default LLM provider.
- Collect the required provider-specific settings.
- Try to fetch available models and let you choose a default model.
- Set
gateway.hostandgateway.port. - Optionally configure extra channels.
- Save the result back to the config file.
Current CLI entrypoints:
evoduck channel types
evoduck channel info weixin
evoduck channel info wecom
evoduck channel list
evoduck channel add
evoduck channel add weixin
evoduck channel add wecomNotes:
webchatis built in and does not require separate setup.weixinuses a QR-code login flow.wecomusesbot_idandsecretconfiguration.
EvoDuck uses a PM2-style self-managed daemon that requires no admin privileges:
# Foreground mode (development)
evoduck run
# Daemon mode (background)
evoduck service start
evoduck service status
evoduck service stop
evoduck service restart
# Autostart configuration (no admin required)
evoduck install
evoduck uninstallProcess structure:
- Daemon process: lightweight supervisor that manages the worker
- Worker process: actual business logic
- Automatic restart on worker crash (max 5 retries with exponential backoff)
If --config is omitted, the daemon uses the current user's default config path under .evoduck.
From a local build directory, prefix the binary path as needed:
.\evoduck.exe service start
.\evoduck.exe service statusEnglish docs are the default. Chinese docs are preserved under docs/zh-CN/.
Suggested reading order:
- Install and First Run
- Release Installation Plan
- Usage and Setup Wizard
- Configuration
- Build and Packaging
- Skills and MCP
- Channels
- Plugin Development
Additional docs:
cmd/
docs/
internal/
pkg/
plugins/
scripts/
web/

