CodeZaiku

io.github.WyrdsekaiPublished by GitHub account Wyrdsekaiv0.3.19Updated Nov 6, 2026

A coding and development harness on local models or hosted APIs, for code, review, research and ops.

Overview

AI-generated overview

CodeZaiku is a local coding and ops harness that lets an assistant edit code, review diffs, research the web, and diagnose or repair stacks using your own…

What you can do
  • Run a coding loop on a project: read the codebase, edit files, run the toolchain and verify with the project's own tests, blocking until done.
  • Review a project or git diff read-only, returning structured findings by severity with file and line.
  • Diagnose and repair a stack or host: sense health, localize root cause, apply a bounded fix with rollback, or investigate read-only.
  • Sweep a whole machine for unhealthy compose stacks, failed systemd units and host pressure, and run a security posture review.
  • Research questions on the web with cited sources, and recall earlier findings from the research memory pool.
  • Record and show per-project conventions, and poll async jobs submitted with…
When to use it
Worth adding when you want an assistant to work on real codebases and Linux hosts while the model runs on your own hardware or a hosted OpenAI-compatible API. It suits bug fixes, feature work, diff review, incident diagnosis and cited web research, not frontier-model-grade refactoring.
Requirements
Runs as a local process via npx from the npm package, and installs the CodeZaiku release if needed. Needs an OpenAI-compatible model server, set through the CODEZAIKU_DRIVE environment variable or the config file in the user's home directory; no model weights are bundled. Linux is the supported platform, with macOS, WSL2 and Docker variants; a JDK 21+ is needed unless a build carrying its own runtime is used. Optional search backends need their own keys.
Before you install
The fix, explore_and_fix and code tools can change files and live systems; defaults are conservative (propose, blast radius 1, rollback, harm check) but the authority ladder can be raised to guarded or unattended, and watch-machine defaults to acting. Security findings are report-only. Container logs are treated as attacker-writable input. Optional hosted search backends are paid per query or page and need keys such as CODEZAIKU_BRAVE_KEY or CODEZAIKU_SERPER_KEY. The README notes it is not…

Installation

In SourceWeft

  1. Open CodeZaiku in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Image]

CodeZaiku

A coding and development harness that runs on local models or hosted APIs. It is an AI coding agent for your terminal, like Claude Code or aider, that works with a small model on Ollama, llama.cpp, LM Studio or any OpenAI-compatible server. It also reviews git diffs, repairs a broken docker compose stack with rollback when you allow it, reports security problems in a server's Docker containers, researches questions with cited sources, and runs as an MCP server, an ACP agent or a command that prints JSON for other agents.

Most agents like this assume a frontier model behind someone else's API. CodeZaiku is built the other way round — a 9B on hardware you own — and the harness does the work that makes that viable: deterministic evidence instead of model guesses, a guard stack around anything that acts, and verification with rollback on every change.

It runs against any OpenAI-compatible server and ships no weights. The reference tier is a 9B.

→ ARCHITECTURE.md — how it works → LIMITATIONS.md — the measured numbers


Quick start

You need an OpenAI-compatible model server, and a JDK 21+ unless you take a build that carries its own Java runtime (from 0.3.2, one per platform; the installer picks one when Java is missing). CodeZaiku ships no weights.

Linux is the supported platform. macOS runs the coding and research surfaces (and can operate remote Linux hosts over ssh); Windows works under WSL2. There is a container image. See PLATFORMS.md.

Three ways to use it

At a terminal, for yourself — carry on below; the commands are in What you can do with it.

Underneath another agent or orchestrator — CodeZaiku is a backend as well as a tool. It speaks a CLI-subprocess contract (codezaiku run), ACP (codezaiku acp) and MCP (codezaiku mcp). The contract, the result shape and the failure modes are in DEPLOYING_AS_A_BACKEND.md; start there rather than here.

Underneath Wyrdsekai — CodeZaiku is released under the Wyrdsekai umbrella and is one of the coding backends Wyrdsekai can summon: you ask the companion for something, it hands the work to CodeZaiku. WITH_WYRDSEKAI.md is the short version of the page above — just the wiring, and the two things that trip people up. Nothing here depends on it; CodeZaiku runs standalone.

