dvmctl
Build and deploy Digital Vending Machines: pay-per-use HTTPS services that AI agents can find, pay, and call with no account or API key. Ships the build-dvm agent skill.
Alpha software. This is a pre-1.0 alpha; breaking changes are announced in the release notes.
Install
Node.js 22 or later and npm are required.
Install the CLI:
npm install --global @dvmkit/dvmctl
For agents
Install the complete bundled skill directory so its task modules and payment recipes remain available. For Claude Code:
mkdir -p ~/.claude/skills
cp -R "$(npm root --global)/@dvmkit/dvmctl/skills/build-dvm" ~/.claude/skills/
Codex uses ~/.codex/skills/ and other Agent Skills harnesses use ~/.agents/skills/; agent setup has the full list.
After npm update --global @dvmkit/dvmctl, copy the skill again.
The skill entry routes new builds, testing, deployment, operation, recovery, and retirement to separate files. Read only the procedure for the current task. Exact command and SDK contracts live in the published docs.
First DVM
After copying the skill, ask your agent: “Load build-dvm, create a service in my-dvm, and prove a local job works before deployment.” The new-builder procedure covers handler, environment, and testing decisions.
To scaffold directly, run dvmctl create my-dvm, enter the directory, install its dependencies, then run npm run typecheck, npm test, and dvmctl validate. Start local development with dvmctl dev handler.ts. The generated README explains the environment. Follow the skill's testing procedure to prove a job round-trip, then its deployment procedure when local checks pass.
Reference
Commands return structured output by default. Use --human for terminal output and dvmctl --help for the command list.
To launch unlisted, deploy, then run dvmctl visibility my-dvm --hidden. The DVM may appear in discovery before that command completes; hiding it keeps it callable by URL. Run dvmctl visibility my-dvm --listed to list it again. See the deployment procedure for org scope and permissions.
Builder keys, recovery words, and records live in ~/.dvmkit; set DVMKIT_CONFIG_DIR before creating them to select another directory. This is separate from DVMCTL_CONFIG_DIR, which moves authentication state in ~/.dvmctl; caller wallet state uses DVM_CONFIG_DIR (default ~/.dvm).
Payment setup, secrets, content holds, financial export, and retirement are covered by the skill's task procedures and the dvmctl reference.
The CLI pins @dvmkit/sdk in package.json, and new scaffolds inherit that exact version. dvmctl dev and dvmctl serve use the CLI's pinned SDK, print its version, and warn when the project's installed SDK differs. The local /_dev test page also shows the serving SDK version.
Security
Report vulnerabilities privately; see SECURITY.md.
Contributing
Issues and discussions are welcome; pull requests are closed automatically. See CONTRIBUTING.md.
Support
For help, see SUPPORT.md.
Trademarks
See TRADEMARKS.md for name and logo usage.