Stitch any CI into Tangled
2

Configure Feed

Select the types of activity you want to include in your feed.

1# tack - Connect Tangled to your CI 2 3Tack is a custom [Tangled](https://tangled.org) spindle that runs 4CI on alternate providers and reports their results back 5to Tangled using standard ATProto records so they show up natively 6in Tangled's UI. 7 8## What it does 9 10Tack is a drop-in alternative to the stock `spindle` runner. You run 11`tack` and [register it using the standard UI](https://tangled.org/settings/spindles). 12 13Instead of executing workflows in local containers, tack translates each 14Tangled pipeline trigger into a 3rd party CI build, and reports build state 15back to Tangled using the existing `sh.tangled.pipeline.status` wire format. 16 17This makes even 3rd party CIs integrate first class into Tangled so their 18status, counts, etc. can show up inline in things like pull requests. 19 20``` 21 sh.tangled.pipeline 22 Jetstream ───────────────────────▶ tack 2324 │ Create Build 2526 Buildkite 2728 │ webhooks 2930 tack ──── /events (WebSocket) ────▶ Tangled appview 31 sh.tangled.pipeline.status 32``` 33 34```sh 35go run . -addr :8080 36``` 37 38## Endpoints (planned) 39 40- `GET /events` — WebSocket stream of pipeline status events, 41 consumed by the Tangled appview. 42- `POST /webhooks/buildkite` — Buildkite webhook receiver. 43- `POST /xrpc/sh.tangled.pipeline.cancelPipeline` — cancel a running build. 44 45## Configuration (planned) 46 47| Env var | Description | 48| ---------------------- | ------------------------------------ | 49| `TACK_BUILDKITE_TOKEN` | Buildkite API token | 50| `TACK_BUILDKITE_ORG` | Buildkite organization slug | 51| `TACK_JETSTREAM_URL` | Tangled Jetstream WebSocket URL | 52| `TACK_DB_PATH` | Local SQLite path for the event log | 53| `TACK_OWNER_DID` | DID of the spindle operator |