Installing

pathneedsgood for
one-line install — curl … | sh, or irm … | iex on Windowsa JDK 21+, or nothing: without one it takes the build with its own runtimethe recommended path. Verifies the download against the release checksums
release tarball — unpack and run; nothing to builda JDK 21+doing it by hand, or air-gapped
Docker — packaging/docker/Dockerfiledocker onlytrying it with nothing on the host
.deb — from the release, or packaging/deb/build-deb.sha JRE, pulled automatically by aptDebian/Ubuntu, no build
from source — scripts/install.sha JDK 21+ and network for the builddevelopment

There is one binary artifact and it is platform-independent. CodeZaiku is JVM bytecode with no native parts, so the same tarball installs on Linux, macOS and Windows — there is no .pkg or .msi to look for, and none is needed.

Linux is the reference platform. macOS and native Windows are measured too, and the installer is verified on all three from a clean unpack. On Windows, install from Git Bash — the harness shells out through bash, and Git for Windows supplies it. See PLATFORMS.md for per-platform steps and for what does and does not work on each.

Linux and macOS:

bash
curl -fsSL https://codezaiku.org/install | sh

Windows, from PowerShell (you also want Git for Windows — the harness shells out through its bash):

powershell
irm https://codezaiku.org/install.ps1 | iex

Only the script comes from codezaiku.org; the artifact and the checksums both come from the same GitHub release. What that URL serves is scripts/install-remote.sh (and scripts/install.ps1) from this repository, verbatim — read them here first if you would rather, and diff them against what the site serves. Both installers fetch the release tarball and verify it against the release's own SHA256SUMS before installing anything — a mismatch refuses rather than proceeds. Only the script comes from the URL above; the artifact and the checksums both come from the same GitHub release, so the script cannot hand you a payload those checksums do not match. Piping a script into a shell is worth being wary of in general: fetch it, read it, then run it if you would rather.

They install to ~/.local (or %LOCALAPPDATA%\Programs on Windows). CODEZAIKU_PREFIX puts it somewhere else, CODEZAIKU_VERSION pins a release.

No JRE on the machine yet? On Debian or Ubuntu, take the .deb from the latest release instead — it declares a JRE dependency, so apt installs one for you:

bash
sudo apt install ./codezaiku_0.1.1_all.deb

The one-liners deliberately do not install a JRE themselves: a script piped into a shell should not be reaching for sudo. They check for one; when it is missing they install the build for the platform that carries its own runtime (codezaiku-<version>-<platform>.tar.gz, from 0.3.2; CODEZAIKU_RUNTIME=1 asks for it outright), and codezaiku update keeps such an install on its own kind.

To upgrade, run codezaiku update now, or the same install command again. update now takes the latest release, checks it against the release's SHA256SUMS and swaps it in; the next start runs it. When ResearchZosho is installed, it then asks ResearchZosho's own updater to do the same, and says what came of each. Each program's own updater replaces its files, so two programs updating at once never collide: the second finds the first at work and leaves it alone. On Windows, CodeZaiku cannot replace its own files while it runs, so there you run the install command again. The installers resolve the latest release each time and replace the old install rather than writing over it, so nothing stale is left behind. Your config and data in ~/.codezaiku are untouched. The .deb upgrades in place with sudo apt install ./codezaiku_<new>_all.deb and keeps /var/lib/codezaiku; if you enabled codezaiku.service, the upgrade does not restart it, it tells you to when it suits you.

Other ways: tarball by hand, .deb, from source
bash
tar xzf codezaiku-0.1.1.tar.gz          # unpacks a ready-to-run ./codezaiku./codezaiku/bin/codezaiku --version     # works immediatelysudo mv codezaiku /opt/codezaikusudo ln -s /opt/codezaiku/bin/codezaiku /usr/local/bin/codezaiku

On Debian or Ubuntu, sudo apt install ./codezaiku_0.1.1_all.deb — it installs to /opt/codezaiku, links /usr/bin/codezaiku, and lets apt pull a JRE. The systemd unit it ships is disabled; nothing starts on its own.

