The QuikRun CLI. Scaffold, run, and deploy QuikRun snippets straight from your terminal.
QuikRun runs single-file snippets at the edge, each on its own URL (quik.run/r/<slug>). The CLI is a thin client over the QuikRun REST API.
Run it on demand with npx, or install globally so you can drop the prefix:
npm install -g quikrun # then just: quikrun <command>
# or, no install:
npx quikrun <command>Requires Node.js 20 or newer.
Heads up: if you use
npx, prefix every command withnpx— npx runs the CLI without addingquikrunto your PATH, so a barequikrun ...will be "command not found". Install globally to typequikrundirectly.
quikrun loginThis opens your browser, you click Authorize, and the CLI receives a token automatically. No copy-paste, no dashboard trip. The token is saved to ~/.quikrun/config.json (directory 0700, file 0600).
Headless or CI? Mint a token in the quik.run dashboard → Tokens and pass it, or set it in the environment:
quikrun login quik_xxxxxxxxxxxx
# or
export QUIKRUN_TOKEN=quik_xxxxxxxxxxxx # always takes precedencequikrun login # browser sign-in
quikrun new my-webhook # scaffold + register a snippet
cd my-webhook
# edit snippet.js
quikrun run # test it against the sandbox
quikrun deploy # ship it live at quik.run/r/<slug>| Env var | Default | Purpose |
|---|---|---|
QUIKRUN_API_URL |
https://api.quik.run |
API base URL (staging / local). |
QUIKRUN_WEB_URL |
https://quik.run |
Web app base (browser sign-in). |
QUIKRUN_TOKEN |
— | Auth token, overrides the file. |
Each scaffolded project holds a quikrun.json, read by deploy, pull, and run:
{
"slug": "my-webhook-a1b2",
"language": "javascript",
"runtime": "node:20",
"visibility": "private",
"file": "snippet.js"
}Sign in. With no argument it opens the browser and captures a token automatically. Pass a quik_… token to sign in headless.
Scaffold a new snippet. Prompts for name, language, and visibility unless provided.
quikrun new
quikrun new my-webhook --language typescript
quikrun new my-webhook --yes # non-interactive defaultsCreates ./<name>/ with the source file, quikrun.json, and a README.md.
Execute the local source with a test payload; prints the status, output, and logs.
quikrun run
quikrun run --method POST --body '{"name":"ada"}'Save the local source to a new version and deploy it live.
Overwrite the local source file with the currently deployed code.
List every snippet in your team.
Show recent run and deploy events for your team.
Connect the QuikRun MCP server (https://mcp.quik.run) to your AI client so an agent can create, run, and deploy snippets for you. Uses your logged-in token automatically, so there's nothing to paste.
quikrun mcp install # interactive picker
quikrun mcp install claude # or: cursor | vscode | windsurf | zed
quikrun mcp print cursor # show the config without writing itClaude Code and VS Code are configured through their own CLIs; Cursor, Windsurf, and Zed by merging their JSON config (existing servers are preserved). Restart the client afterwards.
Update the CLI to the latest published version. It picks the right action for how you installed it — a global install is updated in place; run via npx (or pnpm dlx/bunx) and it just points you at @latest.
quikrun upgrade # alias: quikrun updateSnippets are single-file JavaScript or TypeScript that export a default async handler(req, env) and return JSON or an HTTP response. They execute in a sandbox at the edge and can import from a curated set of npm packages (dayjs, zod, cheerio, marked, and more), plus server-render HTML. See quik.run for the current package list and limits.
npm install
npm run dev -- new my-snippet # run from source via tsx
npm run typecheck # tsc --noEmit
npm run build # emit dist/MIT