prod: sync production fixes - agent lifecycle, docker fallback, compose hardening
This commit is contained in:
107
docs/project-analysis.md
Normal file
107
docs/project-analysis.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# GoClaw Project Analysis
|
||||
|
||||
**Date: 2026-04-12**
|
||||
|
||||
## Project Overview
|
||||
|
||||
**GoClaw** — Distributed AI Agent orchestration platform ("Mission Control для вашего AI-агентского кластера"). Web-based Control Center for monitoring Docker Swarm clusters, managing AI agents, and interacting with an LLM-powered orchestrator.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────┐
|
||||
│ goclaw-net (Overlay Network) │
|
||||
└─────────────────────────────────┘
|
||||
│
|
||||
┌─────────────────────┼─────────────────────┐
|
||||
│ │ │
|
||||
┌─────────▼──────┐ ┌──────────▼──────┐ ┌─────────▼──────┐
|
||||
│ Control Center │ │ Gateway │ │ Agents │
|
||||
│ (Web UI :3000) │ │ (Go + chi :18789) │ │ (Docker Svc) │
|
||||
│ React + tRPC │ │ Orchestrator │ │ Go per-agent │
|
||||
│ Express + Drizzle│ │ Tool Executor │ │ HTTP :8001+ │
|
||||
└────────┬─────────┘ │ Docker Client │ └─────────────────┘
|
||||
│ └──────┬───────────┘
|
||||
│ │
|
||||
┌────────▼─────────┐ ┌─────▼──────────────┐
|
||||
│ MySQL 8 / TiDB │ │ Ollama Cloud API │
|
||||
│ (Drizzle ORM) │ │ (34+ LLM Models) │
|
||||
└───────────────────┘ └─────────────────────┘
|
||||
```
|
||||
|
||||
## Tech Stack
|
||||
|
||||
### Frontend
|
||||
- React 19, Tailwind CSS 4, shadcn/ui, Framer Motion, Wouter, TanStack React Query, Recharts
|
||||
|
||||
### Backend (Node.js)
|
||||
- Express 4, tRPC 11, Drizzle ORM (MySQL), Zod, mysql2, jose (JWT), Axios, Vite, esbuild, Vitest
|
||||
|
||||
### Backend (Go Gateway)
|
||||
- chi/v5 (HTTP router), sqlx (MySQL), go-sql-driver/mysql
|
||||
|
||||
### Database
|
||||
- MySQL 8.0 / TiDB via Drizzle ORM
|
||||
|
||||
### Infrastructure
|
||||
- Docker Compose (local dev), Docker Swarm (production)
|
||||
|
||||
## Services & Ports
|
||||
|
||||
| Service | Container | Port | Status |
|
||||
|---------|-----------|------|--------|
|
||||
| MySQL DB | goclaw-db | 3306 | Healthy |
|
||||
| Go Gateway | goclaw-gateway | 18789 | Healthy |
|
||||
| Control Center | goclaw-control-center | 3000 | Healthy |
|
||||
| Agent Worker | goclaw-agent-worker | 8001 (dynamic) | Build only, deployed per-agent |
|
||||
|
||||
## Health Check Results
|
||||
|
||||
- Gateway: `{"ollama":{"connected":true,"latencyMs":140},"service":"goclaw-gateway","status":"ok"}`
|
||||
- Control Center: `{"status":"ok","uptime":21}`
|
||||
|
||||
## Database Schema (Key Tables)
|
||||
|
||||
- `users` — User accounts with OAuth, roles
|
||||
- `agents` — AI agent configs (model, role, tools, system prompt)
|
||||
- `agentMetrics` — Performance metrics
|
||||
- `agentHistory` — Conversation history
|
||||
- `agentAccessControl` — Per-tool access control
|
||||
- `toolDefinitions` — Custom tool definitions
|
||||
- `browserSessions` — Browser Agent sessions
|
||||
- `nodeMetrics` — Docker container metrics
|
||||
- `tasks` — Task tracking
|
||||
|
||||
## Environment Variables (Core)
|
||||
|
||||
| Variable | Default | Purpose |
|
||||
|----------|---------|---------|
|
||||
| LLM_BASE_URL | https://ollama.com/v1 | OpenAI-compatible LLM endpoint |
|
||||
| LLM_API_KEY | (empty) | API key for LLM provider |
|
||||
| DATABASE_URL | mysql://goclaw:goClawPass123@localhost:3306/goclaw | MySQL connection |
|
||||
| JWT_SECRET | change-me-in-production | Session signing |
|
||||
|
||||
## Deployment Notes
|
||||
|
||||
- DB migration was applied successfully using `drizzle-kit push`
|
||||
- 6 default agents seeded into the database
|
||||
- OAUTH_SERVER_URL is not configured (optional for basic operation)
|
||||
- Agent Worker containers are created dynamically when agents are deployed
|
||||
|
||||
## Docker Compose Configuration
|
||||
|
||||
Project name: `goclaw`
|
||||
Network: `goclaw-net` (bridge)
|
||||
Volumes: `mysql-data` for persistence
|
||||
|
||||
### Service Dependencies
|
||||
- gateway depends on db (healthy)
|
||||
- control-center depends on db (healthy) + gateway (healthy)
|
||||
|
||||
## URL Endpoints
|
||||
|
||||
- Web UI: http://localhost:3000
|
||||
- Gateway API: http://localhost:18789
|
||||
- Health - Gateway: http://localhost:18789/health
|
||||
- Health - Control Center: http://localhost:3000/api/health
|
||||
- MySQL: localhost:3306
|
||||
Reference in New Issue
Block a user