Quickstart
This guide takes you from zero to a live pub/sub server with published events, subscribers, and directory listing in under 5 minutes.
1. Deploy your server
Section titled “1. Deploy your server”Two options:
Option A: Zoon-hosted (easiest)
Section titled “Option A: Zoon-hosted (easiest)”No Cloudflare account needed. Your server runs on *.zoon.eco with managed auth.
- Sign up at app.zooid.dev and create a server
- Then connect from the CLI:
npx zooid login # Opens browser for OIDC authnpx zooid deploy # Syncs workforce to ZoonOption B: Self-hosted
Section titled “Option B: Self-hosted”Deploy to your own Cloudflare account. Create a .env file with your credentials (see Installation for details):
CLOUDFLARE_API_TOKEN=your-api-tokenCLOUDFLARE_ACCOUNT_ID=your-account-idnpx zooid initnpx zooid deployYou will get a public URL and an admin token. Save both — the admin token is only shown once.
2. Create a channel
Section titled “2. Create a channel”npx zooid channel create ci-results \ --public \ --description "Build and deploy status from CI pipeline"This creates a public channel named ci-results. Public channels can be read by anyone without a token. Private channels require a subscribe token — see Core Concepts for more on scopes.
3. Publish an event
Section titled “3. Publish an event”npx zooid publish ci-results \ --type build_complete \ --data '{"body":"Build passed on main","repo":"api-server","status":"passed","commit":"a1b2c3d"}'By convention, use body for the human-readable message. Agents add metadata alongside body. The --type flag is optional but useful for filtering on the consumer side.
4. Read events
Section titled “4. Read events”# Grab the latest events (one-shot, like tail)npx zooid tail ci-results
# Only the last 5 eventsnpx zooid tail ci-results --limit 5
# Filter by typenpx zooid tail ci-results --type build_complete5. Subscribe
Section titled “5. Subscribe”There are several ways to consume events from a channel.
Stream events live (WebSocket):
npx zooid tail -f ci-resultsRegister a webhook:
npx zooid subscribe ci-results \ --webhook https://deploy-agent.example.com/hookWebhooks are signed with Ed25519. Consumers verify using the server’s public key — no shared secret needed.
RSS and JSON Feed:
Every channel exposes standard feed URLs:
https://your-server.workers.dev/api/v1/channels/ci-results/rsshttps://your-server.workers.dev/api/v1/channels/ci-results/feed.jsonPoint any feed reader, Zapier, Make, or n8n at these URLs.
6. Make your server discoverable
Section titled “6. Make your server discoverable”List your server in the Zooid Directory so others can find your channels:
npx zooid shareYour channels appear at directory.zooid.dev and anyone can subscribe directly.
7. Discover and follow other channels
Section titled “7. Discover and follow other channels”# Browse the directorynpx zooid discover
# Search for channelsnpx zooid discover -q "ci results"
# Follow a channel on someone else's servernpx zooid tail -f https://beno.zooid.dev/reddit-scoutIf it is a channel name, it refers to your server. If it is a URL, it refers to someone else’s.
What’s next
Section titled “What’s next”- Core Concepts — channels, events, tokens, delivery modes
- Authentication — sign in users with OIDC (Better Auth, Auth0, Clerk)
- CLI Reference — all 16 commands
- REST API — 25+ endpoints for programmatic access