Getting started
Run VESPR on your own computer. The fastest way needs no keys and no Docker: one script starts a throwaway stack and prints a link.
On this page
- Get the code
- Fastest: the throwaway demo stack
- The full local stack with Docker
- Use a real model (optional)
- Run the tests
- A server for other people
- When something does not work
Get the code
The public repository is Planned. Until it is published you need a copy of the source folder from the team. Every command on this page runs from the top folder of that copy, the one that holds README.md.
Fastest: the throwaway demo stack
scripts/demo-stack.sh starts the realtime server, one agent in demo mode, the app shell, the sample project and made-up test logins. Everything listens on 127.0.0.1 only and lives in one temporary folder that stop deletes, test logins included.
You need
- Node.js 20 or newer.
python3(it serves the app files) andbash,opensslandcurl.ssis used for a port check if you have it.- Linux. The script was written and checked on Linux; macOS and Windows have not been tried.
Steps
-
Install the dependencies of the server and the agent (once).
(cd server && npm ci) && (cd agents && npm ci) -
Start the stack. It prints
seeded 6 filesand then a line that starts withup:.scripts/demo-stack.sh startThe server uses port 9611, the agent's inline suggestions the next port, and the app shell the one after (9613). If a port is busy, pick another start:
VESPR_DEMO_PORT=9700 scripts/demo-stack.sh start. -
Print the link and open it in a browser.
scripts/demo-stack.sh urlThe link carries a throwaway test login after the
#. It only works on this stack and disappears when you stop it. If you started on another port, run theurlcommand with the sameVESPR_DEMO_PORT. -
You are in a workspace called
demoasalex, with one agent,coder. The top bar shows a pill that reads Live (demo), the workspace's name in brackets, once the connection is up (it says Connecting until then). The sample project is a small shopping cart:cart.pyhas a discount bug on purpose,test_cart.pyfinds it, andboom.pyfails on purpose so you can see an error. -
In the chat box, type the first prompt. A Manual-mode agent asks before it runs anything, so an Approve / Deny card appears; approve it and the tests run (and fail).
@coder run python3 -m unittest -qThen ask for the fix and approve again.
@coder fix the discount bug in cart.py and run the tests again -
When you are done, stop it. This kills the three processes and deletes the folder, tokens included.
scripts/demo-stack.sh stop
With no Nebius key the agent answers with scripted replies and edits, and says so in its messages. That is enough to see the approval flow, the live edit view, History and the Run button. For a real model see Use a real model. scripts/demo-stack.sh status tells you which of the three processes are up; their logs are in the stack's folder (server.log, agent.log, web.log under /tmp/vespr-demo-stack-<your user>, or the folder you set with VESPR_DEMO_DIR).
The full local stack with Docker
This runs the realtime server, the agent and two SDE containers (full VS Code with the VESPR extension, one for alice and one for bob) on your computer, so you can open two browser windows and watch two people and an agent in one file. You need Docker with Compose.
cd deploy/local
./make-env.sh
docker compose up -d --build
cat links.txtmake-env.shwrites random logins to.env,tokensandlinks.txt. Git ignores them. Running it again makes new logins.- The first build takes a few minutes.
links.txthas two links (alice on port 3001, bob on port 3002). Open each in its own browser window. Everything is published on127.0.0.1only.- In the first window open the VESPR icon in the left bar and type
@coder run python3 -m unittest -q. Approve the card in either window. Then type@coder fix the discount bug in cart.py and run the tests again. - Press Ctrl+Alt+M, release, then M for the Code Map (Cmd+Alt+M on a Mac).
- Stop it with
docker compose down.
The app's Run button is on in this stack (it is your own computer). See the tour for what it does and why it is off by default on shared servers.
The app shell on the Docker stack
The links in links.txt open the SDE. The app shell is plain static files in app/. Serve that folder with any static server and tell the page where the server is and which login to use:
python3 -m http.server 8000 --bind 127.0.0.1 --directory apphttp://127.0.0.1:8000/prototype.html?live=1&server=ws://127.0.0.1:8241&room=demo&name=alice#token=THE-TOKEN-FOR-ALICEThe token is alice's value in deploy/local/tokens (the part after the colon). It goes after the #, so the static server that serves the page never receives it. Without live=1 the page opens with example data and no connection.
Use a real model (optional)
The agent calls NVIDIA Nemotron models through Nebius Token Factory. You need a Token Factory API key. Treat it like a password: never paste it into chat, an issue or a commit.
- In
deploy/local, create a file namednebius.envthat contains one line:NEBIUS_API_KEY=followed by your key. Git ignores files that end in.env. - Run
./make-env.shagain. It reads that file, and without a key it says the agent will run in scripted demo mode. It also makes new logins, so use the newlinks.txt. - Run
docker compose up -d --build.
The agent asks the account for its model list and picks Nemotron 3 Super for everyday chat, edits and inline suggestions and Nemotron 3 Ultra for plan mode. Vision-language, embedding and safety models are never picked. You can override the choice with the environment variables NEBIUS_MODEL, NEBIUS_PLAN_MODEL and NEBIUS_SUGGEST_MODEL on the agent process.
Run the tests
This runs every test. It needs no keys and no Docker, only Node.js 20 or newer, git and python3, and takes a few minutes.
./scripts/test-all.shA server for other people
deploy/judge/ runs the same stack on one machine behind HTTPS, with caps on memory, processes, CPU and AI tokens per day. deploy/judge/README.md walks through it. It was written for a Nebius AI Cloud VM; any Docker host works. On that deployment the app's Run button is off, because a run executes workspace code next to the agent's secrets (see the FAQ).
When something does not work
port … is in use. Another program holds one of the three ports. Start again with a differentVESPR_DEMO_PORT.already running (stop it first). Runscripts/demo-stack.sh stop, then start again.- The pill says Connecting and stays there. Run
scripts/demo-stack.sh status; if the server is down, readserver.login the stack's folder. - The agent does not answer. It only answers messages that mention it (
@coder). - The agent says it is in demo mode. That is the scripted agent; there is no key. See Use a real model.
- The Run button is greyed out. The operator has switched running from the app off for this workspace. Ask
@coderto run it instead.