126 lines
5.7 KiB
Markdown
126 lines
5.7 KiB
Markdown
# Shannon
|
|
|
|
[English](./README.md) | [中文](./README.zh.md)
|
|
|
|
This service deploys [Shannon](https://github.com/Kocoro-lab/Shannon), a production-oriented multi-agent orchestration framework. Shannon provides time-travel debugging via Temporal workflows, hard token budgets per task/agent, real-time observability dashboards, WASI sandbox for secure code execution, OPA policy governance, and multi-tenant isolation — all with native support for OpenAI, Anthropic, Google, DeepSeek, and local models.
|
|
|
|
> **Note:** The `agent-core` service is only built for `linux/amd64`. On Apple Silicon (ARM64), Docker Desktop uses Rosetta emulation automatically.
|
|
|
|
## Services
|
|
|
|
- **gateway**: HTTP API gateway — primary entry point for all client requests (port `8080`)
|
|
- **orchestrator**: Core workflow orchestration engine powered by Temporal
|
|
- **llm-service**: LLM provider abstraction with model routing, fallback, and budget control
|
|
- **agent-core**: Rust-based agent execution runtime with WASI sandbox support
|
|
- **postgres**: PostgreSQL with pgvector extension for state and vector storage
|
|
- **redis**: Redis for caching, job queues, and rate limiting
|
|
- **qdrant**: Qdrant vector database for semantic memory
|
|
- **temporal**: Temporal workflow engine for durable, fault-tolerant task execution
|
|
- **temporal-ui**: Temporal Web UI for workflow debugging (enabled via `metrics` profile)
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Docker & Docker Compose v2
|
|
- `curl` (for the setup script)
|
|
- At least one LLM API key (OpenAI, Anthropic, Google, etc.)
|
|
|
|
### 1. Run Setup
|
|
|
|
```bash
|
|
make setup
|
|
```
|
|
|
|
This downloads the required `config/models.yaml` and `config/features.yaml` from the Shannon repository and creates a local `.env` file.
|
|
|
|
### 2. Add Your LLM API Key
|
|
|
|
Edit `.env` and set at least one LLM provider key:
|
|
|
|
```env
|
|
# Choose at least one:
|
|
OPENAI_API_KEY=sk-...
|
|
ANTHROPIC_API_KEY=sk-ant-...
|
|
```
|
|
|
|
Also update `JWT_SECRET` and set `GATEWAY_SKIP_AUTH=0` for production deployments.
|
|
|
|
### 3. Start Services
|
|
|
|
```bash
|
|
make up
|
|
```
|
|
|
|
Access the Shannon API at `http://localhost:8080`.
|
|
|
|
### 4. (Optional) Enable Temporal UI Dashboard
|
|
|
|
To also start the Temporal workflow debugging UI:
|
|
|
|
```bash
|
|
make up-monitoring
|
|
```
|
|
|
|
Access Temporal UI at `http://localhost:8088`.
|
|
|
|
## Core Environment Variables
|
|
|
|
| Variable | Description | Default |
|
|
| --------------------------- | ------------------------------------------ | ---------------------------------------------- |
|
|
| `SHANNON_VERSION` | Version for all Shannon service images | `v0.3.1` |
|
|
| `OPENAI_API_KEY` | OpenAI API key (at least one key required) | `` |
|
|
| `ANTHROPIC_API_KEY` | Anthropic API key | `` |
|
|
| `GOOGLE_API_KEY` | Google AI API key | `` |
|
|
| `JWT_SECRET` | Secret for JWT token signing | `development-only-secret-change-in-production` |
|
|
| `GATEWAY_SKIP_AUTH` | Skip auth (set to `0` to enable in prod) | `1` |
|
|
| `GATEWAY_PORT_OVERRIDE` | Host port for the API gateway | `8080` |
|
|
| `TEMPORAL_UI_PORT_OVERRIDE` | Host port for the Temporal UI | `8088` |
|
|
|
|
## Database Configuration
|
|
|
|
| Variable | Description | Default |
|
|
| ------------------- | ------------------------ | ------------ |
|
|
| `POSTGRES_VERSION` | pgvector image tag | `pg16` |
|
|
| `POSTGRES_USER` | PostgreSQL username | `shannon` |
|
|
| `POSTGRES_PASSWORD` | PostgreSQL password | `shannon` |
|
|
| `POSTGRES_DB` | PostgreSQL database name | `shannon` |
|
|
| `REDIS_VERSION` | Redis image tag | `7.2-alpine` |
|
|
| `QDRANT_VERSION` | Qdrant image tag | `v1.17` |
|
|
|
|
## Agent Configuration
|
|
|
|
| Variable | Description | Default |
|
|
| -------------------------- | -------------------------------------- | --------- |
|
|
| `DEFAULT_MODEL_TIER` | Default model complexity tier | `small` |
|
|
| `SHANNON_USE_WASI_SANDBOX` | Enable WASI sandbox for code execution | `1` |
|
|
| `WASI_MEMORY_LIMIT_MB` | Memory limit for WASI sandbox (MB) | `512` |
|
|
| `WASI_TIMEOUT_SECONDS` | Execution timeout for WASI sandbox | `60` |
|
|
| `TEMPORAL_NAMESPACE` | Temporal namespace for workflows | `default` |
|
|
|
|
## Observability (Optional)
|
|
|
|
| Variable | Description | Default |
|
|
| ----------------------------- | ---------------------------- | ------- |
|
|
| `OTEL_ENABLED` | Enable OpenTelemetry tracing | `false` |
|
|
| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP collector endpoint | `` |
|
|
|
|
## Security Notes
|
|
|
|
- By default, `GATEWAY_SKIP_AUTH=1` disables JWT authentication for easy local development.
|
|
- **For production**, set `GATEWAY_SKIP_AUTH=0` and use a strong `JWT_SECRET`.
|
|
- Passwords in `.env.example` are for local development only — always change them before deploying to a shared or public environment.
|
|
|
|
## Configuration Files
|
|
|
|
Shannon uses YAML configuration files under `./config/`:
|
|
|
|
- `config/models.yaml` — LLM providers, model tiers, pricing, and routing rules
|
|
- `config/features.yaml` — Feature flags, execution modes, and workflow settings
|
|
|
|
These are downloaded from the official Shannon repository by `make setup` and can be customized as needed.
|
|
|
|
## License
|
|
|
|
Shannon is licensed under the [Apache 2.0 License](https://github.com/Kocoro-lab/Shannon/blob/main/LICENSE).
|