DIN

Docs

Install DIN

The free build is one download: eight programs, the plugin and an installer. No account, no signup and no card. This page covers release 1.0.31.

Which platforms

The one line

curl -fsSL https://dinctrl.com/install | sh

That is steps 1 to 3 below, done for you, and it checks before it runs anything:

1. It refuses anything but Linux x86-64 by name (on a Mac: "DIN for macOS is not available yet"). 2. It reads SHA256SUMS from the download page's own directory. The archive's name, and so the version, comes from that list. 3. With minisign installed, it checks SHA256SUMS.minisig against the key printed below, which is written into the script and never fetched. Without it, it prints "signature not checked: install minisign to check it; the checksum was checked" and goes on. 4. It downloads the archive and stops unless its SHA-256 matches SHA256SUMS. 5. It unpacks the archive into a temporary directory and runs its install.sh, at your terminal, so the agent question below is still asked.

Any mismatch: it deletes the temporary directory, installs nothing, and exits non-zero. It never uses sudo. You can read it first: open dinctrl.com/install in a browser.

Every installer option works from the one line, after sh -s --:

curl -fsSL https://dinctrl.com/install | sh -s -- --agent cursor
curl -fsSL https://dinctrl.com/install | sh -s -- --prefix /opt/din --no-start
curl -fsSL https://dinctrl.com/install | sh -s -- --path

--path is the one-liner's own option: it adds export PATH="<prefix>/bin:$PATH" to your shell's profile (~/.bashrc, ~/.zshrc or ~/.profile). Without it, nothing is edited and the line is printed for you to run.

On Windows (unverified), in PowerShell:

irm https://dinctrl.com/install.ps1 | iex
& ([scriptblock]::Create((irm https://dinctrl.com/install.ps1))) -Agent cursor -Path

-Path adds %USERPROFILE%\din\bin to your user PATH. It checks the zip the same way and runs install.ps1 with the options you gave.

Or do it by hand, reading the archive before you run anything:

1. Download

Everything is on the download page. The release is five files:

din-1.0.31-linux-x86_64.tar.gz     the Linux build
din-1.0.31-windows-x86_64.zip      the Windows build
SHA256SUMS                         the SHA-256 of both archives
SHA256SUMS.minisig                 the minisign signature over SHA256SUMS
minisign.pub                       the public key, also printed below

From a shell:

curl -fsSLO https://dinctrl.com/download/din-1.0.31-linux-x86_64.tar.gz
curl -fsSLO https://dinctrl.com/download/SHA256SUMS
curl -fsSLO https://dinctrl.com/download/SHA256SUMS.minisig

2. Verify the download

Every release is signed with minisign. The public key (key id 36C9AB1B4CC4A458) is printed here, not only shipped beside the download it vouches for:

RWRYpMRMG6vJNhzPUkYbbwTX9ebqgd1rW50Rlkv+/BZ4uAPzfda0KTqK
# install minisign first: apt install minisign / brew install minisign / scoop install minisign
minisign -Vm SHA256SUMS -P RWRYpMRMG6vJNhzPUkYbbwTX9ebqgd1rW50Rlkv+/BZ4uAPzfda0KTqK
#   -> Signature and comment signature verified
sha256sum --ignore-missing -c SHA256SUMS
#   -> din-1.0.31-linux-x86_64.tar.gz: OK

If either check fails, stop: do not run the installer. The installer does not check the signature for you. It checks only that all eight programs are present before it writes anything.

On Windows, verify SHA256SUMS with minisign the same way, then compare the SHA-256 of the zip (for example Get-FileHash -Algorithm SHA256 din-1.0.31-windows-x86_64.zip) with its line in SHA256SUMS.

3. Install on Linux

tar xzf din-1.0.31-linux-x86_64.tar.gz && cd din-1.0.31
sh install.sh
export PATH="$HOME/din/bin:$PATH"
din status

din status is the check that matters. It names every program, says whether the field is up, says whether your token opens it, and tells you what to type next.

Pick your agent

Run at a terminal, the installer asks which agent DIN should capture live: Claude Code, Cursor or OpenCode, one or several. Or say it up front with --agent, once per agent. With no --agent and no terminal (a script, a pipe) it wires Claude Code.

Pick several on the free build and each is still wired and captured, but the field serves one: the newest, with the others set aside and kept in full. The installer says so in one line. din field activate <agent> switches which one is served; a paid plan keeps them all live together.

To change your mind after the install, there is no need to run the installer again:

din agent list                  # which agents are wired, and which one your field serves
din agent add cursor            # wire claude-code, cursor or opencode
din agent remove cursor         # unwire it; its records stay in your field

On the free build, din agent add first says what a second agent does and, at a terminal, asks before it wires anything (--yes to skip the question).

The installer takes these options:

sh install.sh                      install into ~/din and bring it up
sh install.sh --agent cursor       which agent to capture live (repeat for several):
                                   claude-code, cursor, opencode
sh install.sh --prefix /opt/din    somewhere else
sh install.sh --dry-run            print every step, touch nothing
sh install.sh --no-plugin          skip the plugin: no agent is wired
sh install.sh --no-start           lay it down but do not start the field
sh install.sh --port 8093          the field's loopback port
sh install.sh --console-port 8097  the local console's loopback port
sh install.sh --schedule           also schedule the capture sweep (cron)

What the installer does

Nothing in the install needs an API key. din import is the only step that calls a model, and it runs on your own key or your own claude CLI.

Install on Windows (unverified)

Unpack the zip, then from PowerShell in the unpacked folder:

powershell -ExecutionPolicy Bypass -File install.ps1
.\install.ps1 -Prefix C:\din
.\install.ps1 -DryRun
.\install.ps1 -Agent cursor,opencode
.\install.ps1 -NoPlugin
.\install.ps1 -NoStart
.\install.ps1 -Port 8093 -ConsolePort 8097

The default prefix is %USERPROFILE%\din. Windows has no mode bits, so the installer restricts the field token's ACL to your user with icacls, and says so if that fails.

Next