-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path.env.compose.example
More file actions
172 lines (150 loc) · 6.64 KB
/
Copy path.env.compose.example
File metadata and controls
172 lines (150 loc) · 6.64 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
# =============================================================================
# Eirel Subnet — docker-compose template (.env)
# Copy to .env and fill in values for your deployment.
# =============================================================================
# --- Database & Redis (internal Docker network) ---
DATABASE_URL=postgresql+psycopg://eirel:eirel@postgres:5432/eirel
REDIS_URL=redis://redis:6379/0
USE_REDIS_POOL=1
POSTGRES_HOST_PORT=15432
REDIS_HOST_PORT=16379
# --- Service URLs (k3s owner-api via NodePort) ---
# These are not used directly — each compose service overrides OWNER_API_URL
# in docker-compose.yml using ${SERVER_A_HOST_IP} and ${OWNER_API_NODEPORT}.
OWNER_API_URL=http://<SERVER_A_PUBLIC_IP>:30020
OWNER_API_INTERNAL_URL=http://<SERVER_A_PUBLIC_IP>:30020
CONTROL_PLANE_INTERNAL_URL=http://api-gateway:8000
# --- k3s owner-api host / port (consumed by docker-compose.yml) ---
# SERVER_A_HOST_IP is the public IP of the node hosting k3s owner-api.
SERVER_A_HOST_IP=<SERVER_A_PUBLIC_IP>
OWNER_API_NODEPORT=30020
# --- Public URLs / ports (host-facing) ---
OWNER_API_PUBLIC_URL=http://<SERVER_A_PUBLIC_IP>:30020
OWNER_API_HOST_PORT=18020
API_GATEWAY_PUBLIC_URL=http://127.0.0.1:18000
API_GATEWAY_HOST_PORT=18000
EXECUTION_WORKER_PUBLIC_URL=http://127.0.0.1:18006
EXECUTION_WORKER_HOST_PORT=18006
CONSUMER_API_PUBLIC_URL=http://127.0.0.1:18080
CONSUMER_CHAT_API_HOST_PORT=18080
VALIDATOR_ENGINE_PUBLIC_URL=http://127.0.0.1:18010
VALIDATOR_ENGINE_HOST_PORT=18010
METAGRAPH_LISTENER_PUBLIC_URL=http://127.0.0.1:18011
METAGRAPH_LISTENER_HOST_PORT=18011
PROVIDER_PROXY_PUBLIC_URL=http://127.0.0.1:18092
PROVIDER_PROXY_HOST_PORT=18092
PROMETHEUS_HOST_PORT=19090
# --- Internal tokens (MUST match Ansible group_vars/all.yml for K8s backend) ---
EIREL_INTERNAL_SERVICE_TOKEN=internal-token
EIREL_PROVIDER_PROXY_URL=http://provider-proxy:8092
EIREL_PROVIDER_PROXY_MASTER_TOKEN=provider-proxy-token
EIREL_PROVIDER_PROXY_TOKEN=provider-proxy-token
EIREL_PROVIDER_PROXY_ALLOW_MOCK=false
GATEWAY_API_KEYS=staging-gateway-key
API_GATEWAY_API_KEY=staging-gateway-key
CONSUMER_API_KEYS=staging-consumer-key
# --- Bittensor network ---
BITTENSOR_NETWORK=finney
BITTENSOR_NETUID=36
MINIMUM_VALIDATOR_STAKE=0
METAGRAPH_SYNC_INTERVAL_SECONDS=60
# Leave empty to sync from live chain
METAGRAPH_SNAPSHOT_PATH=
# --- Owner wallet (subnet operator — signs admin API requests) ---
# SS58 is resolved from ~/.bittensor/wallets/<name>/hotkeys/<hotkey> at startup.
EIREL_OWNER_WALLET_NAME=
EIREL_OWNER_HOTKEY_NAME=
# --- Run cadence ---
EIREL_RUN_DURATION_DAYS=3
EIREL_RUN_BUDGET_USD=30.0
# ISO 8601 UTC, e.g. "2026-04-17T12:00:00". Leave empty to start immediately.
EIREL_FIRST_RUN_START_TIME=
# --- Limits ---
ARCHIVE_LIMIT_BYTES=209715200
TASK_QUORUM=1
MAX_TASK_ATTEMPTS=3
MAX_INFLIGHT_TASKS_PER_SUBMISSION=2
LEASE_SECONDS=60
ASSIGNMENT_TIMEOUT_SECONDS=600
RESULT_AGGREGATION_INTERVAL_SECONDS=3
# --- Runtime backend ---
# Options: kubernetes | docker | baremetal
# For production: kubernetes (pods run on k3s worker nodes)
# For dev/single-host: docker
OWNER_RUNTIME_BACKEND=kubernetes
EIREL_OWNER_KUBECONFIG_PATH=/root/.kube/config
EIREL_OWNER_RUNTIME_NAMESPACE=eirel-miners
EIREL_OWNER_RUNTIME_SYSTEM_NAMESPACE=eirel-system
EIREL_OWNER_RUNTIME_IMAGE=<SERVER_A_PUBLIC_IP>:30500/eirel-miner-runtime:latest
EIREL_OWNER_RUNTIME_SHARED_SECRET_NAME=eirel-runtime-shared
EIREL_OWNER_RUNTIME_SERVICE_DOMAIN=svc.cluster.local
EIREL_OWNER_RUNTIME_SUBMISSION_CPU_MILLIS=2000
EIREL_OWNER_RUNTIME_SUBMISSION_MEMORY_MB=2048
# --- Artifact storage ---
OBJECT_STORAGE_BACKEND=filesystem
ARTIFACT_STORAGE_ROOT=/tmp/eirel-managed-artifacts
ARTIFACT_STORAGE_BUCKET=eirel-managed-local
# --- Execution queue ---
EXECUTION_STREAM_NAME=eirel:tasks
EXECUTION_STREAM_GROUP=execution-workers
# --- Dataset paths (inside containers) ---
# Filesystem fallback path; the production task source is R2 via
# OwnerDatasetBinding rows + EIREL_R2_* in owner-api's k3s secret
# (deploy/k8s/owner-api-hybrid/secret.env). Compose services never
# read R2 directly — they call owner-api over HTTP.
EIREL_OWNER_DATASET_ROOT_PATH=/app/data/owner_datasets/families
# (EIREL_WORKFLOW_CORPUS_ROOT_PATH and EIREL_WEB_SEARCH_TOOL_CATALOG_PATH
# are optional overrides; defaults work for the bundled corpus and
# search-tool catalog. Set only if you point at a custom path.)
# =============================================================================
# LLM provider: Chutes-only (enforced by SUPPORTED_PROVIDER_IDS in code)
# Used by provider-proxy to relay miner LLM calls.
# Judge LLM config (EIREL_JUDGE_*) moved to validator side — see
# .env.validator.example.
# =============================================================================
EIREL_PROVIDER_CHUTES_API_KEY=
EIREL_PROVIDER_CHUTES_BASE_URL=https://llm.chutes.ai/v1/chat/completions
# =============================================================================
# General chat family mode budgets (seconds)
# =============================================================================
EIREL_GENERAL_CHAT_INSTANT_LATENCY_S=15
EIREL_GENERAL_CHAT_THINKING_LATENCY_S=60
EIREL_GENERAL_CHAT_INSTANT_WEB_LATENCY_S=20
EIREL_GENERAL_CHAT_THINKING_WEB_LATENCY_S=75
# =============================================================================
# Tool services
# =============================================================================
# --- Web search ---
WEB_SEARCH_TOOL_SERVICE_HOST_PORT=18085
EIREL_WEB_SEARCH_TOOL_URL=http://web-search-tool-service:8085
EIREL_WEB_SEARCH_TOOL_TOKEN=web-search-tool-token
EIREL_WEB_SEARCH_TOOL_API_TOKEN=web-search-tool-token
EIREL_WEB_SEARCH_TOOL_PORT=8085
EIREL_WEB_SEARCH_TOOL_BACKENDS=brave,serper,tavily
EIREL_BRAVE_SEARCH_API_KEY=
EIREL_SERPER_API_KEY=
EIREL_TAVILY_API_KEY=
EIREL_WEB_SEARCH_PER_BACKEND_TIMEOUT_SECONDS=10.0
EIREL_WEB_SEARCH_MOCK=false
# --- Sandbox (Python execution) ---
SANDBOX_TOOL_SERVICE_HOST_PORT=18091
EIREL_SANDBOX_TOOL_URL=http://sandbox-tool-service:8091
EIREL_SANDBOX_TOOL_TOKEN=sandbox-tool-token
EIREL_SANDBOX_TOOL_API_TOKEN=sandbox-tool-token
EIREL_SANDBOX_TOOL_PORT=8091
EIREL_SANDBOX_TOOL_DEFAULT_TIMEOUT_SECONDS=5.0
EIREL_SANDBOX_TOOL_DEFAULT_MEMORY_MB=128
EIREL_SANDBOX_TOOL_MAX_CODE_BYTES=65536
# Legacy names still referenced in some code paths
SANDBOX_SERVICE_URL=http://sandbox-tool-service:8091
SANDBOX_SERVICE_AUTH_TOKEN=sandbox-tool-token
# --- URL fetch (browser-open) ---
URL_FETCH_TOOL_SERVICE_HOST_PORT=18087
EIREL_URL_FETCH_TOOL_URL=http://url-fetch-tool-service:8087
EIREL_URL_FETCH_API_TOKEN=url-fetch-token
EIREL_URL_FETCH_DEFAULT_MAX_REQUESTS=10000
EIREL_URL_FETCH_MAX_RESPONSE_BYTES=1048576
EIREL_URL_FETCH_TIMEOUT_SECONDS=15.0
EIREL_URL_FETCH_MAX_REDIRECTS=5
EIREL_URL_FETCH_PER_HOST_RATE=4
EIREL_URL_FETCH_PER_HOST_WINDOW_SECONDS=10.0