WORKSTATION / TYPESCRIPT CLI

New machine. Same setup.

Declare your workstation in TypeScript. Packages, configuration, services, and tasks—kept in code, instead of a collection of forgotten setup steps.

macOS · Linux · @dovocode/workstation
workstation.config.ts
import { defineConfig, files, task, tools } from "@dovocode/workstation";

export default defineConfig({
  resources: [
    tools.mise({ node: "lts" }),
    files.json("~/.config/editor/settings.json", {
      formatOnSave: true,
      theme: "dark",
    }),
  ],
  tasks: {
    test: task("pnpm", ["test"]),
  },
  aliases: { t: "test" },
});
01 / A SETUP YOU CAN READ

Less remembering. More reproducing.

Start with one file and one machine. Add what you actually need, and keep the decisions visible in your configuration.

Packages, declared.

Manage tools through mise and native package managers on macOS and Linux. Keep package pins alongside your configuration.

Configuration, in one place.

Generate files and shell configuration, manage services, and compose shared, platform, and machine-specific fragments.

Plan before you apply.

Inspect the desired changes, apply reviewed pins, and check for drift. Understand what is owned and what is simply adopted.

Tasks that travel with you.

Define named commands, aliases, working directories, and environment values next to your setup. Run a task without applying resources.

02 / THE EVERYDAY WORKFLOW

Inspect. Review. Then apply.

Plan shows the desired changes. Build reconciles the setup and records ownership. Status checks the result. Keep the source and lock in Git, and retain recovery state on the machine.

Understand locks and recovery
Shell
workstation init
workstation plan
workstation build
workstation status

# Run only a named task
workstation t -- --watch
03 / DOCUMENTATION

From your first file to your everyday setup.

Practical guides and small examples, with links to the full CLI and TypeScript reference.

Complete Workstation reference