-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathdocker-compose.quickstart.yml
More file actions
177 lines (170 loc) · 6.43 KB
/
docker-compose.quickstart.yml
File metadata and controls
177 lines (170 loc) · 6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# ============================================================================
# Sibyl Quickstart - Zero-Config for Individual Developers
# ============================================================================
#
# Get running in 5 minutes with pre-built Docker images. No .env file required!
#
# Quick Start:
# docker compose -f docker-compose.quickstart.yml up -d
# Open http://localhost:3337
# Complete onboarding (API keys entered via UI)
#
# All configuration happens through the web UI:
# - API keys saved to encrypted database storage
# - JWT secret auto-generated if not set
# - Default passwords suitable for local development
#
# Optional environment variables for advanced setup:
# SIBYL_OPENAI_API_KEY - Pre-configure via env (or enter in UI)
# SIBYL_ANTHROPIC_API_KEY - Pre-configure via env (or enter in UI)
# SIBYL_SETTINGS_KEY - Fernet key for settings encryption (auto-generated)
# SIBYL_JWT_SECRET - JWT signing key (auto-generated)
#
# Running alongside existing dev setup (use different ports):
# SIBYL_SERVER_PORT=3344 SIBYL_WEB_PORT=3347 SIBYL_FALKORDB_PORT=6390 \
# SIBYL_POSTGRES_PORT=5443 docker compose -f docker-compose.quickstart.yml -p sibyl-qs up -d
#
# ============================================================================
services:
# ==========================================================================
# Sibyl Backend (API + MCP Server)
# ==========================================================================
api:
image: ghcr.io/hyperb1iss/sibyl-api:latest
container_name: sibyl-api
ports:
- "${SIBYL_SERVER_PORT:-3334}:3334"
depends_on:
falkordb:
condition: service_healthy
postgres:
condition: service_healthy
environment:
# Database connections (internal Docker network)
SIBYL_POSTGRES_HOST: postgres
SIBYL_POSTGRES_PORT: 5432
SIBYL_POSTGRES_USER: sibyl
SIBYL_POSTGRES_PASSWORD: ${SIBYL_POSTGRES_PASSWORD:-sibyl_quickstart}
SIBYL_POSTGRES_DB: sibyl
SIBYL_FALKORDB_HOST: falkordb
SIBYL_FALKORDB_PORT: 6379
SIBYL_FALKORDB_PASSWORD: ${SIBYL_FALKORDB_PASSWORD:-sibyl_quickstart}
# Auth - auto-generate if not provided
SIBYL_JWT_SECRET: ${SIBYL_JWT_SECRET:-}
SIBYL_SETTINGS_KEY: ${SIBYL_SETTINGS_KEY:-}
SIBYL_PUBLIC_URL: http://localhost:${SIBYL_WEB_PORT:-3337}
# AI Providers (optional - can be configured via UI during onboarding)
SIBYL_OPENAI_API_KEY: ${SIBYL_OPENAI_API_KEY:-}
SIBYL_ANTHROPIC_API_KEY: ${SIBYL_ANTHROPIC_API_KEY:-}
SIBYL_LLM_PROVIDER: anthropic
SIBYL_LLM_MODEL: claude-haiku-4-5
# Server config
SIBYL_SERVER_HOST: 0.0.0.0
SIBYL_SERVER_PORT: 3334
SIBYL_ENVIRONMENT: development
volumes:
- sibyl_secrets:/root/.sibyl
healthcheck:
test: ["CMD", "python", "-c", "import httpx; httpx.get('http://localhost:3334/api/health')"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: unless-stopped
# ==========================================================================
# Background Worker (crawling, entity extraction)
# ==========================================================================
worker:
image: ghcr.io/hyperb1iss/sibyl-api:latest
container_name: sibyl-worker
command: ["sibyld", "worker"]
depends_on:
api:
condition: service_healthy
environment:
SIBYL_POSTGRES_HOST: postgres
SIBYL_POSTGRES_PORT: 5432
SIBYL_POSTGRES_USER: sibyl
SIBYL_POSTGRES_PASSWORD: ${SIBYL_POSTGRES_PASSWORD:-sibyl_quickstart}
SIBYL_POSTGRES_DB: sibyl
SIBYL_FALKORDB_HOST: falkordb
SIBYL_FALKORDB_PORT: 6379
SIBYL_FALKORDB_PASSWORD: ${SIBYL_FALKORDB_PASSWORD:-sibyl_quickstart}
SIBYL_SETTINGS_KEY: ${SIBYL_SETTINGS_KEY:-}
SIBYL_OPENAI_API_KEY: ${SIBYL_OPENAI_API_KEY:-}
SIBYL_ANTHROPIC_API_KEY: ${SIBYL_ANTHROPIC_API_KEY:-}
SIBYL_LLM_PROVIDER: anthropic
SIBYL_LLM_MODEL: claude-haiku-4-5
volumes:
- sibyl_secrets:/root/.sibyl
restart: unless-stopped
# ==========================================================================
# Frontend (Next.js Web UI)
# ==========================================================================
web:
image: ghcr.io/hyperb1iss/sibyl-web:latest
container_name: sibyl-web
ports:
- "${SIBYL_WEB_PORT:-3337}:3337"
depends_on:
api:
condition: service_healthy
environment:
SIBYL_API_URL: http://api:3334/api # Server-side (SSR) fetches
NEXT_PUBLIC_API_URL: http://localhost:${SIBYL_SERVER_PORT:-3334} # Client-side (browser) fetches
NODE_ENV: production
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3337/"]
interval: 10s
timeout: 5s
retries: 3
restart: unless-stopped
# ==========================================================================
# FalkorDB (Knowledge Graph Database)
# ==========================================================================
falkordb:
image: falkordb/falkordb:latest
container_name: sibyl-falkordb
ports:
- "${SIBYL_FALKORDB_PORT:-6380}:6379" # Redis protocol
- "${SIBYL_FALKORDB_BROWSER_PORT:-3335}:3000" # Browser UI (optional)
volumes:
- sibyl_falkordb:/var/lib/falkordb/data
environment:
FALKORDB_ARGS: --requirepass ${SIBYL_FALKORDB_PASSWORD:-sibyl_quickstart}
healthcheck:
test: ["CMD", "redis-cli", "-a", "${SIBYL_FALKORDB_PASSWORD:-sibyl_quickstart}", "ping"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped
# ==========================================================================
# PostgreSQL (User data, embeddings, crawled documents)
# ==========================================================================
postgres:
image: pgvector/pgvector:pg18
container_name: sibyl-postgres
ports:
- "${SIBYL_POSTGRES_PORT:-5433}:5432"
volumes:
- sibyl_postgres:/var/lib/postgresql
environment:
POSTGRES_USER: sibyl
POSTGRES_PASSWORD: ${SIBYL_POSTGRES_PASSWORD:-sibyl_quickstart}
POSTGRES_DB: sibyl
healthcheck:
test: ["CMD-SHELL", "pg_isready -U sibyl -d sibyl"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped
volumes:
sibyl_secrets:
name: sibyl_secrets
sibyl_falkordb:
name: sibyl_falkordb
sibyl_postgres:
name: sibyl_postgres
networks:
default:
name: sibyl