From source, if you want to build it yourself or work on it:

bash
git clone https://github.com/Wyrdsekai/codezaiku.git && cd codezaiku
# 1. install — builds and puts `codezaiku` on your PATH (~/.local by default;#    --system for /usr/local, --prefix DIR for anywhere else)scripts/install.sh
# 2. point it at your model server (install.sh already wrote a starter config)codezaiku setup               # the first ten minutes: the model (found, served on demand, or a hosted key), web search, your editor's agent over MCP, the library if wantedcodezaiku model serve install # this machine's memory, on demand: the measured model, llama.cpp behind a proxy that starts it when asked and stops it after 20 idle minutes (on Linux llama.cpp's container for the GPU it finds: NVIDIA, AMD or Intel; Metal on macOS, Vulkan on Windows)codezaiku model detect        # finds Ollama / llama.cpp / LM Studio / vLLM if runningcodezaiku model use http://localhost:8200codezaiku model add deepseek openrouter deepseek/deepseek-v4.1-flash --prices 0.032/0.144/0.002   # a hosted model under a name,codezaiku model key openrouter --file ~/openrouter-key.txt                                        # its key kept for its host,                              # chosen per job: codezaiku code . "…" --model deepseek; `codezaiku spend` says what the jobs cost
# 3. check the environment — names exactly what is missing and how to fix itcodezaiku doctor
# 4. confirm the model answers and can call a toolcodezaiku smoke

The install carries its own launcher, jars and knowledge library, and downloads nothing at runtime. It does not bundle a JVM — install.sh checks for a JDK 21+ and stops if it does not find one. No model weights are bundled either. scripts/install.sh --uninstall removes the program and keeps ~/.codezaiku — your config, learned cards, research findings and audit trail. --purge removes those too, after listing what will be lost and asking you to confirm.

To work in the repo without installing, bin/codezaiku runs from the checkout.

If you have no server yet:

bash
docker run -d --name codezaiku-drive -p 8200:8200 \  -v /path/to/models:/models ghcr.io/ggml-org/llama.cpp:server-cuda \  -m /models/<your-model>.gguf --port 8200 --host 0.0.0.0 --jinja --ctx-size 32768

To use the models in your own AWS account (Amazon Bedrock) with your own AWS sign-in, see BEDROCK.md.

--jinja is required — without it the model returns tool calls as prose and nothing works. See MODELS.md for what the harness needs from a model, what we measured on, and why codezaiku smoke is the check that matters.

Debian / Ubuntu

bash
sudo apt install ./codezaiku_0.1.1_all.deb     # build it: packaging/deb/build-deb.sh

Installs to /opt/codezaiku with /usr/bin/codezaiku. A systemd unit is included but not enabled — CodeZaiku can modify live systems, so starting it is a deliberate act.

Verifying what you downloaded

Every release asset ships with SHA256SUMS and a Sigstore bundle (<asset>.sigstore.json):

bash
sha256sum -c SHA256SUMS --ignore-missinggh attestation verify codezaiku-0.1.1.tar.gz --repo Wyrdsekai/codezaiku \  --predicate-type https://codezaiku.org/attestation/release/v1

gh attestation needs GitHub CLI 2.49 or newer. An older gh reports unknown command with no hint why — check with gh --version before concluding the signature is bad.

The signature says the release workflow, running at that tag, blessed those exact bytes. It is an authenticity statement, not build provenance — the artifacts are built and validated on real hardware rather than in CI, because an artifact nobody ran is not one worth shipping. Release assets are immutable; a fix ships as a new version, never as a re-upload.


What you can do with it

bash
codezaiku help                                  # all commands, grouped by intent

Talk to it

bash
codezaiku chat ~/myproject

A coding assistant you talk to in your terminal — the same kind of tool as Claude Code, Codex CLI or aider, except the model behind it is yours to choose: one running on your own hardware, or a hosted API. You type what you want — "why does the login test fail?", "add a retry to the uploader", "find out how other projects handle this" — and it reads your code, makes changes, runs commands, or searches the web, then reports back. You steer it turn by turn.

