[WIP] A Tangled spindle hosted on Fly.io

initial commit

+67
+2
.dockerignore
··· 1 + fly.toml 2 + .tangled
+14
.tangled/workflows/deploy.yml
··· 1 + when: 2 + - event: ["push", "manual"] 3 + branch: ["main"] 4 + 5 + engine: "nixery" 6 + 7 + dependencies: 8 + nixpkgs: 9 + - flyctl 10 + 11 + steps: 12 + - name: deploy 13 + command: | 14 + fly deploy --remote-only --ha=false
+29
Dockerfile
··· 1 + ARG HOSTNAME="fly-spindle-example.fly.dev" 2 + ARG DID="did:plc:27rjcwbur2bizjjx3zakeme5" 3 + 4 + FROM golang:alpine AS builder 5 + WORKDIR /app 6 + 7 + RUN apk update && apk add --no-cache git build-base 8 + 9 + RUN git clone https://tangled.org/tangled.org/core . 10 + 11 + RUN go mod download 12 + RUN CGO_ENABLED=1 go build -v -o cmd/spindle/spindle cmd/spindle/main.go 13 + 14 + FROM docker:dind 15 + WORKDIR /app 16 + 17 + ARG HOSTNAME 18 + ARG DID 19 + 20 + COPY --from=builder /app/cmd/spindle/spindle /usr/local/bin/spindle 21 + 22 + RUN mkdir -p /var/log/spindle 23 + 24 + ENV SPINDLE_SERVER_HOSTNAME=$HOSTNAME 25 + ENV SPINDLE_SERVER_OWNER=$DID 26 + 27 + EXPOSE 6555 28 + 29 + CMD ["spindle"]
+2
README.md
··· 1 + # Fly.io Spindle Template 2 + This is a [spindle](https://tangled.org/tangled.org/core/blob/master/docs/spindle/pipeline.md) runner hosted on Fly.io. It's automatically configured to scale to zero when it's not in use, so cost is minimal. The primary trade-off is that it takes slightly longer to wake up.
+20
fly.toml
··· 1 + # fly.toml app configuration file generated for fly-spindle-example on 2025-11-28T11:33:15-05:00 2 + # 3 + # See https://fly.io/docs/reference/configuration/ for information about how to use this file. 4 + # 5 + 6 + app = 'fly-spindle-example' 7 + primary_region = 'iad' 8 + 9 + [build] 10 + 11 + [http_service] 12 + internal_port = 6555 13 + force_https = true 14 + auto_stop_machines = 'stop' 15 + auto_start_machines = true 16 + min_machines_running = 0 17 + processes = ['app'] 18 + 19 + [[vm]] 20 + size = 'shared-cpu-1x'