devtools is a CLI for managing your project's development environment and tasks. Store environment variables and secrets, pass them to commands, and manage development servers, ports, and local URLs. Track tasks and progress so you can pick up where you left off in another session or with a coding agent.
Install the latest stable release. No Go installation required when using the install scripts.
irm https://jinyongp.dev/devtools/install.ps1 | iexOpen a new terminal, then run devtools version. The installer selects x64 or
ARM64 for your PC and adds devtools to your user PATH. No administrator access needed.
Run the same install command again to update an existing installation.
Supports Windows 11 25H2/26H2; see the Windows guide for details.
With Homebrew:
brew install jinyongp/tap/devtoolsHomebrew also installs dvt as a symlink to devtools and completion files for
bash, zsh, and fish. See the completion guide for shell setup.
Or with curl:
curl -fsSL https://jinyongp.dev/devtools/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
devtools versionFor the curl install, add the export line to your shell configuration
(such as ~/.zshrc) to keep it in new terminals. Inside WSL, use this Linux install.
The shorter command dvt is also available unless another program already owns
that name. See installation and updates for install locations,
completion for shell setup, and the WSL guide
for using Windows and WSL together. Their data, servers, and CAs stay separate.
Run this in a new project directory. myapp names the profile that stores your
values. Choose an unused profile name for this example: an existing name shares
its stored values. These first commands work on macOS, Linux, WSL, and Windows.
devtools init --profile myapp
devtools var set LOG_LEVEL --value info
devtools env create local
devtools var set LOG_LEVEL --env local --value debug
devtools var get LOG_LEVEL --env localThe final JSON response contains data.value: "debug", confirming the local
override. To pass that value to a child command, choose the example for your shell.
In a POSIX shell on macOS, Linux, or WSL:
devtools run --env local -- sh -c 'echo "$LOG_LEVEL"'In PowerShell or cmd on Windows:
devtools run --env local -- cmd.exe /d /c set LOG_LEVELThese print debug and LOG_LEVEL=debug, respectively. In your project, put
an installed project tool's command after --, such as pnpm dev or go run ..
Devtools data commands return JSON; child output is not wrapped in JSON.
On builds with output protection, non-TTY stdout and
stderr mask delivered secrets by default. TTY output uses the configured policy.
Commit the generated devtools.toml to Git. Projects and worktrees that use the
same profile share stored values. Builds with vault support protect stored secrets
with local encryption and a reusable OS-protected or passphrase key session;
public variables remain readable. Complete vault setup before storing secrets. See
local secret protection for setup and build availability.
The values guide covers secret registration and saved commands.
Use devtools --help or a command's help, such as devtools task --help, to
explore the CLI. Run devtools command list to see your configured project commands.
To save a command you use often, add it to devtools.toml. For example, in a
project with a docs:dev script:
[commands."dev:docs"]
exec = ["pnpm", "run", "docs:dev"]Put devtools options before the command name. In devtools v0.23.0 and newer,
the -- separator before the saved command's arguments is optional:
devtools run dev:docs --port 3000
devtools run dev:docs -- --port 3000
devtools run --env local dev:docs --port 3000Use devtools run dev:docs --help for the saved command's help, or
devtools run --help for devtools' own help.
Every argument after the name belongs to the saved command, including --env
and --help. On older versions such as v0.22.3, use the explicit -- separator.
See the command execution guide
for the version requirements and both forms.
The documentation index separates user guides, API contracts, developer instructions, and architecture references. Most guides are in Korean; the task and workstream guide is in English.
- Values and configuration: variables, secrets, and commands, local secret protection, output protection, guarded automation and approved local runners, environment diagnostics.
- Servers and URLs: ports, server lifecycle, readiness, local domains, HTTPS, and sharing.
- Work coordination: tasks and workstreams, Dashboard. Run
devtools dashboardand opendata.item.url. The login link is a credential; keep it private. - Data management: profiles and transfer, encrypted backups and recovery, storage cleanup.
- Shells and automation: completion, CLI output contract.
Install the devtools Skill to give your coding agent instructions for setting up projects, managing servers, and recording progress:
npx skills add jinyongp/devtoolsThe installer detects your agents and guides you through the install location.
Add --global to use the Skill across projects. See Agent Skill setup
for configuration and updates.
If you installed with Homebrew, update with Homebrew:
brew upgrade jinyongp/tap/devtoolsIf you used the install script, run devtools update to get the latest stable release:
devtools updateThe update replaces the executable and preserves your profile data and project
configuration. Check the new version with devtools version.
For a build with vault support, follow secret setup and migration
before using existing secrets. Updating the executable alone does not encrypt old data.
If you use a coding agent, update the Skill too. The CLI and Skill are updated separately through their respective installers.
devtools is available under the MIT license. See the development guide to contribute to the project.