Content-addressed pin & hosting on kotoba — a Datomic-over-IPFS knowledge graph. A pin is a named commit CID; once pinned it is durable off-site and addressable over IPFS.
ipfs pin remote service add kotobase https://kotobase.net <JWT>
ipfs pin remote add --service=kotobase --name=my-doc <cid>
ipfs pin remote ls --service=kotobase
ipfs pin remote rm --service=kotobase --cid=<cid>
Authenticate with a gftd-AUTHN JWT (Bearer) or self-signed CACAO. Retrieve anything by CID at ipfs.gftd.ai/ipfs/<cid>.
POST/GET/DELETE https://kotobase.net/pins — standard PSA, works with native ipfs pin remote.
POST https://kotobase.net/xrpc/ai.gftd.apps.kotobase.* — pin/account/usage, Datom/Datalog + SPARQL query, KG ingest.
https://mcp.gftd.ai/mcp — tools generated from the same lexicons.
https://ipfs.gftd.ai/ipfs/<cid> — retrieve pinned content by CID over IPFS.
Every pinned commit's blocks are packed into one CAR and archived off-site to Backblaze B2 (CAR-on-B2): a content-addressed second copy that scales (object count ∝ commits, not blocks). Cold reads are served from B2 via a single ranged GET. The local durable tier is the kubo (IPFS) blockstore on the pod's PVC.