A minimal Agent platform for three-day middleware hackathons. It provides Agent CRUD, a browser Playground, persistent workspaces, and Codex CLI backed by the Volcengine Ark Responses API.
Run it locally with Docker, Colima, or rootless Podman, or deploy it to Volcengine ECS.
Warning
This is a single-user proof of concept. It intentionally has no identity, tracing, audit, or hardened sandbox middleware. Do not use production data or credentials. See SECURITY.md.
- React and TypeScript Web UI
- Agent create, edit, start, stop, delete, and multi-turn chat
- Fastify control plane with asynchronous Run state
- Persistent Agent workspaces and Codex sessions
- Disposable Docker, Colima, or Podman container for each local turn
- Docker and Terraform deployment paths for Volcengine ECS
- Node.js 22+
- npm 10+
- Docker, Colima, or Podman
- A Volcengine Ark API key and endpoint that supports the Responses API
Codex CLI is included in the Runtime image and is not required on the host.
Install Node.js 22+ and one supported container engine, then verify them:
node --version
npm --version
docker --version # Docker Desktop, Docker Engine, or Colima
podman --version # Use this instead when running PodmanOnly one container engine is required. Codex CLI is already included in the Runtime image.
git clone <repository-url> volc-agent-launchpad
cd volc-agent-launchpadSkip this step when already working from the repository root.
ARK_API_KEY=your-ark-api-key \
ARK_MODEL=ep-your-endpoint-id \
npm run pocThe first run installs Node.js dependencies and builds the Runtime image. The script automatically selects Docker, Colima, or Podman.
Visit http://localhost:3000, or open it from the terminal:
open http://localhost:3000 # macOS
xdg-open http://localhost:3000 # Linux desktopIn the Web UI:
-
Select Create Agent.
-
Enter a name, description, and workspace instructions.
-
Select Create Agent again.
-
Enter a task in the Playground, for example:
Create a TypeScript hello-world CLI, add a test, and run it.
The Agent can write files, run commands, and continue the same Codex session in later messages.
Press Ctrl+C in the startup terminal. The script removes temporary Runtime
containers but keeps Agent workspaces and conversations.
- macOS state:
~/.volc-agent-launchpad/ - Linux state:
.local/ - Custom location: set
LOCAL_POC_DATA_ROOT
Run the same npm run poc command to continue later.
Force Podman when multiple engines are installed:
CONTAINER_ENGINE=podman \
ARK_API_KEY=your-ark-api-key \
ARK_MODEL=ep-your-endpoint-id \
npm run pocColima uses CONTAINER_ENGINE=docker because it exposes the Docker CLI.
For a clean Linux host, follow the rootless Podman setup.
Create and edit the configuration:
./scripts/bootstrap-local.shRequired values in .env:
ARK_API_KEY=your-ark-api-key
ARK_MODEL=ep-your-endpoint-id
APP_AUTH_TOKEN=replace-with-at-least-24-random-charactersStart the application:
docker compose up --buildOpen http://localhost:3000. Stop it without deleting Agent data:
docker compose downnpm install
cp .env.example .env
npm install --global @openai/codex@0.111.0
npm run dev- Web UI: http://localhost:5173
- API: http://localhost:3000
Use local paths in .env when running outside Docker:
APP_DATA_DIR=.data
AGENT_WORKSPACE_ROOT=workspaces
CODEX_HOME=codex-home- Existing Linux ECS with Docker
- Complete Volcengine environment with Terraform
- Local Docker, Colima, and Podman details
The existing-ECS script deploys from the current source tree:
cp .env.example .env.production
./scripts/deploy-existing-ecs.sh .env.productionThe Terraform path provisions VPC, subnet, security group, ECS, and EIP:
cp deploy/volcengine/terraform.tfvars.example \
deploy/volcengine/terraform.tfvars
./scripts/deploy-volcengine.sh| Variable | Default | Purpose |
|---|---|---|
ARK_API_KEY |
Required | Ark model API key. |
ARK_MODEL |
Required | Responses-capable endpoint or model ID. |
ARK_BASE_URL |
Beijing v3 endpoint | Ark OpenAI-compatible API URL. |
APP_AUTH_TOKEN |
Empty on loopback | Shared demo token; use 24+ random characters remotely. |
RUNTIME_PROVIDER |
local-process |
container for disposable local Runtime containers. |
CODEX_SANDBOX_MODE |
workspace-write |
Codex inner sandbox mode. |
CODEX_TIMEOUT_MS |
600000 |
Maximum duration of one turn. |
LOCAL_POC_DATA_ROOT |
Platform-specific | Local metadata, workspace, and session directory. |
See .env.example for all Runtime and resource-limit options.
flowchart LR
UI["React Web UI"] --> API["Fastify control plane"]
API --> Store["JSON metadata and Agent workspaces"]
API --> Runtime{"Runtime provider"}
Runtime -->|Local POC| Container["Disposable Docker / Colima / Podman container"]
Runtime -->|ECS profile| Codex["Codex CLI in application container"]
Container --> Ark["Volcengine Ark Responses API"]
Codex --> Ark
The first turn uses codex exec; later turns resume the stored Codex thread.
Deleting an Agent archives its workspace under workspaces/.deleted/.
See docs/ARCHITECTURE.md for component and extension boundaries.
npm run check
terraform fmt -check -recursive deploy/volcengine
docker compose config
