6.3Software · Infrastructure · SystemsDustin Edwards

Carrel

The writing desk, where drafts are written, checked, and published.

How Carrel connects

Used by 2

Inside Carrel

Runs

  • Carrel Worker

    Cloudflare Worker

    The editor behind Access, and the MCP door AI sessions use, in one Worker.

    writes to carrel reads Site Worker (dustinedwards.info) publishes to Site Worker (dustinedwards.info) writes to OAUTH_KV reads Cloudflare Access serves AI sessions writes to GitHub reads GitHub reads Google writes to Email writes to Books (Writing) reads Books (Writing)

  • Fifteen-minute check

    Workers cron trigger

    Checks each connected site against site-api's contract and refreshes Carrel's index of its posts.

    watches Site Worker (dustinedwards.info) writes to carrel reads Google writes to Bluesky and X writes to Drafting routine writes to Email writes to MCP Worker (Capsid)

  • Nightly backup

    Workers cron trigger

    Dumps the D1 database into carrel-backups with d1-dump, alone, once a night.

    writes to carrel-backups reads carrel

Stores

  • carrel

    D1

    People and roles, working drafts, AI drafts, flags and the index of each site's posts.

  • OAUTH_KV

    Workers KV

    Grants and tokens for the AI door's OAuth provider.

  • carrel-backups

    R2

    The nightly D1 dumps.

Outside

  • Cloudflare Access

    Access, and Access for SaaS

    Guards every page at the Worker level, and is the login behind the AI door's own OAuth.

  • AI sessions

    MCP clients

    The AI sessions that read posts, save AI drafts and flag problems through the AI door.

  • GitHub

    Repos, Actions, a GitHub App

    The writing repository Carrel commits book files to through its App, and CI, which deploys the Worker.

    deploys Carrel Worker watches Carrel Worker

  • Google

    Drive and Search Console APIs

    Manuscripts in a shared Drive folder, and search data for dustinedwards.info.

  • Bluesky and X

    Bluesky and X APIs

    Where Carrel posts original social posts. It never replies, messages, follows or likes.

  • Drafting routine

    Claude Code routine

    Drafts brand posts when no session drafted them ahead. Carrel only fires it.

  • Email

    Workers send_email binding

    Alerts when a site's state changes, and the unpublish link after an AI publish.

Uses 13

Step by step

Publishing a post

A post goes from a private draft in Carrel to a live page on dustinedwards.info, through the one contract every site speaks, with the site deciding what may go live.

  1. Drafted: the writer works in Carrel's editor, which autosaves a working draft only that person can see.
  2. Previewed: Carrel shows the site's own render of the draft in a sandbox, with the checks' flags and any reviewer's beside it.
  3. Saved: an Editor or the Owner saves the draft to the site, naming the version it replaces. The site refuses a stale one, so nobody overwrites a newer save.
  4. Published: only the Owner publishes, and a first publish asks for confirmation. The site's own publish policy decides, so there is one authority.
  5. Or by instruction: the Owner's AI session may publish through the MCP door, never while a flag is open. It sends no text, so only the saved version goes live, and Dustin is emailed an unpublish link.
  6. Recorded: Carrel indexes the live post, records who published it (an AI session by its client name) and clears the draft that was sent.
  7. Watched: every 15 minutes Carrel runs site-api's conformance suite against the site and emails when its state changes.

Public model, 2026-10-23. Markdown