Skip to main content

Muni CLI

The command-line interface for Muni. Run scientific tools on managed GPUs, inspect and download job outputs, and build canvases of tables, charts, structures, molecules, and code from a terminal, a script, or an AI agent.

Install

pipx install muni

Or pip install muni into an existing environment. Requires Python 3.11+. muni --version shows what you have; muni update --check compares it with the latest release.

Sign in

muni login            # opens your browser; click Authorize
muni login --device   # no browser: prints a code to enter at app.muni.bio/device
muni whoami

For CI and agents, create a personal access token once and export it instead:

muni token create --name ci --ttl 90d
export MUNI_TOKEN=...   # the token printed above

More in muni help auth: scoped and space-pinned tokens, revocation, more than one account, and a local dev server.

Run a tool

muni tools -q rowan                              # find a tool
muni tool rowan_solubility --inputs              # its parameters
muni run rowan_solubility smiles=CCO --dry-run   # validate and estimate cost; submits nothing
muni run rowan_solubility smiles=CCO --follow    # submit and stream status until done

Parameters are KEY=VALUE pairs parsed as JSON when possible (temperatures='[298.15, 310]'); @file reads a value from a file and --params-file params.json loads them all. muni run ipsae --batch jobs.jsonl submits one job per line.

Read results

muni job list --tool rowan_solubility -n 5
muni job status JOB_ID
muni wait JOB_ID                           # block until the job finishes
muni job summary JOB_ID                    # columns, row count, file count
muni job query JOB_ID --columns rank,sequence --limit 10
muni job files JOB_ID
muni job download JOB_ID results/summary.csv --output summary.csv
muni job download-all JOB_ID --glob "*.pdb" --output-dir ./structures/

More in muni help jobs.

Work on a canvas

A space holds pages, and a page holds nodes: tables, charts, structures, compounds, text, images, PDFs, JSON, code, tool jobs, and pipelines.

muni space list
muni page create "Results" --space SPACE_ID --json
muni run rowan_solubility smiles=CCO --page PAGE_ID --follow   # a job node plus result nodes
muni job materialize JOB_ID --page PAGE_ID                      # put an earlier job's results on a page
muni node create table "Screen" --file ./results.csv --page PAGE_ID
muni node list --page PAGE_ID
muni node type NODE_ID                     # its kind and the commands for it
muni node table query NODE_ID "select * from rows limit 5"

muni run without --page or --space runs detached: results stay in job storage until you materialize them. More in muni help targeting and muni help nodes.

Guides

The CLI ships its own documentation. muni help lists the topics:

Topic Covers
muni help agents the contract for scripts and AI agents: output, exit codes, IDs, spending
muni help auth browser, device, and token sign-in; accounts; --local
muni help targeting spaces, pages, the directory binding, where results land
muni help jobs tools, parameters, costs, waiting, outputs
muni help nodes creating, editing, running, and connecting canvas nodes
muni help pipelines authoring, releasing, and running pipelines
muni help campaigns lab campaigns with Adaptyv
muni help autopipe reading AutoPipe runs and results
muni help dispatch asking a lab about a service before you order
muni help cro a lab's agent: tokens, its overview, page draft and logo, buyers' questions, payouts
muni help exit-codes exit codes and error codes
muni help environment environment variables
muni help reference every command and flag (--json for a machine-readable tree)

muni COMMAND --help explains any single command.

For AI agents

Every command accepts --json and returns {"schema": 1, "data": ...} or an error object with a stable code, and exit codes are documented. Point your agent at:

muni help agents

Python SDK

The package also installs a Python client:

from muni import MuniClient

client = MuniClient()
job = client.jobs.submit("rowan_solubility", {"smiles": "CCO"})
result = client.jobs.wait(job.job_id, timeout=600)

See docs/sdk.md for the client, its namespaces, and errors.

Contributing

See AGENTS.md for the repository layout, conventions, tests, and releases, and CHANGELOG.md for what changed.

License

MIT

Metadata

Release files for muni 0.2.29

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muni 0.2.29
File Size Uploaded Provenance
muni-0.2.29.tar.gz 599.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for muni 0.2.29
File Interpreter ABI Platform
muni-0.2.29-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / muni-0.2.29.tar.gz

Download URL muni-0.2.29.tar.gz
Size 599.4 kB
Tags Source
SHA-256 checksum
How to use checksums
baa2207ac5f8154a5a7577c1a079027491ee5876d0449297a4bff72b5aba0c0b
BLAKE2b-256 checksum
How to use checksums
1364033b61760548a432ab6204576e747b9ea408621b965da204da99392f0098
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / muni-0.2.29-py3-none-any.whl

Download URL muni-0.2.29-py3-none-any.whl
Size 464.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8038aaf3730916e061eec7e03915824a151b44fbddc57e060d1a99a73b632b7c
BLAKE2b-256 checksum
How to use checksums
c2a64e135d655c86679474e070b8cd58b2a11bc42d952b2b74c59217c8b70244
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for muni 0.2.29

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for muni-0.2.29.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.2.29 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page