Skip to content
Imagedatamitsu

YOUR TOOLCHAIN DESERVES A HOME

Stop setting up the same tools in every repository.

Define them once. Inherit them everywhere.

Linters, formatters, git hooks, your own scripts and the runtimes they need — in one datamitsu.config.js you carry from project to project.

datamitsu — the meditating bee
First, install the core binary
brew install datamitsu/tap/datamitsu

One Go binary. No Node.js required. Your repository supplies the config. Install guide ↗

Then, inside a configured repositorydatamitsu initConfigure your repository ↗

SOUND FAMILIAR?

The same setup, again,
in every new repository.

By the next project, a plugin has changed, the old config is stale, and you are piecing it all together again. The only complete picture is in the head of whoever set it up.

datamitsu.config.js

README.md: “first, install these fourteen things…”; Makefile: lint: / fmt: / check:; .github/workflows/ci.yml: setup-go · setup-uv · caches; .pre-commit-config.yaml: hook versions, again; .tool-versions: one runtime pin per language; pyproject.toml: linter versions mixed into dependencies; scripts/setup.sh: brew install ×14 converge into datamitsu.config.js.

A real configuration. Every tool pinned to a version, verified by hash before it runs. Hover one. Follow a runtime.

Any stack. One binary.

  • Native binary75 apps

    • ruff
    • golangci-lint
    • shfmt
  • Node.js20 apps

    • eslint
    • oxlint
    • prettier
  • Python11 apps

    • yamllint
    • mypy
    • semgrep
  • JVM3 apps

    • ktfmt
    • ktlint
    • openapi-generator
  • Go1 app

    • govulncheck
  • Shell1 app

    A Go binary. No Node.js on the machine. Runtimes are pinned per tool and never touch the system ones.

    Your own scripts ship the same way — packed into the config, delivered with their runtime, run like any other tool.

    The binary is the machinery. The config is your decisions.

    Define once.Inherit shared defaults. Keep project-specific changes in a local layer.

    Upgrade on your terms.Pin versions that agree with each other. Each repository adopts an update when you change its pin.

    One evening of tuning. Every repository benefits.Get a linter right once. Every repository that inherits the config gets it right too.

    SEE IT AT WORK

    Three runs.
    One configuration.

    Recorded in a repository that inherits a datamitsu config: the first run that installs everything, the same command again, and a narrowed run that says what it will not do.

    WHERE THINGS STAND

    Alpha. The config API is not stable yet.

    One optional reference wrapper. You can write your own config.

    Not a task runner or a runtime manager for application code.