Docs / Quickstart

Quickstart

Five steps, about five minutes. At the end you change a value in the dashboard and a running process picks it up in about a second, with no redeploy.

0. Install the CLI

sh
curl -fsSL https://dynv.dev/install.sh | sh
dynv --version

Prefer not to pipe a script into a shell? Build it from source (cargo build --release -p dynv from the repo), or copy it into your image from the client stage of deploy/Dockerfile:

Dockerfile
# docker build --target client -t dynv-client -f deploy/Dockerfile .
COPY --from=dynv-client /dynv /usr/local/bin/dynv

1. Sign up

Open app.dynv.dev. Sign-up is open to approved email addresses during early access: enter yours and we send a 6-digit code. Not approved yet? Ask for early access.

  1. Confirm the code.
  2. Save your recovery kit. It is a master token (dynv_mt_…) generated in your browser. We never see it, so we cannot recover it for you. Keep it offline; it is also what you give the CLI later.
  3. Create a passkey. From now on you sign in with it (or with the recovery kit).

Already have an account? Sign in at the same address with your passkey.

2. Create a service

In the dashboard open Processes and choose New process. Name it after the service, for example web. Names use letters, digits, ., _ and -. The name is encrypted in your browser; we only see a random id.

3. Add a variable and a token

Open the service and add a variable:

GREETING=hello

Names are upper-case letters, digits and _, and cannot start with a digit or DYNV_. New variables apply by restart by default; more on that in Concepts.

Then create a token for the service. It is shown once: copy it now. It looks like dynv_pt_… and can read this one service and nothing else.

4. Run it under dynv

Save a tiny app that prints the variable once a second:

app.js
setInterval(() => console.log("GREETING =", process.env.GREETING), 1000);

Give dynv the API address, your service token and the service name, then wrap your normal start command:

sh
export DYNV_URL=https://api.dynv.dev
export DYNV_TOKEN=dynv_pt_...        # the token from step 3
export DYNV_PROCESS=web              # the service name; optional, recommended

dynv run -- node app.js

You should see GREETING = hello repeating. DYNV_PROCESS makes dynv refuse any data that is not for the service you named.

5. Change it live

In the dashboard, edit GREETING to hello again and save. About a second later the output changes. Because the variable applies by restart, dynv stopped your process (SIGTERM, then SIGKILL after 10 s) and started it again with the new environment.

Prefer the terminal? Writing needs your master token (the recovery kit from step 1), and only from one machine:

sh
export DYNV_URL=https://api.dynv.dev
export DYNV_MASTER_TOKEN_FILE=~/recovery-kit.txt   # a file holding dynv_mt_...
dynv admin set web GREETING="hello from the CLI"

Without a restart

Mark a variable hot and dynv does not restart anything; it updates a small local agent instead, and your code reads the new value the next time it asks. That needs the Node / TypeScript SDK:

app.js
import { dynv } from "@dynv/sdk";

setInterval(() => console.log("GREETING =", dynv().get("GREETING")), 1000);
sh
dynv admin mode web hot GREETING

Change GREETING again: same process, new value, no restart.

Where next

  • Concepts: tokens, roles, hot versus restart, and what happens when Dynv is down.
  • CLI reference for every command and flag.
  • MCP to let an AI agent manage variables inside limits you set.