A flexible, production-ready AI agent framework with multiple deployment modes.
- π€ Multi-Agent Support - Run multiple specialized agents with independent configurations
- π Pluggable Architecture - Easy to extend with tools, channels, and providers
- π Multiple Deployment Modes - CLI (REPL), API Server, or Web Console
- π Enterprise Ready - Multi-tenant support, JWT auth, role-based access control
- π¬ Real-time Communication - WebSocket streaming for smooth conversations
- π¦ Easy to Deploy - Docker, Kubernetes, or standalone binary
- π οΈ Rich Tool Ecosystem - Built-in tools for web search, file operations, and more
- π Multiple LLM Providers - OpenAI, Anthropic, Azure OpenAI, and custom providers
Perfect for personal use and quick testing.
# Download binary
wget https://github.com/tangredtea/abot/releases/latest/download/abot-agent-linux-amd64.tar.gz
tar -xzf abot-agent-linux-amd64.tar.gz
sudo mv abot-agent /usr/local/bin/
# Create minimal config
cat > config.yaml <<EOF
providers:
- api_key: sk-xxx
model: gpt-4o-mini
EOF
# Run
abot-agent -config config.yaml
# Start chatting
You: Hello
Bot: Hello! How can I help you today?Best for teams and production use.
# 1. Start web server (port 3000)
./abot-web -config config.yaml
# 2. Or use Docker Compose
docker compose up -d
# 3. Open browser
open http://localhost:3000Ideal for embedding in your applications.
# Using Docker
docker run -d \
--name abot-server \
-p 8080:8080 \
-e OPENAI_API_KEY=sk-xxx \
-e MYSQL_DSN="user:pass@tcp(mysql:3306)/abot" \
abot/server:latest
# Test API
curl http://localhost:8080/api/v1/agentsmacOS:
# Build from source
git clone https://github.com/tangredtea/abot.git
cd abot && make allLinux:
# Download from releases
wget https://github.com/tangredtea/abot/releases/latest/download/abot-agent-linux-amd64.tar.gz
tar -xzf abot-agent-linux-amd64.tar.gz
sudo mv abot-agent /usr/local/bin/docker pull abot/agent:latest
docker pull abot/server:latest
docker pull abot/web:latestgit clone https://github.com/tangredtea/abot.git
cd abot
make all
# Binaries will be in ./bin/
./bin/abot-agent -config config.yamlabot uses a multi-binary architecture for clear separation of concerns:
βββββββββββββββ ββββββββββββββββ βββββββββββββββ
β abot-agent β β abot-server β β abot-web β
β (CLI) β β (API) β β (Web UI) β
βββββββββββββββ ββββββββββββββββ βββββββββββββββ
β β β
ββββββββββββββββββ΄βββββββββββββββββββ
β
βββββββββΌβββββββββ
β pkg/bootstrap β β Shared dependency construction
β pkg/agent β β Core agent engine
β pkg/providers β β LLM provider abstraction
β pkg/storage β β Pluggable storage backends
ββββββββββββββββββ
Three Independent Binaries:
- abot-agent: CLI REPL for personal use (no database required)
- abot-server: HTTP API server for integration (requires MySQL)
- abot-web: Web console with UI (requires MySQL)
Shared Core:
pkg/bootstrap: Zero-duplication dependency constructionpkg/agent: Core agent engine with tool executionpkg/providers: Multi-provider LLM abstractionpkg/storage: Pluggable storage (MySQL, JSONL, in-memory)
- docs/README.md β index
- Project architecture β layout, security, English summary, CLI tips
- Deployment & migration β compose, DB, scaling, v1βv2 notes
- Default tools / MCP / workspace β summary; SKILLS.md β skill list
- HTTP API: cmd/abot-server/README.md; examples: config.example.yaml, config.agent.example.yaml
abot-agent -config config.yaml
You: Summarize this article: https://example.com/article
Bot: [AI provides summary]
You: Search for "Go best practices"
Bot: [AI searches and summarizes results]- Multiple users with role-based access
- Shared agents across teams
- Conversation history and search
- Real-time WebSocket streaming
- Multi-tenant isolation
- Embed AI capabilities in your app
- Custom frontend with your branding
- Webhook support for events
- Multi-tenant API with JWT auth
# config.agent.yaml
providers:
- api_key: sk-xxx
model: gpt-4o-mini# config.web.yaml
app_name: abot
mysql_dsn: "user:pass@tcp(localhost:3306)/abot?charset=utf8mb4&parseTime=True"
providers:
- api_key: sk-xxx
model: gpt-4o-mini
prompt_caching: true
agents:
- id: assistant
name: "AI Assistant"
model: gpt-4o-mini
system_prompt: "You are a helpful assistant."
console:
addr: ":3000"
jwt_secret: "your-secret-key"
static_dir: "web/out"
allowed_origins:
- "http://localhost:3000"See example configs for more options.
go mod download
make all # abot-agent, abot-server, abot-web
go test ./...
make test-coverage # optional HTML coverage
make lint # requires golangci-lint
docker compose -f docker-compose.dev.yml up # optional full stack
air # hot reload (.air.toml)Cross-compile: GOOS=linux GOARCH=amd64 make all. Docker images: make docker-build (Dockerfiles under cmd/*/Dockerfile).
cd web
# Install dependencies
npm install
# Development mode
npm run dev
# Build for production
npm run buildabot/
βββ cmd/
β βββ abot-agent/ # CLI binary
β βββ abot-server/ # API server binary
β βββ abot-web/ # Web console binary
βββ pkg/
β βββ bootstrap/ # Shared dependency construction
β βββ agent/ # Core agent engine
β βββ api/ # HTTP API handlers
β βββ storage/ # Storage layer (MySQL, JSONL)
β βββ channels/ # Channel adapters (Telegram, Discord, etc.)
β βββ providers/ # LLM provider implementations
β βββ tools/ # Built-in tools
β βββ types/ # Shared types
βββ web/ # Next.js frontend
βββ docs/ # Documentation
# Download docker-compose.yml
curl -O https://raw.githubusercontent.com/tangredtea/abot/main/docker-compose.yml
# Configure .env
cat > .env <<EOF
OPENAI_API_KEY=sk-xxx
JWT_SECRET=$(openssl rand -hex 32)
MYSQL_ROOT_PASSWORD=secure-password
EOF
# Start
docker-compose up -d
# Check logs
docker-compose logs -f abot-webThis repository does not ship a Helm chart. Deploy with your own manifests (Deployment + Service + Ingress), MySQL, and secrets; see docs/DEPLOYMENT.md for constraints.
# Install binary
sudo mv abot-web /usr/local/bin/
# Create service
sudo cat > /etc/systemd/system/abot-web.service <<EOF
[Unit]
Description=abot Web Console
After=network.target mysql.service
[Service]
Type=simple
User=abot
ExecStart=/usr/local/bin/abot-web -config /etc/abot/config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# Start service
sudo systemctl enable abot-web
sudo systemctl start abot-webSee Deployment Guide for detailed instructions.
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Contributions are welcome via pull request; align with existing code style and add tests where practical.
MIT License - see LICENSE for details.
- Built with Google ADK for agent orchestration
- Inspired by LangChain and AutoGPT
- UI components from shadcn/ui
- π Issues: https://github.com/tangredtea/abot/issues
- GraphQL API support
- Plugin marketplace
- Voice input/output
- Mobile apps (iOS/Android)
- Distributed tracing (OpenTelemetry)
- Metrics export (Prometheus)
- Redis caching layer
- Message queue integration (RabbitMQ)
Made with β€οΈ by the abot team