By default it asks before changing or running anything, and shows you the exact change first. You answer once, or "always" for that command. /undo reverses what it did, step by step. Conversations are saved and can be resumed later, and /remember keeps a fact available in every future conversation in that project. /switch <project> moves the chat to another project in the same terminal and tells it where you were. /help inside the chat lists everything else — background tasks, delegating work to a second agent, switching models, cost tracking.

codezaiku v1 ~/myproject serves the same assistant as an OpenAI-compatible API (/v1/chat/completions), so a chat UI like Open WebUI can be the front end. Over that wire it can only read, never change anything — an API cannot ask you for permission, so it is not given anything that would need it.

codezaiku web is the chat in the browser, for several projects under one server: open http://127.0.0.1:7072/, pick a project or add one by its folder, and talk. It is the same chat as the terminal's, so it asks before it writes or runs anything, and you answer with buttons on the page. Each project keeps its own conversation. Moving to another project is a click, and "switch" also carries where you were, so the next thing you say there starts from it. It listens on this machine only unless you say --host 0.0.0.0, which opens it to your network; it then prints a token and the addresses to type, and the browser asks for the token once. On this machine it carries out a form only from its own page and answers only to 127.0.0.1 or localhost, so another web page you have open cannot work it. From the menu's People page you can name others: a viewer sees every page and every chat as it runs and can type nothing, an owner can do all you can. Each signs in with a name and a password.

Research a question

bash
codezaiku research "your question" broadcodezaiku research "your question" fan

It searches the web, reads pages, and writes an answer that cites its sources. broad is one researcher working alone. fan splits the question into parts, researches them in parallel, has a critic check whether the coverage is actually sufficient, and then writes the combined answer — slower, and much better on questions with many parts.

Search works out of the box, and works better with a backend you configure. Without one, web_search falls back to Wikipedia plus the scholarly literature (Crossref and OpenAlex): reference pages and papers by DOI, not the whole web. Every research run also has scholar_search, the literature by DOI, whatever the backend. For the whole web, two options, the first recommended:

bash
codezaiku config set CODEZAIKU_BRAVE_KEY <key>        # recommended: Brave Search APIcodezaiku config set CODEZAIKU_SERPER_KEY <key>       # Google's own results, paid per search (serper.dev); or CODEZAIKU_SERPAPI_KEYcodezaiku config set CODEZAIKU_FIRECRAWL_KEY <key>    # pages a plain fetch cannot read, through Firecrawl's browser, paid per pagecodezaiku config set CODEZAIKU_SEARXNG http://host:8888   # or: your own SearXNG instance

The Brave Search API has a free tier (2,000 queries/month) and gives markedly better results — a search tool is only as good as what it searches. SearXNG is fully self-hosted and needs no account, but it aggregates public engines that rate-limit under sustained use. With both configured, Brave is used first and SearXNG is the fallback. Setting either one is also what enables web search inside chat.

What a research run finds is kept. The research memory in ~/.codezaiku/research holds each finding with its source, and the next run on a related question starts from it instead of from zero. That is the built-in tier: it works with nothing else installed.

For real research, the kind that takes hours and comes back with a report you can check, there is ResearchZosho, a separate program from the same family. codezaiku install researchzosho fetches it, verifies it and runs its setup. From then on the chat's /research files runs with it, /librarian asks what it holds, and what it holds is pushed into every turn. The questions in the research memory are handed to it as open questions. codezaiku doctor and the chat say when a newer ResearchZosho is released; codezaiku update now has ResearchZosho's own updater install it, and the library and settings stay.

Work on a codebase

bash
codezaiku code ~/myproject "add pagination to the /items endpoint"codezaiku decompose ~/myproject "add an admin dashboard with login and audit view"codezaiku review ~/myproject HEAD~3             # read-only review -> findings

code keeps one conversation going until the goal is met. Use it when the model can hold the whole job at once. decompose splits the goal into ordered slices first, then runs the same loop with that plan pinned as a TODO it re-injects every turn — so you have a running program after the first slice, and it grows from there. Use it when the job is big enough that the model would otherwise lose the thread. loop is an older name for code and still works.

