10326c6ea9a0b4956c31e56a044822f3946a7dd9
pgxpool has no Tx type; pool.Begin(ctx) returns pgx.Tx. The callback signature in txWithOrg/mustCountPins was typed as pgxpool.Tx, which failed to build under the integration tag. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
anchorage
Highly-available, multi-tenant IPFS Pinning Service wire-compatible with the IPFS Pinning Services API spec.
Each anchorage instance is paired 1:1 with its own Kubo daemon and joins an embedded NATS cluster for signaling. Postgres is the source of truth for all durable state (pins, placements, orgs, users, tokens, audit log).
Status: skeleton complete, milestones 1–22 all landed end-to-end. The in-memory store is in place for dev; the pgx-backed store slots in once sqlc generates the code from sqlc.yaml + queries/.
See:
- docs/architecture.md
- docs/cluster-ops.md — drain / maintenance procedures
- docs/auth-flow.md — how anchorage handles humans + API clients
- docs/authentik-setup.md — configuring Authentik as the OIDC provider
- deploy/README.md — deb/rpm install + Swarm stack deploy
Quickstart (dev)
make build
./bin/anchorage version
Layout
cmd/anchorage/— thinmainentry point.internal/cmd/— Cobra command tree (version, soonserve,migrate,admin).internal/app/anchorage/— composition root (wires deps, lifecycle).internal/pkg/— domain packages (config,store,pin,ipfs, ...).configs/— example Viper YAML.docs/— architecture, auth flow, operations.
Development
make check # fmt + vet + lint + test + vuln
make test # go test -race ./...
make build # ./bin/anchorage
Languages
Go
94.8%
PLpgSQL
2.9%
Makefile
0.9%
Dockerfile
0.7%
Shell
0.7%