GET /xrpc/app.bsky.actor.searchActorsTypeahead typeahead.waow.tech
Python 35.6%
TypeScript 34.7%
Zig 28.9%
Just 0.5%
Dockerfile 0.3%
62 1 0

Clone this repository

https://tangled.org/zzstoatzz.io/typeahead https://tangled.org/did:plc:xbtmt2zjwlrfegqvch7fboei/typeahead
git@tangled.org:zzstoatzz.io/typeahead git@tangled.org:did:plc:xbtmt2zjwlrfegqvch7fboei/typeahead

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

typeahead#

community actor search for atproto. aims to be a drop-in replacement for app.bsky.actor.searchActorsTypeahead — same endpoint path and query params, returns the full profileViewBasic surface minus viewer (did, handle, displayName, avatar, associated, labels, createdAt).

live: https://typeahead.waow.tech

curl "https://typeahead.waow.tech/xrpc/app.bsky.actor.searchActorsTypeahead?q=nate&limit=10"

stack#

jetstream → ingester (zig, fly.io) → worker (cloudflare)
                                        ↓
                                   Turso (libSQL/FTS5)
  • ingester: zig on fly.io — streams profiles, posts, likes, and follows via jetstream, batches to worker
  • worker: cloudflare worker + Turso + KV + cache API — FTS5 prefix search, edge-cached (60s), rate-limited
  • identity: slingshot for on-demand handle resolution

dev#

# worker
npm install && npx wrangler dev

# ingester
cd ingester && zig build run

requires TYPEAHEAD_URL and TYPEAHEAD_SECRET env vars for the ingester.

deploy#

npx wrangler deploy              # worker to cloudflare
cd ingester && fly deploy        # ingester to fly.io