mazu-web
A local browser UI for Mazu -- the core coding-agent CLI stays terminal-first and dependency-light; this is a separate, optional companion for people who'd rather work in a browser tab.
Ships as its own package (mazu-web, console script mazu-web) so Mazu's core install never pulls in a web framework just to run mazu chat in a terminal. Depends on mazu[documents]>=0.24.0; 140+ tests, kept in sync with the core package's own test suite.
What it does
Full parity with the terminal command surface -- every route calls straight into the same mazu package classes (CheckpointManager, MemoryStore, RunStore, the router, run_autonomous, run_explore, run_council, diagnostics) the CLI itself uses. This UI is a different way to reach the same operations, not a second implementation of them.
One known exception as of this writing: the core CLI's newer, experimental mazu memory-belief stats/review commands (observation-only belief-shadow inspection, see the core README) don't have a web equivalent yet -- use the terminal for those specifically until this catches up.
- Chat -- the same turn logic as
mazu chat, streamed over Server-Sent Events instead of printed to a terminal. Also supports attaching an image or a document (.docx/.pdf/.xlsx/.pptx, extracted to plain text), a live per-provider model picker (real API-backed, not a single hardcoded default), and reasoning-effort control for models that support it -- the model and effort controls apply to the session immediately, not just to a brand-new chat, and both warn (rather than silently no-op) when the currently selected model doesn't actually support what's being asked of it. - Run -- one-shot autonomous tasks (
mazu run), streamed. - Explore -- parallel branch comparison (
mazu explore), streamed, with a live multi-model picker and a best-effort test-command suggestion (pytest/npm/go/cargo/maven/gradle markers) pre-filling the optional field instead of leaving it blank. - Council -- ask multiple models independently, one lead synthesizes (
mazu council), streamed. - Checkpoints -- timeline, diff, compare, inspect, prune, branch-from, and one-click rollback.
- Memory -- search, pin/unpin, edit, forget, stats, "why would this retrieve", find/merge duplicates.
- Skills, Runs (+ compare-branches), Router, Usage, Action log, Models, Doctor, Config -- all full read (and write, where the CLI itself allows it).
- Curator -- an opt-in, fully autonomous background process that maintains Mazu's own state (memory, skills, run/checkpoint history, usage, config, council roster, action log) using its own, completely separate API key, matching
mazu curator .... Inert until configured; every mutation is reversible and logged with a rationale. - Init / Setup -- works against a directory that isn't a Mazu project yet; an in-page banner and a Config-tab form do what
mazu init/mazu setupwould from the terminal.
Run and Explore and Council share one server-wide lock: all three wrap print()-only agent functions via sys.stdout redirection, which is process-global, not thread-local -- two concurrent captures would corrupt each other's output. Starting a second one while the first is still running gets a 409, not a silently queued mess.
Install
pip install mazu-web
Depends on the core mazu package (mazu[documents]>=0.24.0, pulled from PyPI automatically) -- note that as of this writing, Mazu 0.24.0 is a GitHub-only release, not yet published to PyPI; install both from source (pip install -e . in each repo) until it is.
Run
cd your-project # doesn't need to be `mazu init`-ed first -- the browser handles that
mazu-web # http://127.0.0.1:8765
mazu-web --host 127.0.0.1 --port 8765 --model deepseek:deepseek-chat --shell-allowlist git,npm,pytest
Binds to 127.0.0.1 only by default -- there is no authentication, so don't pass --host 0.0.0.0 or otherwise expose this beyond your own machine.
Development
Until Mazu 0.24.0 is published to PyPI, install it from source first (from a sibling checkout of the Mazu repo, or straight from GitHub):
pip install -e "../Mazu[documents]" # or: pip install "mazu[documents] @ git+https://github.com/turgutino/Mazu.git"
pip install -e ".[dev]"
pytest
License
MIT, same as the core project.
Metadata
Release files for mazu-web 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mazu_web-0.4.0.tar.gz | 93.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mazu_web-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 168.7 kB
Release files / mazu_web-0.4.0.tar.gz
| Download URL | mazu_web-0.4.0.tar.gz |
|---|---|
| Size | 93.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f8701987faae7ab82eed6cf59887293c535b405908ae1048e7181cb56e698d48
|
|
BLAKE2b-256 checksum How to use checksums |
a346908d6d8a58d80ff5c8bb00229d0a9fc84b2c6bd4fd6d1650248d42faf4e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / mazu_web-0.4.0-py3-none-any.whl
| Download URL | mazu_web-0.4.0-py3-none-any.whl |
|---|---|
| Size | 75.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c75197cdccecc1f25b955ab640f58d88f6c1995af14709a99af1f54fd0801a30
|
|
BLAKE2b-256 checksum How to use checksums |
68db02a030c3d48806952f2e175abfe4b4e2472343d8998a91a949db1bd39479
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|