Operate a stack — sense, localize the failing service, fix, verify, roll back on failure

bash
codezaiku fix myproject propose                 # diagnose and propose (default, safe)codezaiku fix myproject guarded                 # act, behind the full guard stackcodezaiku watch myproject propose 60            # continuous: fix on degraded, else reportcodezaiku investigate myproject                 # diagnose only — capped at localize, never acts

Scope can be local (myproject), remote (ssh://host/myproject) or a container (docker://name). Everything else — the health endpoint, the verify command — is auto-discovered.

Operate a whole machine — the same operator, with the boundary set to the box instead of one stack

bash
codezaiku triage local                          # enumerate the box, report what is brokencodezaiku triage local "" 20 guarded            # ...and repair the unhealthy compose stackscodezaiku watch-machine local 300               # the same sweep on a loop, as a daemon

triage enumerates everything it can see — compose stacks, failed systemd units, host disk and memory — runs the SRE operator against each unhealthy stack, and surfaces the systemd and host findings for a human. Each stack is still bound by blast-radius and the authority ladder, so widening the boundary does not widen what any single fix may touch.

Note the difference in defaults, because it is the one place where a whole-machine command is less conservative than a per-stack one: triage reports unless you pass guarded or unattended, while watch-machine defaults to guarded — it is a daemon meant to keep a box healthy, so it acts. Pass a ceiling explicitly if you want it to only watch: codezaiku watch-machine local 300 "" propose. Run it under systemd on a real box.

Review security posture — report only, never auto-remediates

bash
codezaiku secure local

Research a question against live sources

bash
codezaiku research "what changed in the Foo API in v3" depth

Drive it from another agent

bash
codezaiku run --text "add pagination" --output-format json   # one task, one JSON resultcodezaiku acp                                   # Agent Client Protocol v1 agent on stdiocodezaiku mcp                                   # MCP server on stdio, all surfaces exposednpx -y @wyrdsekai/codezaiku-mcp                 # the same, from any client that runs npm packages; installs the release if neededcodezaiku serve 7070                            # HTTP: POST /fix, GET /health, GET /audit

Safety

The operator can change your systems, so the defaults are conservative and the guards are not optional.

  • Authority ladder — observe < localize < propose < guarded < unattended. Default propose: it tells you the command, it does not run it. An unproven fix never auto-applies.
  • Blast radius 1 — a fix may touch the service it localized and nothing else.
  • Rollback — snapshot before a destructive change, verify after, restore if verification fails. This has a counterfactual: with it on, a model that corrupted a database config was rolled back and the stack came back green; with it off, the same failure left the service dead.
  • Harm check — a fix that repairs its target but breaks a healthy dependency is a failure.
  • Kill switch — CODEZAIKU_OPS_HALT=on forces observe immediately.
  • Security findings are report-only at every rung. A wrong reliability fix restarts a service; a wrong containment action firewalls your own load balancer.

Untrusted input is treated as untrusted: container logs are attacker-writable, and a measured injection through them steered the operator 40/40 on both model tiers before it was fixed structurally. See ARCHITECTURE.md §6.


What this is not

  • Not a frontier coding agent. SWE-bench Lite ≈1/8 on the 9B; refactoring 0/8. It is not a replacement for tools built on much larger models.
  • Not production-hardened. No long-running soak evidence yet.
  • Not a multi-agent framework. One loop, good tools, hard measurement. An earlier blackboard/agent architecture was designed, partly built, and removed.

The full accounting is in LIMITATIONS.md.


Repository layout

PathWhat
core/the harness — loop, tools, operations, library, MCP server
knowledge-packs/, ops-knowledge/the knowledge library: framework cards and validated fix cards
bench/the measurement rigs — external benchmark adapters and fault-injection harnesses
docs/architecture, limitations, configuration

bench/ is shipped on purpose. The rigs are how every number in LIMITATIONS.md was produced, including the ones that came out badly.


Documentation

Getting in touch. Bugs and feature requests belong in issues, where other people can see them and the answer. For anything else, [email protected]. Vulnerabilities go to [email protected] or a private advisory — see SECURITY.md; conduct concerns to [email protected].

The family

CodeZaiku is part of Wyrdsekai, and its sibling is ResearchZosho, the research library: it keeps what research runs find, checks the claims against their sources, and answers questions from what it holds. codezaiku install researchzosho puts it beside CodeZaiku, and the two share a model server, so one on-demand model on a machine serves both.

License

Apache 2.0 — see LICENSE.

Source: README.md at commit dc1da6a

Tools

11

code

Run CodeZaiku's coding familiar on an existing project: it reads the codebase, edits files, runs the toolchain, and verifies via the project's own tests. Use for bug-fix, add-feature, refactor, test-coverage, incident, and API-migration tasks. Blocks until the loop finishes.

ParametersgoalrequiredmodeasyncdrivemodelprojectrequiredmaxTurns

fix

Run CodeZaiku's autonomous-SRE operator on a stack or host: senses health, localizes the root cause, applies a fix (validated card or read-only-recon-derived), verifies, rolls back on failure, and harm-checks. Bounded by blast-radius and an authority ladder (observe<localize<propose<guarded<unattended). Blocks until it concludes.

Parametersasyncdrivescoperequiredceilingincident

explore_and_fix

Explore an entire machine and fix what's broken — boundary = THAT machine. Enumerates all docker compose stacks, failed systemd units, and host disk/memory pressure; runs the SRE operator on each unhealthy compose stack (blast-radius + authority-ladder bounded); surfaces systemd/host issues for attention. Use to autonomously triage a whole box, not one known stack.

Parametersasyncdrivetargetceiling

review

READ-ONLY code review: navigate a project (or a git diff) and return a structured findings list ([high|med|low] file:line — problem — suggested fix) covering correctness, security, and maintainability. Modifies nothing.

ParametersasyncdrivemodelscopeprojectrequiredmaxTurns

research

Research a question on the WEB (searches, fetches and reads real sources, then synthesizes a cited answer). mode=broad surveys the landscape across many sources; mode=depth reads the best sources thoroughly to answer one narrow question. Read-only.

ParametersmodeasyncdrivemodelmaxTurnsquestionrequired

research_memory

Inspect the RESEARCH MEMORY POOL — findings accumulated from earlier research runs. Omit query for a summary of what has been researched; pass a query to recall relevant prior findings (so you can build on them instead of re-researching).

Parameterslimitquery

investigate

READ-ONLY incident diagnosis / RCA on a stack or host: senses and localizes the root cause but does NOT remediate. The safe 'just tell me what's wrong' entry point.

Parametersasyncdrivetargetrequiredincident

secure

SECURITY review of a machine or stack: static posture (privileged containers, docker.sock mounts, datastores published on 0.0.0.0, weak/default credentials, image CVEs) PLUS runtime intrusion detections from the syscall detector, and for a live detection a read-only investigation proposing ONE surgical containment command. REPORTS ONLY — it never applies a containment action, because a wrong containment is a self-inflicted outage.

Parametersasyncdrivetargetrequiredsubject

record_convention

Record a CONVENTION for a project — a norm the familiar should follow HERE (typically from a bondholder accept/correct on its work). Builds the project's coding DNA, which is loaded into context on future `code` runs for that project.

Parameterskindprojectrequiredconventionrequired

show_conventions

Show a project's accumulated conventions (its coding DNA).

Parametersprojectrequired

job_status

Poll an async tool job submitted with async:true. Returns 'running', or the final result when the job is done/failed.

ParametersjobIdrequired

Version history

11
  1. v0.3.19LatestNov 6, 2026
  2. v0.3.18Oct 31, 2026
  3. v0.3.17Oct 29, 2026
  4. v0.3.15Oct 20, 2026
  5. v0.3.14Oct 19, 2026
  6. v0.3.13Oct 17, 2026
  7. v0.3.12Oct 5, 2026
  8. v0.3.11Sep 29, 2026
  9. v0.3.10Sep 18, 2026
  10. v0.3.9Sep 18, 2026
  11. v0.3.6Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts