WAKILI

Documentation

For the current build. If something here disagrees with the app, trust the app and tell us.

What Wakili is

Wakili is an offline litigation toolkit for human-rights defenders. It runs entirely on your own computer: it reads your files, helps you draft, and keeps your deadlines without a network connection. Everything is stored in an encrypted vault (Argon2id + XChaCha20-Poly1305). There is no account and nothing is uploaded.

It comes as one product with several faces over the same core: a desktop app (Windows), a command-line tool and text UI, and an MCP server for agent integrations.

Wakili does not know the law, does not file for you, and cannot protect a computer someone else already controls. See what it can't do.

Install (Windows & Linux)

Two builds are published:

Windows will warn that the publisher is unknown. That is expected for an unsigned open-source build — check the fingerprint instead of trusting a signature. Run Wakili from a dedicated data folder or a USB stick, not from your Downloads folder.

Linux (x86-64): download wakili-desktop-linux-x64.tar.gz (GUI — needs a GL-capable display) or wakili-terminal-linux-x64.tar.gz (CLI + TUI), extract, and run the binary: ./wakili-desktop or ./wakili --help. Verify the fingerprint with sha256sum first.

USB live image: a bootable, amnesic system on a stick — see USB image below.

macOS is enabled in the release workflow and builds on CI — a signed-by-fingerprint .dmg download will follow; meanwhile, build from source.

First run

  1. Welcome — three plain-language cards on what Wakili does and does not do.
  2. Where cases live — choose a folder. Wakili never writes outside it and does not use OneDrive; if the folder is synced, Windows (not Wakili) will copy your case.
  3. Your machine — Wakili reads your RAM/disk and offers only models that will actually run.
  4. Choose a model — None, Nano, Standard or Pro (see Models). None still files, keeps deadlines and searches precedent.
  5. Set the passphrase — six unrelated words. There is a confirm field, a click-to-build word bank if you would rather not type, and a “Download the key (.txt)” option. Wakili keeps no copy; if the words are lost, the cases are gone.

Evidence

Drag a folder or files onto the window (or use Add evidence). Each item is copied into the case, hashed on arrival, classified, and given a filing reference like E-014. Originals stay where they are.

Procedure & deadlines

Set the case incident date and Wakili computes the deadlines for your court division from embedded rules. Each deadline states plainly what happens if it slips. The calendar is live: page months, and click any day to see what falls on it. Deadline reminders can appear in the Windows notification centre; they name the case only if you allow it in Settings.

The rules were entered by people and can be out of date. Check anything consequential against the cause list.

Drafting & PDF export

Drafts are generated from a template + this case's facts and exhibits — deterministically at tier T0, or with the local model if one is installed. Every draft is marked SIGN BEFORE FILING and links each claim to an exhibit. From the Drafts tab you can Preview PDF (opens in your default viewer) or Download PDF. The PDF is a real, paginated A4 document — Markdown is rendered, not shown raw.

Precedent

The Precedent tab is ranked for the case being handled against a local, verified Kenya Law corpus — article overlap, issue overlap and how binding the court is. Every citation resolves to a real URL. Wakili found the case by citation, not by judgement — read it before you rely on it.

Safety build

The safety build packs the case into one encrypted file for a stick. You choose what goes in (evidence + hashes, drafts, the procedure rules, optionally the model and your notes), then type build bundle to arm the action. Windows keeps a record that a removable drive was written to; Wakili cannot remove that record. Once on a stick it is a physical object — whoever holds it holds the case, and the passphrase is the only thing in the way.

Local AI engine

AI drafting needs a llama.cpp backend and a model. Wakili can install one for you (Install the AI engine, or wakili backend install): it detects your OS/arch/GPU and fetches the matching prebuilt build. The Draft with the model button is never hidden — when the engine or a model is missing it tells you exactly why and offers a one-click fix. If your machine cannot reach the download, use tools you already have — no download needed:

AI drafts follow the chosen template’s layout — court caption, headings, prayers, signature blocks — with the narrative written for your case. Model activity is tracked on the Analytics page (interactive throughput/PC-load charts and a status-page uptime/availability panel). Without an engine, filing, hashes, dates, deadlines and precedent still work at tier T0. Wakili looks for the backend in this order: WAKILI_LLAMA_BIN → your case folder’s bin/llama → a bundle beside the executable → PATH; models come from the folder you choose, your case folder’s models/, or a bundled models/.

Verify the build

Wakili is not code-signed. Verify the download's fingerprint before you open it — three lines:

Get-FileHash .\wakili-desktop-windows-x64.zip -Algorithm SHA256

Compare the result with the fingerprint on the download page (and the SHA256SUMS published with each release). Inside the app, the Verify screen shows this installation's fingerprint next to the auditors' published one and runs wakili doctor (network off, machine, disk, vault, engine). If the two do not match, do not open a case with it.

Command line

The terminal build exposes the whole core. A few examples (every command takes --json for scripting):

wakili vault init --name case
wakili case new --name case --title "Wanjiru v AG" --incident 2026-03-12
wakili evidence add --name case --case <id> ./ob.txt
wakili evidence seal --name case --case <id> <evidence-id>
wakili evidence remove --name case --case <id> <evidence-id> --reason "duplicate"
wakili procedure next --name case --case <id>
wakili draft create --name case --case <id> --template notice_of_motion
wakili draft export --name case --case <id> --draft <id> --out draft.pdf
wakili precedent search "freedom of assembly"
wakili doctor
wakili verify

Exit codes are documented and stable (0 ok, 2 usage, 3 wrong passphrase). Run wakili --help for the full list. There is also an embedded console and an MCP stdio server with three permission rings.

Threat model, in brief

Build from source

Wakili is Rust. With a stable toolchain and, on Windows, the MSVC “Desktop development with C++” workload:

# terminal (CLI + TUI + MCP)
cargo build --release --bin wakili

# desktop GUI
cd desktop && cargo build --release   # -> target/release/wakili-desktop

Source: github.com/nimrodnyongesa/verda-vvm (AGPL-3.0). Reproducible-build instructions are being finalised.

USB image

A bootable, amnesic live system on a stick — a whole Wakili system, in the manner of Tails. Boot a borrowed or seized machine straight into Wakili's text interface; it runs entirely in RAM, networking off by default, and leaves nothing on the host's disk once you power it off. Hybrid BIOS + UEFI, x86-64.

Get it: download wakili-live-amd64.iso (≈753 MB) from the latest GitHub release — or use the USB image tab on the downloads section.

Verify, then write: check the fingerprint first (sha256sum wakili-live-amd64.iso, or Get-FileHash on Windows) against the value published with the release. Then write it to a stick with balenaEtcher, GNOME Disks → Restore Disk Image, dd, or Rufus in DD mode — exactly how you would write a Tails image. Set the target machine to boot from USB (F12/F2/Del at power-on).

Using it: it auto-logs in and launches the Wakili TUI — onboarding → passphrase → case → evidence → deadlines → draft (the deterministic T0 engine works with no model) → Safety build. To keep cases across reboots, build a Safety Bundle onto a second stick before shutdown, or set up encrypted persistence (see PERSISTENCE.txt on the running system). Because networking is off, drafting uses T0 by default; see usb/README-usb.md to bake a local model into the image.

This page is kept in step with the shipped build. Last reviewed with the current release.