Maned

Installing Maned

Maned ships as prebuilt binaries for macOS and Linux. There is nothing to compile and no runtime to install first.

Quick install#

curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh

That downloads the right build for your machine, verifies its SHA-256 against the release manifest, and installs the commands below. It never uses sudo and never edits your shell configuration.

Then check it worked:

maned-run --version
maned-run 0.4.2
build: b6c94fa (aarch64-apple-darwin)

If the command is not found, see PATH below.

With Homebrew#

On macOS or Linuxbrew:

brew install fabianodicheti/maned/maned

Upgrading later:

brew update && brew upgrade maned

What gets installed#

CommandWhat it does
maned-runrun a .mnd program, locally or on remote workers
maned-serveserve one .mnd script as an HTTP API
maned-lintstatic checks, with diagnostics an editor can parse
bark-vmthe hosted Bark worker, so host = "local" runs with no second machine
maned-bark-herethe same binary as a foreground worker console

By default they go to /usr/local/bin if you can write there, and ~/.local/bin otherwise.

Each release also publishes bark-usb.img, the bootable image that turns a real x86-64 machine into a dedicated worker. It is not installed by this installer — Set up a Bark machine covers downloading, verifying and writing it to a USB stick.

Installer options#

# install a specific release instead of the latest
curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh -s -- --version 0.4.2

# install somewhere else
curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh -s -- --prefix ~/tools

# show what would happen, change nothing
curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh -s -- --dry-run

# remove it again
curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh -s -- --uninstall

If you would rather read the script before running it — which is a reasonable thing to want:

curl -fsSL https://fabianodicheti.github.io/maned/install.sh -o install.sh
less install.sh
sh install.sh

Installing by hand#

Download a tarball from the releases page, then:

tar -xzf maned-0.4.2-<target>.tar.gz
cd maned-0.4.2-<target>
sudo cp bin/* /usr/local/bin/                      # everyone
mkdir -p ~/.local/bin && cp bin/* ~/.local/bin/    # just you

<target> is one of universal-apple-darwin, x86_64-unknown-linux-gnu, or aarch64-unknown-linux-gnu.

To verify the download yourself, get SHA256SUMS from the same release and:

sha256sum -c SHA256SUMS --ignore-missing     # Linux
shasum -a 256 -c SHA256SUMS --ignore-missing # macOS

Your first program#

cat > hello.mnd <<'EOF'
mnd::quantmax=1000;
mnd::quantmin=-1000;
mnd::quantres=0;

in::a = 2;
in::b = 3;
in::c = 4;

calc::lambda_flow arithmetic(a, b, c) {
    a b add c mul sum_then_scale =   # (2 + 3) * 4 = 20
    b c mul a add scale_then_sum =   # 2 + (3 * 4) = 14
} return sum_then_scale, scale_then_sum;
EOF

maned-run hello.mnd
flow 'arithmetic' outputs:
sum_then_scale : scalar = 20
scale_then_sum : scalar = 14

Maned is postfix: no operator precedence and no parentheses. Those two lines use the same three values and the same two operators — only the token order differs.

Running a worker on this machine#

The install also carries the hosted Bark worker, so you can try the remote path with no second machine. A flow routed to host = "local" finds it automatically — nothing to start:

device::vm1 { host = "local"; }

calc::lambda_flow mm(a, b) @device(vm1) {
    a b matmul r =
} return r;

To watch the jobs arrive, start the worker console yourself first, in its own terminal:

maned-bark-here

That is the same binary (bark-vm) run as a foreground console: a status faceplate, action keys, and a live log of every job the worker executes. Leave it running and any host = "local" flow connects to it.

Editor support#

A VS Code extension provides syntax highlighting and file icons for .mnd programs and .dqt tensor containers. The installer above already installed it if the code command was on your PATH; nothing more to do.

If it was skipped (no code CLI at install time), either enable the CLI — in VS Code: Command Palette → Shell Command: Install 'code' command in PATH — and re-run the installer, or install the .vsix by hand. These two lines work from any directory (replace the version with the one on the releases page):

curl -fsSLO https://github.com/FabianoDicheti/maned/releases/latest/download/maned-lang-0.4.2.vsix
code --install-extension ./maned-lang-0.4.2.vsix

code --install-extension resolves a relative path against your current directory, not against your downloads folder. If you fetched the .vsix with a browser instead, give it the real path — for example code --install-extension ~/Downloads/maned-lang-0.4.2.vsix — or cd there first. A bare filename that is not in the current directory is what produces no such file or directory. Or skip the command line entirely — in VS Code: Extensions → … menu → Install from VSIX…

Syntax highlighting works immediately. The file icons need one more step, because VS Code file icons come entirely from the active icon theme and an extension cannot add an entry to a theme it does not own.

If you use Material Icon Theme, add to settings.json:

"material-icon-theme.files.associations": { "*.mnd": "haskell", "*.dqt": "settings" }

If you use vscode-icons:

"vsicons.associations.files": [
  { "icon": "haskell", "extensions": ["mnd"], "format": "svg" },
  { "icon": "config",  "extensions": ["dqt"], "format": "svg" }
]

Alternatively, switch to the bundled theme with Preferences: File Icon Theme → Maned Icons: .mnd files get the maned wolf, .dqt files get the colored-gears dqtensor mark. Be aware that it styles only those two, so every other file loses its icon — the associations above are usually the better trade.

Supported platforms#

Requirement
macOS11 Big Sur or newer. One universal binary covers Apple Silicon and Intel.
Linux x86-64glibc 2.35 or newer — Ubuntu 22.04+, Debian 12+, Fedora 36+
Linux ARM64glibc 2.35 or newer

Windows is not supported. Use WSL, where the Linux x86-64 build works unchanged.

Alpine and other musl systems are not supported. The binaries link glibc. The installer detects musl and tells you rather than installing something that cannot run.

Troubleshooting#

The command is not found#

The install directory is not on your PATH. The installer prints the exact line to add; it is usually:

export PATH="$HOME/.local/bin:$PATH"

Add it to ~/.zshrc (macOS default), ~/.bashrc (most Linux), or ~/.config/fish/config.fish, then open a new terminal.

macOS says "Apple could not verify this app"#

This only happens if you downloaded a tarball with a browser. macOS marks browser downloads as quarantined, and these binaries are ad-hoc signed rather than notarized. Clear the flag on the unpacked folder:

xattr -dr com.apple.quarantine .

The curl installer is unaffected — curl does not set the quarantine flag.

"checksum mismatch"#

The download was corrupted or truncated. Run the installer again. If it keeps happening, please open an issue with the expected and actual hashes it printed.

Permission denied writing to /usr/local/bin#

Install into your home directory instead:

curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh -s -- --prefix ~/.local

The installer deliberately never escalates privileges on its own.

Upgrading and removing#

# upgrade: re-run the installer, it replaces what is there
curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh

# remove
curl -fsSL https://fabianodicheti.github.io/maned/install.sh | sh -s -- --uninstall

Uninstall only removes a file that identifies itself as the tool it is named after, so it will not delete something it did not install.

Licence#

Maned is free to use for any purpose, including commercial use in production, at no cost and with no registration.

It is not open source: the source is not published, and the licence does not permit redistributing the binaries or reverse engineering them. The full terms are in LICENSE inside every tarball.

© 2026 Fabiano Dicheti · Found a problem on this page? Open an issue