AGENTS ONLINE · 12QUEUE: 0UPTIME 99.97%ISOLATED CONTAINERS · 999 CONCURRENTAI RUNTIME · SSE STREAMING
// AI CODE EXECUTION CLOUD · v1.0 · 2026-05

Run AI-written
code in a box.

Prompt in. Container up. Output streamed back. viberunner.org spins a secure, isolated container, hands it to an AI agent, and tears it down when the job is done. No setup. No cleanup. No SSH.

● ISOLATED CONTAINERS● AI AGENTS BUILT IN● LIVE LOG STREAMING● REST API + WEBHOOKS
~/jobs/vr_8x4kq · live STREAMING
01POST/api/jobs
02{ prompt: "build a markdown editor with
03 live preview and word count" }
04
05202job_id: vr_8x4kq · queued
06SSEevent: container.start
07allocating ports, isolating filesystem...
08SSEevent: claude.tool_use
09Write src/App.tsx · 1.2KB
10SSEevent: claude.tool_use
11Write src/preview.ts · 612B
12SSEevent: dev.ready
13https://vr_8x4kq.viberunner.org
14200job complete · 14.2s · $0.018
>
// HOW IT RUNS

Three steps. Zero ceremony.

01STEP

You prompt.

Type what you want built — or upload code, or both. The job goes to the queue with a fresh job ID and a domain.

02STEP

A container spins up.

A fresh, isolated Linux container boots in under a second, mounts a clean workspace, and hands control to the AI agent — running as an unprivileged user with no access to anything else.

03STEP

You watch it ship.

Tool calls, file writes, server logs — streamed live over SSE. When the job ends, the box dies. Outputs stay.

// API

Curl it. SDK it. Webhook it.

One endpoint to launch a job, one stream to watch it run, one bearer token to authenticate. The same REST API powers the web app — anything you can do in the dashboard, you can script.

// curlcurl
# 1. Create a job
curl -X POST https://api.viberunner.org/v1/jobs \
  -H "Authorization: Bearer $VIBERUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "prompt": "Build a markdown editor with live preview" }'

# → { "id": "vr_8x4kq", "status": "pending" }

# 2. Stream live logs over SSE
curl -N https://api.viberunner.org/v1/jobs/vr_8x4kq/stream \
  -H "Authorization: Bearer $VIBERUN_API_KEY"
// Nodejs
import { Viberun } from "@viberun/sdk";

const vr = new Viberun({ apiKey: process.env.VIBERUN_API_KEY });

const job = await vr.jobs.create({
  prompt: "Build a markdown editor with live preview",
});

for await (const ev of vr.jobs.stream(job.id)) {
  if (ev.type === "stdout") process.stdout.write(ev.text);
  if (ev.type === "done")   console.log("done:", ev.status);
}
// Pythonpy
from viberun import Viberun

vr  = Viberun(api_key=os.environ["VIBERUN_API_KEY"])
job = vr.jobs.create(prompt="Build a markdown editor with live preview")

for ev in vr.jobs.stream(job.id):
    if ev.type == "stdout": print(ev.text, end="")
    if ev.type == "done":   print("done:", ev.status)
● 401 ON BAD TOKEN● 1000 REQ/HOUR PER KEY● HTTP/2 + SSE● OPENAPI SPEC INCLUDED
// SECURITY

AI you don't have to babysit.

AI-written code is fast, useful, and occasionally reckless. viberunner runs it inside a security model designed to make recklessness boring. The agent can write what it wants — it just can't escape the container, hit your private network, or burn through your wallet.

// ISOLATED CONTAINERS

Isolated containers

Every job runs in its own fresh Linux container. Filesystem, processes, and network are namespaced — no two jobs ever see each other.

// UNPRIVILEGED EXECUTION

Unprivileged execution

The AI agent never runs as root. It gets an ephemeral, unprivileged user with no access to the host or to your account credentials.

// DISPOSABLE BY DEFAULT

Disposable by default

When a job ends, the container dies with it. No leftover processes, no residual filesystem, no zombie state to clean up.

// NETWORK ON A LEASH

Network on a leash

Outbound calls go through a proxy that logs every request and can block anything outside an allowlist you control.

// BYO MODEL KEYS

BYO model keys

LLM calls route through our proxy with per-key usage tracking. Bring your own provider keys, or use ours with hard spend caps.

// ENCRYPTED AT REST

Encrypted at rest

Prompts, code, and outputs are stored encrypted. Output files are scoped to the user who launched the job.

// PRICING

Pay for boxes, not for seats.

// PLAN

Free

$0per month
  • 10 jobs / day
  • Ephemeral sandboxes only
  • Shared queue
  • Community docs
Start free
Most picked
// PLAN

Builder

$19per month
  • Unlimited jobs
  • Permanent workspaces
  • Priority queue
  • Stream logs · 30d retention
Get builder
// PLAN

Team

Talkusage-based
  • Dedicated pool UIDs
  • SSO + audit logs
  • Custom egress allowlist
  • Slack support
Contact
// MANIFESTO · 001

The model writes the code. The container runs it. You watch.
That's the whole product.

We don't replace your editor. We don't host your prod. We give Claude Code a clean Linux box, a network it can't escape, and a URL to ship its output to. Then we throw the box away.