Repository navigation
Expand file tree
/
Copy pathprocess-compose.yaml
More file actions
118 lines (107 loc) · 3.69 KB
/
Copy pathprocess-compose.yaml
File metadata and controls
118 lines (107 loc) · 3.69 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
version: "3"
environment:
- SECONDSHIFT_ENV=dev
# macOS kills forked workers that make outbound HTTP (system proxy lookup).
- OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
processes:
stack:
description: PostgreSQL is healthy
command: docker compose -f docker-compose.localdev.yml up -d --wait
stack_logs:
description: Docker service logs
command: docker compose -f docker-compose.localdev.yml logs --follow
depends_on:
stack:
condition: process_completed_successfully
shutdown:
command: docker compose -f docker-compose.localdev.yml down
timeout_seconds: 30
agent_image:
description: Build the pinned Claude Code and Codex development agent image
command: docker build -f secondshift/runner/agent_image/Dockerfile -t secondshift-agent:dev .
initialize:
description: Initialize the control plane, development workspace, and runner
command: >-
uv run python manage.py migrate &&
uv run python manage.py bootstrap_dev &&
DJANGO_SETTINGS_MODULE=secondshift.config.settings.runner uv run python manage.py migrate
depends_on:
stack:
condition: process_completed_successfully
runner:
description: Isolated command-runner and agent-container API
command: uv run python -m secondshift.runner.dev
environment:
- SECONDSHIFT_SERVICE=runner
- SECONDSHIFT_AGENT_IMAGE=secondshift-agent:dev
- SECONDSHIFT_AGENT_BROKER_URL=http://host.docker.internal:8001/gateway/agent/mcp
- SECONDSHIFT_AGENT_NETWORK=bridge
- SECONDSHIFT_HTTP_BIND=127.0.0.1:8002
- SECONDSHIFT_HTTP_PROCESSES=1
depends_on:
agent_image:
condition: process_completed_successfully
initialize:
condition: process_completed_successfully
availability:
restart: always
backend:
command: uv run gunicorn --reload
environment:
- SECONDSHIFT_SERVICE=web
- SECONDSHIFT_AGENT_IMAGE=secondshift-agent:dev
- SECONDSHIFT_AGENT_BROKER_URL=http://host.docker.internal:8001/gateway/agent/mcp
- SECONDSHIFT_AGENT_NETWORK=bridge
- SECONDSHIFT_HTTP_BIND=127.0.0.1:8000
depends_on:
initialize:
condition: process_completed_successfully
availability:
restart: always
gateway:
description: Model and agent-tool gateway, reachable from Docker
command: uv run gunicorn --reload
environment:
- SECONDSHIFT_SERVICE=gateway
- SECONDSHIFT_AGENT_IMAGE=secondshift-agent:dev
- SECONDSHIFT_AGENT_BROKER_URL=http://host.docker.internal:8001/gateway/agent/mcp
- SECONDSHIFT_AGENT_NETWORK=bridge
- SECONDSHIFT_HTTP_GRACEFUL_TIMEOUT_SECONDS=600
- SECONDSHIFT_HTTP_BIND=0.0.0.0:8001
- SECONDSHIFT_HTTP_PROCESSES=1
depends_on:
initialize:
condition: process_completed_successfully
availability:
restart: always
worker:
command: uv run python manage.py run_dbos_worker
environment:
- SECONDSHIFT_SERVICE=worker
- SECONDSHIFT_AGENT_IMAGE=secondshift-agent:dev
- SECONDSHIFT_AGENT_BROKER_URL=http://host.docker.internal:8001/gateway/agent/mcp
- SECONDSHIFT_AGENT_NETWORK=bridge
depends_on:
initialize:
condition: process_completed_successfully
gateway:
condition: process_started
runner:
condition: process_started
availability:
restart: always
watch:
debounce: 500ms
paths:
- path: secondshift
include: ["**/*.py"]
frontend:
command: npm run dev
working_dir: dashboard
depends_on:
backend:
condition: process_started
docs:
description: Public landing page and documentation at http://127.0.0.1:4321
command: npm run dev
working_dir: docs