axon

Logic coprocessor API

Give your agent
a place to think.

POST JavaScript, get JSON back. axon runs untrusted code in a fresh WebAssembly sandbox: no filesystem, no network, no state between calls. Math, dates, regex and npm packages, without spending model tokens on the arithmetic.

  • No account
  • No API key
  • Free plan
  • JSON in, JSON out

One request, one answer

curl
curl -s https://axon.va-n.com/api/v1/execute \
  -H 'content-type: application/json' \
  -d '{"code":"return 2 + 2"}'
{"ok":true,"result":4,"logs":[],"meta":{"modules":[],"engine":"quickjs 2025-09-13 (bellard)"}}

The sandbox is stateless by construction. Every call gets a new QuickJS runtime, a new heap and a deadline. Nothing you send is retained, and nothing you send can reach the network.

Try it here

Live · POST /api/v1/execute
javascript
Ready.
response round trip: n/a
{
  "ok": true,
  "result": 4
}

The playground uses this page's own API, so the rate limit applies: 30 requests per minute, burst 10. If it answers 429 or 503, wait a second and run again. Keyboard shortcut: Ctrl or Cmd plus Enter.

What it will never do

Security model
01

Keep state

A new runtime and a new heap per request. No globals survive, no module registry is reused, no cache is visible from inside. Two calls cannot talk to each other.

02

Reach the network

There is no fetch, no sockets, no XMLHttpRequest inside the sandbox. Packages are fetched by the Worker before evaluation starts, from esm.sh only.

03

Touch a disk

No filesystem, no process, no require, no environment. Node builtins such as node:fs are refused before a byte is evaluated.

The measured envelope

Free plan · 2026-10-19
Scenario Measured Why
Arithmetic, strings, regex, dates 3 to 9 ms CPU One parse, one evaluation, no I/O. p50 is 6 ms.
Full lodash import (warm) 44 to 120 ms CPU 82 KB bundle parsed by QuickJS. Submodule imports cost far less.
Median wall time, trivial call 10 ms Server side, measured with wrangler tail.
Worst wall time, trivial call 160 ms Cold isolate, GC, or a first request in a new colo.
Runaway loop cut off 280 ms CPU A fixed instruction budget, not a wall clock.
Heap ceiling per call 8 MB default Clamped to 4..32 MB with memory_mb.

Cloudflare's free plan advertises 10 ms of CPU per request. The platform grants isolates some burst room, and a trivial call measures 3 to 9 ms here. A full lodash import measures 44 to 120 ms and was served, but it sits outside the advertised budget: keep calls small, prefer a submodule (date-fns/addDays, not date-fns), and read the FAQ before pointing a loop at it.

Where it earns its place

Use cases
  • Tool calls for agents. Replace "the model does arithmetic" with a deterministic interpreter.
  • Data shaping. Group, sort, sum and rename JSON before it goes back into a prompt.
  • Validation. Regex, schemas and date rules that must be exact, not plausible.
  • Dates and time zones. Business days, deadlines, offsets, ISO formatting.
  • Unit and currency math. Rounded once, at the end, in one place.
  • Package calls. lodash, zod, date-fns/addDays and anything else esm.sh can bundle into one file.

Point your agent at it

Endpoint
POST https://axon.va-n.com/api/v1/execute
content-type: application/json

{ "code": "return 2 + 2", "timeout_ms": 750, "memory_mb": 16 }

Full API reference Self-host it