Back to Rivet

Kitchen Sink

examples/kitchen-sink/README.md

2.3.23.0 KB
Original Source

Kitchen Sink

Unified kitchen-sink showcasing Rivet Actor features with a single registry, grouped navigation, and interactive demos.

Getting Started

sh
git clone https://github.com/rivet-dev/rivet.git
cd rivet/examples/kitchen-sink
npm install
npm run dev

Features

  • Unified registry that aggregates actor fixtures and example actors
  • Sidebar navigation grouped by core actor feature areas
  • Action runner and event listener for quick experimentation
  • Raw HTTP and WebSocket demos for handler-based actors
  • Workflow and queue pattern coverage in a single kitchen-sink

Prerequisites

  • OpenAI API key (set OPENAI_API_KEY) for the AI actor demo

Raw SQLite Fuzz Harness

Drive the raw SQLite fuzzer actor against a real endpoint:

sh
export RIVET_ENDPOINT="http://127.0.0.1:6420"
pnpm --filter kitchen-sink exec tsx scripts/db-fuzz.ts --endpoint "$RIVET_ENDPOINT" --start-local-envoy --seed local-smoke --iterations 2 --actor-count 1 --concurrency 1
pnpm --filter kitchen-sink exec tsx scripts/db-fuzz.ts --endpoint "$RIVET_ENDPOINT" --start-local-envoy --seed stress-001 --iterations 10 --actor-count 4 --concurrency 4 --mode hot --sleep-every 2 --ops-per-phase 100
pnpm --filter kitchen-sink exec tsx scripts/db-fuzz.ts --endpoint "$RIVET_ENDPOINT" --start-local-envoy --seed vfs-001 --mode kitchen-sink --iterations 3 --actor-count 1 --concurrency 1 --ops-per-phase 80 --max-payload-bytes 131072 --growth-target-bytes 1048576
pnpm --filter kitchen-sink exec tsx scripts/db-fuzz.ts --endpoint "$RIVET_ENDPOINT" --start-local-envoy --seed growth-10m --mode growth --iterations 1 --actor-count 1 --concurrency 1 --ops-per-phase 20 --max-payload-bytes 98304 --growth-target-bytes 10485760
pnpm --filter kitchen-sink exec tsx scripts/db-fuzz.ts --endpoint "$RIVET_ENDPOINT" --start-local-envoy --seed nasty-script --mode nasty-script --iterations 1 --actor-count 1 --concurrency 1 --ops-per-phase 1 --max-payload-bytes 131072

The harness uses raw SQLite only. It checks live rows against an operation log, validates repeated updates, deletes, upserts, transfer transactions, payload checksums, SQLite integrity, indexed query parity, page-boundary payloads, fragmentation/VACUUM churn, schema churn, constraints, savepoints, idempotent replay, relational aggregates, PRAGMA probes, prepared statement churn, large DB growth, boundary keys, shadow checksums, read/write overlap, truncate/recreate stress, and persistence after optional sleep/wake cycles.

Implementation

The kitchen-sink registry imports fixtures and example actors into one setup so each page can expose a curated subset.

See the registry in src/actors.ts and the UI in frontend/App.tsx.

Resources

Read more about Rivet Actors, actions, and connections.

License

MIT