Getting Started
What you need, how to run it locally, and how to get a thread talking end to end.
Getting sark running is four steps, and only the last one involves Slack.
Install
Requirements, dependencies, and generating .dev.vars.
Quickstart
Drive a thread end to end with no Slack app.
Deploy
Template box, secrets, PUBLIC_URL.
Connect Slack
Manifest, bot token, and the fail-closed allowlist.
The short version
npm install
npm run dev-vars # writes .dev.vars (BOX_API_KEY comes from your `box` CLI login)
npm run dev # local worker on :8787
npm run drive -- --thread demo "create hello.txt with the word banana and tell me what you did"What you need before any of that
- An ascii.dev Box account. This Worker is a
control plane for Box sandboxes and does nothing without one. You need a
box_...API key. - Cloudflare Workers with Durable Objects. The per-thread state machine is a Durable Object with a SQLite backend, which is not available on the free plan.
- Node 22+ and the
boxCLI. - A Slack app is optional. The
/apisurface exercises the whole pipeline without one.
Throughout these docs, https://<your-worker>.workers.dev stands in for your own deployed
origin. Your real settings go in .deploy.env (gitignored), never in wrangler.jsonc.
One caveat about local development
The box has to be able to reach your Worker's /mcp endpoint to say anything. A local
wrangler dev on localhost:8787 is not reachable from a cloud sandbox, so a local run
exercises the watchdog fallback path instead: the reply is
recovered from the box event log rather than posted by the agent.
Full end-to-end runs go against the deployed Worker:
npm run drive -- --url https://<your-worker>.workers.dev --thread demo "hello"