Self-hosted deployment guide

Deploy Your Own

Run recall cloud under your own brand. Eight steps, all on Cloudflare's free tier. Your data, your domain, your secrets.

under 20 minutes, start to finish

What you'll need

  • Cloudflare account (free)
  • Stripe account (free)
  • wrangler CLI installed
  • Node 18+ for wrangler
all free tiers are fine
The Runbook

Eight steps to your own cloud

Follow in order. Each step builds on the last.

file it, ship it
1

Fork the repo

Clone the recall repo and move into the worker directory where the Cloudflare Worker source lives.

terminal
git clone https://github.com/ashrocket/recall
cd recall/worker
2

Create Cloudflare account

Sign up at cloudflare.com if you haven't already — the free tier covers Workers, R2, and KV with comfortable limits for this use case.

install wrangler cli
npm install -g wrangler
wrangler login
3

Create R2 bucket

R2 stores the actual memory blobs. Create the bucket with wrangler, then enable versioning in the Cloudflare dashboard under R2 → your bucket → Settings.

terminal
wrangler r2 bucket create recall-store
# then: dashboard → R2 → recall-store → Settings
# → enable versioning
4

Create KV namespace

KV stores lightweight metadata — session indexes, user records, API keys. Copy the namespace ID from the output and paste it into wrangler.toml.

terminal
wrangler kv namespace create RECALL_KV
# copy the id from output, then in wrangler.toml:
[[kv_namespaces]]
binding = "RECALL_KV"
id = "<paste-id-here>"
5

Create Stripe account + product

Create a recurring product at $1.50/quarter in the Stripe dashboard. Grab the webhook signing secret from Developers → Webhooks after you configure it in step 8.

stripe dashboard
# Product catalog → Add product
Name:     recall cloud
Price:    $1.50 / quarter (recurring)
# Save price ID — you'll reference it in code
# Developers → Webhooks → signing secret → copy
6

Set secrets

All credentials go in via wrangler secret put — never in source code or wrangler.toml. Each command will prompt for the value.

terminal
wrangler secret put STRIPE_SECRET_KEY
wrangler secret put STRIPE_WEBHOOK_SECRET
wrangler secret put API_KEY_SALT
# each prompts for value — paste, enter, done
7

Deploy

Run wrangler deploy from the worker directory. Wrangler will print your worker URL — copy it for the next step.

terminal — from worker/
wrangler deploy
# output includes your worker URL:
https://<name>.<account>.workers.dev
8

Configure Stripe webhook

Point Stripe's webhook to your worker's billing endpoint so subscription events flow through correctly. Use the worker URL from step 7.

stripe dashboard → developers → webhooks
# Add endpoint:
https://your-worker.workers.dev/v1/webhook/stripe
# Events to listen for:
customer.subscription.created
customer.subscription.deleted
invoice.payment_succeeded
security note
No credentials in code. All secrets via wrangler secret put.

The agent-* toolkit

Three small tools, same visual language, same bias: stop dragging context around by hand.