Agents · Workflows · Harnesses

Ship the agent.
Share the box.

You built an agent in a repo. GetBoxed turns it into something anyone can run — no checkout, no install, no keys to hand over. It's never been this easy to share.

Open a repo route — it builds itself Secrets stay yours, per-request
getboxed.ai/acme/support-agent
01
Source snapshot pinned
commit a1f9c3e · main
02
Build in sandbox
install & build · no runtime secrets
03
Deploy to worker runtime
worker bundle live
04
Discover entrypoints
2 agents · 1 workflow found
Runnable — open the chat console
support-agent ready
From repo to runnable

Paste a link. Get a working product.

You don't set anything up. Point GetBoxed at your project and it does the rest, showing you each step as it goes — until there's something real people can use.

01

Point it at your project

Give GetBoxed your project link. It takes an exact snapshot so everyone always runs the same version.

→ your project, captured
getboxed.ai/acme/support-agent
Snapshot pinned
your project, captured exactly
02

It gets everything ready

GetBoxed assembles your project on its own, in a safe space — and never touches your private keys while doing it.

keys stay private
building…
Assembling in a safe space
no private keys touched
03

It figures out what's inside

GetBoxed finds every agent and workflow your project offers and tells you exactly what each one needs to run.

→ ready to share
what's inside
2 agents found
support-agent · weekly-digest
1 workflow found
needs: 1 key
04

You always know where it stands

Every box publishes one honest state — no silent green checkmark hiding a broken build. When it's runnable, anyone you invite opens it and starts in one click; when it isn't, the box says exactly why.

→ runnable · build failed · no entrypoints
status
Runnable
open the chat console · one click
!
Build failed
openable — read the build log, not runnable
No entrypoints
built fine, but nothing was exposed to run

The work of shipping an agent, removed.

GetBoxed takes the boring, dangerous parts — hosting, key handling, drift between what runs and what's documented — and makes them disappear.

Out of the box, literally

A non-technical user runs a real agent in one click. The entrypoint is the only selector — no install, no config files, no model picker to get wrong.

Your secrets never leave home

Keys live only in the platform secret store. They cross into the worker request-scoped, drive one turn, and are forgotten. The worker holds nothing at rest.

What runs is what's discovered

The same deployed worker serves discovery and sessions, so the agents you see can never drift from the agents that actually run.

Invite to use, or share the source

Invite a specific person to run your box under your secrets and budget — they get their own sessions and files, never inspection power. Or share the repo route so anyone stands up their own independent box. Revoke an invite and access cuts off; you keep every record for cost and audit.

Box anything you build

Agents, workflows — even the harness around them.

Whatever your repo declares through the authoring DSL becomes a shareable entrypoint. Pick one to see what running it looks like.

chat console · support-agent
YOUMy order #4821 hasn't shipped — can you check?
lookup_order(4821)✓ done
AGTOrder #4821 shipped this morning, arriving Thursday. Want the tracking link?
tokens · in 412 / out 96

For builders: structure the folders, the platform learns the rest.

Author with the @getboxed/core DSL and a folder convention you already know from Next.js. Every definition is a static descriptor carrying metadata only — so discovery reads what your repo offers without ever running your code with real keys.

Folders are the convention

Drop files in agents/, workflows/, secrets/, and variables/. The folder layout is the config — a build step wires it all together for you.

Secrets are lazy handles

A SecretRef is metadata at discovery, a real value only at run. Your env binding is never inferred.

Variables, web-overridable

Non-secret config like model or base URL ships with a default and can be overridden from the web — no code change.

// a static descriptor, not an initializer
import { defineAgent, defineProvider } from '@getboxed/core'
import { secrets } from '../secrets'
import { vars } from '../variables'

const openai = defineProvider('openai', { apiKey: secrets.openaiApiKey })

export default defineAgent({
  name: 'support-agent',
  model: vars.model,            // ref or literal
  instructions: 'Answer order questions.',
  tools: [lookupOrder],
})

A home for everything you've boxed and joined.

The logged-in dashboard shows what you built, what you were invited to, and what you recently ran — each with the actions that fit your role.

Box your first agent. Share it in a click.

GetBoxed is in active development, turning a repo of agents, workflows, and harnesses into something anyone can run out of the box.