Impreza Host
Tutorials/The impreza CLI & devkit
๐Ÿ› ๏ธ Tutorial 4

The impreza CLI & devkit

One static Go binary that packages your project and ships it to your VPS. No runtime, no dependencies โ€” download it, impreza login, and deploy from any directory with a Dockerfile. This is the terminal-and-scripts path; AI tools should use MCP instead.

Install #

Single binary for Mac (amd64/arm64), Linux (amd64/arm64), Windows (amd64). Grab it from the devkit releases, put it on your PATH, and you are set.

# macOS / Linux example
curl -fsSL -o impreza https://github.com/imprezahost/impreza-devkit/releases/latest/download/impreza_$(uname -s)_$(uname -m)
chmod +x impreza && sudo mv impreza /usr/local/bin/
impreza --version

Log in (one-time) #

The CLI authenticates with the same API key + secret as everything else. It verifies against /v1/account and stores the credentials locally:

impreza login          # prompts for API key + secret
Need a key? Portal โ†’ Impreza API โ†’ Generate New Key. Whitelist your machine's IP, or pick tofu / keyonly to skip that step. Full walk-through in Tutorial 1 โ†’ API key.

Deploy your project #

From any directory with a Dockerfile, one command packages the directory, uploads it, and asks the agent to build + run it:

cd ~/my-app
impreza deploy --agent agt_xxxxxxxxxxxx --follow
# โ†’ Packaging โ†’ Uploading โ†’ Deploying โ†’ โœ“ Deployed at https://my-app-3f7c9a.imprezaapps.com

Re-ship under the same name (uninstall old + create new):

impreza deploy --agent agt_xxxxxxxxxxxx --name my-app --follow --force
Lean build context. Uploads cap at 100 MB. The CLI already excludes .git, node_modules, __pycache__ and friends; add a .dockerignore for anything else heavy.

Browse + manage #

impreza platform servers list
impreza platform apps list
impreza platform deployments list
impreza platform deployments show dpl_xxxxxxxxxxxx
impreza platform deployments logs dpl_xxxxxxxxxxxx

# Install a catalog app from the terminal
impreza platform deploy vaultwarden --agent agt_... --domain vault.example.com

Multiple accounts? Named contexts #

Keep separate credentials side by side and switch between them:

impreza context create work --key imp_... --secret ...
impreza context use work

The SDKs (devkit) #

The same repo ships the official Go SDK โ€” the one the CLI, the agent and the MCP server are built on. Use it to script custom (non-AI) integrations:

import sdkclient "github.com/imprezahost/impreza-devkit/sdk-go/client"

c, _ := sdkclient.New(sdkclient.Context{ Key: "imp_...", Secret: "..." })
servers, _ := c.PlatformListServers(context.Background())
for _, s := range servers.Servers {
    fmt.Println(s.AgentID, s.Hostname, s.Status)
}

A Python SDK with the same surface lives at pypi.org/project/impreza-sdk.

Where to go next #