A short on-ramp for developers and contributors. Covers the repo layout, how to run the assistant locally for development, and how to talk to it programmatically through the CLI and the HTTP API.
This page is for developers who want to go beyond the shipping product:
Most developer work happens against a local install. The assistant runtime, the gateway, the credential service, and the workspace all run on your Mac, so you can read state, attach a debugger, and iterate without round-tripping through Vellum's infrastructure. Everything below assumes a local install unless noted.
Vellum Cloud is the same software running on managed infrastructure. The HTTP API is gated behind the platform gateway in cloud mode, not exposed directly, so for raw API development you'll want a local install. See Cloud hosting and Local hosting for the full comparison.
Most developer work happens in vellum-assistant, the open-source repo that holds the assistant daemon and everything that ships with it:
assistant/: the TypeScript runtime (conversations, memory, tools, channels, schedules)gateway/: the network guard rail that fronts the runtimecli/: the vellum command line interfacecredential-executor/: the isolated Credential Execution Serviceskills/: bundled and example skillsclients/macos/: the macOS desktop appSee Architecture for how the pieces fit together.
The fastest way to get a working assistant on your Mac is through the desktop app installer, which provisions the local runtime, gateway, and credential service for you. From there you can swap in your own builds.
~/.vellum/.vellum-assistant alongside it. Use the repo's top-level setup scripts to install dependencies and link your local build into the running installation.vellum ps: you should see the assistant, gateway, and credential-executor processes running.For the full development loop, including parallel agents and the review pipeline, see Development Workflow.
Three options, in order of how much ceremony they require.
The vellum CLI is the highest-level interface. It reads your local credentials and routes commands to the running daemon.
# send a message and stream the response
vellum message "summarize today's calendar"
# tail the live event stream
vellum events
# inspect process state
vellum psUseful subcommands include login, setup, hatch, message, events, logs, ps, terminal, and retire. Run vellum --help to see the full list.
The runtime exposes a versioned REST API at /v1. On a local install the daemon listens on a loopback port; the CLI handles auth for you, but you can also call the API directly with a JWT bearer token.
# list conversations
curl -H "Authorization: Bearer $VELLUM_JWT" \
http://127.0.0.1:7821/v1/conversations
# post a message into a conversation
curl -X POST \
-H "Authorization: Bearer $VELLUM_JWT" \
-H "Content-Type: application/json" \
-d '{"text": "hello"}' \
http://127.0.0.1:7821/v1/messagesAuth is JWT-only: every request needs an Authorization: Bearer header carrying a token signed by the gateway. See Security & Permissions for the full auth model.
Long-lived clients subscribe to a server-sent events stream to receive streaming model output, tool calls, approval prompts, and channel events as they happen.
curl -N \
-H "Authorization: Bearer $VELLUM_JWT" \
http://127.0.0.1:7821/v1/eventsSee API & Communication for the full event-type catalog, connection management, and a JavaScript reference client.