This is the CLI for working with Mzizi’s components and doctrine in a project. The
language’s own command-line tool is
mz; see the compiler.Install
@nyuchi/mzizi-cli. It
installs two names for the same program, mzizi and fundi. The latest published version
is 0.6.3, read from npm on 30 September 2026. It needs Node 20 or later.
What changed since 0.6.1:
Commands
Every command works under either name:
fundi add and mzizi add are the same.
mzizi add: the registry installer
api.mzizi.dev and needs no
account and no API key. It does not touch the MCP server.
Rust first. For a Rust project, mzizi add does not copy .rs sources in. It names the
crate that holds the component and prints the cargo add to run, because the crates are on
crates.io (see Mzizi Roots). In a project with only a
Cargo.toml:
crate field of the API’s /v1/rs/{name} response, which
names each component’s own crate: mzizi add mzizi-alert-banner records mzizi-brand, and
mzizi add mzizi-footer records mzizi-shell.
The Roots crate list says what each crate holds, and
mzizi-roots brings the UI crates in one dependency.
For a React project, it writes the .tsx files and lists the npm packages they need, as the
shadcn CLI would.
The target is inferred from the project, and --target rust, --target tsx or
--target astro overrides it. A project with both a Cargo.toml and a package.json is
ambiguous, so mzizi add refuses and asks for --target rather than guess. An Astro project
(even one with React islands) infers astro (from @nyuchi/mzizi-cli 0.7.0): it installs a
component’s pure .astro from api.mzizi.dev/v1/astro/<name>, with every registry file it
imports and any brand asset, into src/components/mzizi/, and refuses by name a component that
has no .astro rather than install its .tsx.
Model access
ANTHROPIC_API_KEY is optional. Like tsc, the CLI is usually run by a coding agent that
already has model access. Without a key, plan prints a deterministic context bundle, the
project snapshot plus the Mzizi skills that match your goal, for that agent to plan from, and
chat points you back at the agent. With a key, plan and chat run Fundi’s own agent loop.
Registry access
plan and chat read the registry through the MCP server, which serves
every tool but the Fundi tools without sign-in. So explore, plan, chat and add need no
account. fundi login exists only for the Fundi tools, which act as a Mzizi console user.
Safety
- Planning is read-only. Writing a file and running a shell command are blocked while planning, and reachable only through an explicit non-dry-run apply.
- Everything is sandboxed to the project root. A path that escapes it is rejected, in planning and in apply.
mzizi adddoes not overwrite by default. A file that already exists is not replaced unless you pass--overwrite.- The CLI never holds a machine credential. It reaches Fundi only through the MCP server, which acts for a signed-in user.
As a library
createFundi() still takes a key.
Two things called fundi
The name appears twice, and they are different things.Fundi, the agent behind the console
The self-healing agent and issue desk, run under Nyuchi and tied into the console. Its
architecture counterpart is the N9 fundi rung of the helix.
It runs as a service, not as something you install.
fundi, the CLI binary
The binary in
@nyuchi/mzizi-cli, described on this page. You install it in your own
project and it helps you set Mzizi up there. It does not run the self-healing loop.