Content
# Tool List
<p align="center">
<strong>CowAgent's Go Implementation</strong> — Multi-channel Super AI Assistant based on Origin v2 and eino ADK
</p>
<p align="center">
<a href="https://github.com/rhinewg/cow-go"><img src="https://img.shields.io/github/stars/rhinewg/cow-go?style=flat-square" alt="Stars"></a>
<a href="https://github.com/rhinewg/cow-go/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License: MIT"></a>
<a href="https://github.com/zhayujie/CowAgent"><img src="https://img.shields.io/badge/upstream-CowAgent-blue?style=flat-square" alt="CowAgent"></a>
<a href="https://github.com/cloudwego/eino"><img src="https://img.shields.io/badge/agent-eino%20ADK-00ADD8?style=flat-square" alt="eino"></a>
</p>
<p align="center">
<a href="https://github.com/rhinewg/cow-go">GitHub</a> ·
<a href="doc/README.md">Documentation</a> ·
<a href="https://docs.cowagent.ai/">CowAgent Documentation</a> ·
<a href="doc/gap-analysis.md">Feature Gap</a>
</p>
---
**cow-go** is an open-source Go implementation of [CowAgent](https://github.com/zhayujie/CowAgent) (based on CowAgent's product and architecture design, following the **MIT** license). It runs multiple Origin Services in a single process, connected to the Agent core, tools, memory, knowledge base, and 14+ messaging channels through RPC, supporting streaming dialogue, MCP tools, Skills, and self-evolution.
Suitable for secondary development and platform deployment requiring **Go performance, service boundaries, and Origin cross-node RPC**; complete product experience and ecosystem still refer to Python CowAgent.
---
## Features
| Capability | Description |
|------|------|
| **Multi-channel** | Web, Feishu, DingTalk, Enterprise WeChat, WeChat, Telegram, Slack, Discord, QQ, etc. |
| **Agent Core** | eino ADK: multi-turn tool-calls, LLM routing (OpenAI / Claude / Gemini / Qwen / DeepSeek, etc.) |
| **Tools** | File, Terminal, Browser, Scheduling, Web scraping, MCP protocol |
| **Memory and Knowledge** | Vector memory (Redis), Knowledge base RAG, Session persistence (Redis + SQLite) |
| **Self-evolution** | Idle scanning, Agent review, Workspace backup and rollback |
| **Streaming RPC** | `RPC_RunStream`, Bridge SSE, Unified cancellation and `request_id` |
| **Console** | Embedded Web UI (`http://localhost:8081/console/`) |
| **Process Management** | `cow-go start / stop / status / logs / update` |
Feature coverage is approximately **82-85%** (compared to Python CowAgent), see [doc/gap-analysis.md](doc/gap-analysis.md) for details.
---
## Architecture
```
┌─────────────────────────────────────────────────────────┐
│ Channel Services (Web / Feishu / DingTalk / Telegram …) │
└────────────────────────┬────────────────────────────────┘
│ ChannelMessage
┌────────────────────────▼────────────────────────────────┐
│ BridgeService — RPC_Chat / ChatStream (streaming RPC) │
└────────────────────────┬────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────┐
│ AgentService — eino Runner · MCP · Skills · SSE │
└───┬────────────┬────────────┬────────────┬──────────────┘
│ │ │ │
ToolService MemoryService SessionService EvolutionService …
```
- **Framework**: [Origin v2](https://github.com/duanhf2012/origin) (`node` + `service.Service` + RPC)
- **Detailed Design**: [doc/cowagent-go-design.md](doc/cowagent-go-design.md) · [doc/README.md](doc/README.md)
---
## Quick Start
### Requirements
- Go **1.26+**
- Redis (session/memory, optional)
- LLM API Key (configured in `config/agentservice.json`, etc.)
### Build
```bash
git clone https://github.com/rhinewg/cow-go.git
cd cow-go
go build -o cow-go .
```
### Configuration
1. Refer to [config/README.md](config/README.md) to prepare `config/cluster.json` and each `*service.json`
2. Fill in `api_key`, `model`, etc. in `agentservice.json` (**do not submit files containing secrets**)
3. Optional: customize skills and system prompts in `config/skills/` and `config/prompts/system.md`
### Run
```bash
./cow-go # foreground
./cow-go start # background (write PID file)
```
| Entry | Address |
|------|------|
| Management Console | http://localhost:8081/console/ |
| Agent API | http://localhost:8081/api/v1/ |
| Origin RPC | 127.0.0.1:8801 (default) |
### Verification
```bash
go test ./... -count=1
```
---
## Documentation
| Document | Description |
|------|------|
| **[doc/README.md](doc/README.md)** | **Documentation Index** (architecture, modules, development guide) |
| [doc/cowagent-go-design.md](doc/cowagent-go-design.md) | Python → Go design comparison |
| [doc/gap-analysis.md](doc/gap-analysis.md) | Feature gap and priority |
| [doc/rpc-stream/](doc/rpc-stream/) | Streaming RPC design and implementation |
| [config/README.md](config/README.md) | Configuration file description |
---
## Tech Stack
| Category | Technology |
|------|------|
| Service Framework | Origin v2 |
| Agent | CloudWeGo eino ADK |
| HTTP | Gin (origin ginmodule) |
| MCP | modelcontextprotocol/go-sdk |
| Storage | Redis, SQLite |
| Frontend Console | Vue 3 + Vite |
---
## Choosing between CowAgent (Python) and cow-go
| Choose **CowAgent** | Choose **cow-go** |
|-----------------|---------------|
| Out-of-the-box, Docker, Skill Hub | Go monolithic binary, Origin RPC |
| Most features, mature documentation and community | Clear service boundaries, streaming RPC, easy node extension |
| Default personal assistant choice | Same monorepo secondary development / platform integration |
---
## Related Projects
- [CowAgent](https://github.com/zhayujie/CowAgent) — Python main implementation
- [Origin](https://github.com/duanhf2012/origin) — Distributed Go service framework
- [eino](https://github.com/cloudwego/eino) — LLM application development framework
- [eino-ext](https://github.com/cloudwego/eino-ext) — eino extension components (models, MCP, Embedding, etc.)
---
## Acknowledgments
cow-go is built on top of the following open-source projects, and we sincerely appreciate the contributions of each project author and community contributor:
| Project | Role in this repository | Acknowledgments |
|------|------------------|------|
| [**Origin v2**](https://github.com/duanhf2012/origin) | Service framework: `node`, `service.Service`, RPC, and streaming RPC | Thanks to [duanhf2012](https://github.com/duanhf2012) and the entire Origin community |
| [**eino**](https://github.com/cloudwego/eino) | Agent engine: ADK, `Runner`, tools, and middleware | Thanks to the [CloudWeGo](https://github.com/cloudwego) team and eino community contributors |
| [**eino-ext**](https://github.com/cloudwego/eino-ext) | Extension capabilities: OpenAI / Claude / Gemini / Qwen model adaptation, MCP tools, DashScope Embedding, Redis search and indexing | Thanks to eino-ext module maintainers and contributors |
Without the continuous maintenance and openness of the above projects, the service-oriented architecture and Agent capabilities of cow-go would not have been possible. If you encounter issues while using cow-go, you are also welcome to provide feedback to the upstream projects or participate in contributions.
---
## License
This project is based on the Go rewrite implementation of [CowAgent](https://github.com/zhayujie/CowAgent) and adopts the same **[MIT License](LICENSE)**.
- cow-go copyright: Copyright (c) 2026 rhinewg
- Upstream CowAgent: Copyright (c) 2022 zhayujie ([MIT](https://github.com/zhayujie/CowAgent/blob/master/LICENSE))
Please retain the copyright and license statement in this repository's `LICENSE` when using, modifying, and distributing.
## Contribution
Welcome to submit issues and pull requests. Before contributing, please read the contribution guidelines and testing instructions in [doc/README.md](doc/README.md).