2026-07-08 23:17:35 -04:00
|
|
|
# Fly.io config for the REAL MONEY copybot worker — a SEPARATE app from the
|
|
|
|
|
# paper worker (wwf-copybot) so the two books never share a process, state
|
|
|
|
|
# file, or failure mode (LIVE_ROLLOUT Phase 3.3). Region rules: see fly.toml.
|
|
|
|
|
#
|
2026-07-10 01:32:22 -04:00
|
|
|
# The unarmed machine idles in geocheck --idle until the USER sets
|
|
|
|
|
# LIVE_PRIVATE_KEY + LIVE_FUNDER_ADDRESS + LIVE_CONFIRM (the typed
|
|
|
|
|
# confirmation phrase) via flyctl secrets set.
|
2026-07-08 23:17:35 -04:00
|
|
|
app = "wwf-copybot-live"
|
|
|
|
|
primary_region = "arn"
|
|
|
|
|
|
|
|
|
|
[build]
|
|
|
|
|
dockerfile = "fly.Dockerfile"
|
|
|
|
|
|
|
|
|
|
[env]
|
|
|
|
|
COPYBOT_ROLE = "live"
|
|
|
|
|
|
2026-07-10 01:32:22 -04:00
|
|
|
# public HTTPS endpoint for the live app's OWN Alchemy push webhook
|
|
|
|
|
# (POST /alchemy — added 2026-07-10; the 60s poll's ~39s avg detection lag
|
|
|
|
|
# is slippage the copy edge pays, push is ~3s). Its webhook + signing key
|
|
|
|
|
# are SEPARATE from the paper app's; the two books still share nothing.
|
|
|
|
|
[http_service]
|
|
|
|
|
internal_port = 8080
|
|
|
|
|
force_https = true
|
|
|
|
|
auto_stop_machines = "off"
|
|
|
|
|
auto_start_machines = true
|
|
|
|
|
min_machines_running = 1
|
|
|
|
|
|
|
|
|
|
# self-heal half of the watchdog (notify half: watchdog.yml → Discord).
|
|
|
|
|
# NB: an UNARMED live app idles in geocheck --idle (no HTTP server) — a
|
|
|
|
|
# failing health check while disarmed is expected, not a fault.
|
|
|
|
|
[checks]
|
|
|
|
|
[checks.health]
|
|
|
|
|
type = "http"
|
|
|
|
|
port = 8080
|
|
|
|
|
path = "/health"
|
|
|
|
|
interval = "30s"
|
|
|
|
|
timeout = "5s"
|
|
|
|
|
grace_period = "60s"
|
|
|
|
|
|
2026-07-08 23:17:35 -04:00
|
|
|
[[vm]]
|
|
|
|
|
size = "shared-cpu-1x"
|
|
|
|
|
memory = "512mb"
|