-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
109 lines (104 loc) · 3.15 KB
/
Copy pathdocker-compose.yaml
File metadata and controls
109 lines (104 loc) · 3.15 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
services:
redis:
container_name: redis
image: docker.io/valkey/valkey:8-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
networks:
- searxng
volumes:
- valkey-data2:/data
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
networks:
- searxng
ports:
- "0.0.0.0:8999:8080"
volumes:
- ./config.yaml:/etc/searxng/settings.yml:ro
- searxng-data:/var/cache/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8999/
- BIND_ADDRESS=[::]:8080
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
# Single container that serves the HTTP API *and* hosts the `hermes` CLI
# (inherited from nousresearch/hermes-agent). Per /research request, the
# adapter spawns `hermes acp` as a subprocess and speaks ACP JSON-RPC over
# stdio — no docker-in-docker, no socket-proxy.
tavily-adapter:
image: ghcr.io/vakovalskii/searcharvester:latest
build: ./simple_tavily_adapter
container_name: tavily-adapter
restart: unless-stopped
networks:
- searxng
ports:
- "8000:8000"
volumes:
- ./config.yaml:/srv/searxng-docker/config.yaml:ro
# Per-job workspaces (plan.md, notes.md, report.md, hermes.log,
# events.jsonl). Exposed on the host for inspection / post-mortem.
- ./jobs:/srv/searxng-docker/jobs:rw
# HERMES_HOME — config.yaml, SOUL.md, skills. Bundled skills get
# synced on boot; our 3 custom skills ship alongside in skills/.
- ./hermes-data:/opt/data:rw
environment:
- JOBS_DIR=/srv/searxng-docker/jobs
- HERMES_HOME=/opt/data
- ADAPTER_URL_FOR_HERMES=http://localhost:8000
- RESEARCH_TIMEOUT_SEC=1200
# Match the UID of the repo owner so mounted files stay owned by
# the right user. macOS: 501:20 is typical; override in .env if needed.
- HERMES_UID=${HERMES_UID:-501}
- HERMES_GID=${HERMES_GID:-20}
# LLM credentials — pass-through from the invoking shell / .env.
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- OPENAI_BASE_URL=${OPENAI_BASE_URL:-}
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- GEMINI_API_KEY=${GEMINI_API_KEY:-}
depends_on:
- searxng
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
# React + Tailwind + Vite UI over the /research API.
frontend:
build:
context: ./frontend
args:
VITE_API_URL: ${VITE_API_URL:-http://localhost:8000}
container_name: searcharvester-frontend
restart: unless-stopped
ports:
- "9762:9762"
depends_on:
- tavily-adapter
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
volumes:
valkey-data2:
searxng-data: