13 Commits
Author SHA1 Message Date
zeekay a987fc6fbd Grant the CI reusable its ID token 2026-10-17 04:18:02 -07:00
zeekay f0a9ead620 docs: add Model Card, checkpoint cards, and verified production benchmarks 2026-10-16 19:19:08 -07:00
zeekay aada966a2f feat: remove army directory and fold into industrial recipes
- Remove army/ demonstration folder
- Add recipe 19: fleet powertrain trade study
- Add recipe 20: equipment readiness gate
- Add standalone Rust recipes crate in recipes/rust
- Update README with auth quickstart and 20 production recipes
2026-10-16 18:01:31 -07:00
zeekayandHanzo Dev 8d98b1e527 army: file it names the evidence routes under /v1/research
Every decision record lives under /v1/research now (hanzo-inc/cloud
0ce6cf3d5e): evidence is POST /v1/research/evidence and /evidence/sysml,
and what read a uri is GET /v1/research/evidence/dependents.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-16 01:13:11 -07:00
zeekayandHanzo Dev c028dcd802 army: file it, the one command that files a demonstration in Hanzo's decision records
army/README.md gains "File it": `example apu file https://api.hanzo.ai
changes/bulletin.json` from the decision runtime, and the records it files
(evidence, the DDT decision with its charter, the evaluation, Action
drafts, the bulletin's next version, and what read it). jltv files its
SysML model as elements with satisfy and verify links. army/apu/charter.json
is the decision's charter. run.py is unchanged.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-16 00:20:02 -07:00
zeekayandHanzo Dev 2468a2180c army/apu: the DDT Decision record and the DDT records its run files
Co-authored-by: Hanzo Dev <[email protected]>
2026-10-15 14:25:48 -07:00
zeekayandHanzo Dev 35adc0c940 army: the JLTV SysML v2 trade and the DDT auxiliary power decision, run against kai-1.3
Two Decision Programs for Army SBIR ARM26BX06-NV012, each with its evidence, the recorded run
(kai-1.3, 2026-10-15, `kai serve` on CPU with no network) and run.py, which asks every Kai
question of the program on api.hanzo.ai and prints it beside the recorded answer.

Co-authored-by: Hanzo Dev <[email protected]>
2026-10-15 14:11:13 -07:00
zeekayandHanzo Dev f7c442e7c7 Remove SUBMIT.md
Co-authored-by: Hanzo Dev <[email protected]>
2026-10-15 12:37:19 -07:00
zeekay f1b69deee7 Say how to install the CLI and wrap a coding tool in one command each
hanzo.sh installs the hanzo CLI (checksum-verified native binaries), and
hanzo code runs claude, codex, cursor, agy or dev with the MCP toolset, model
calls metered through api.hanzo.ai and the session streamed to the
dashboard. Each flag and URL named here was run against the installed CLI
and the live installer. No speed or cost claim: a wrapped session's savings
are measured from recorded usage, not stated.
2026-10-11 21:57:34 -07:00
zeekay 621d446b19 Add a Claude Code plugin: Kai hooks in shadow mode and the kai skill
examples/claude-code holds a Stop hook, a PreToolUse hook and the kai
skill. .claude-plugin/marketplace.json makes this repo the marketplace
"kai" (not "hanzo", a name another Hanzo marketplace already holds), so
/plugin install kai@kai installs it.

Kai does not yet read agent work reliably: its zero-shot answers to
"done", "verified" and "risky" are near chance. So rules in code decide
first, Kai can only tighten (send a turn back, or ask before an action;
never allow), both hooks fail open on any error or timeout, and the
default mode, shadow, logs Kai's answers and changes nothing. The log
holds probabilities and verdicts only, 0600 in a 0700 directory. A state
sent to Kai is redacted and at most 3,000 characters of JSON; only https,
or http on loopback, is called, and no redirect is followed.

Against the first draft: plugin options are read as
CLAUDE_PLUGIN_OPTION_<KEY> uppercased, as Claude Code exports them (the
draft read lowercase names and never saw the plugin's key or mode). The
floor is checked before the read-only shortcut, which let "env rm -rf"
and awk's system() through, and now catches "git checkout -- .",
"rm -Rf" and split rm flags. A background-task notice no longer starts a
new turn. Stop answers with decision "block" as JSON. Only the last
8 MiB of a transcript is read: a 745 MB one made the hook throw.

test/kai.test.mjs runs both hooks offline against a stand-in for Kai on
127.0.0.1, 25 tests; test.sh runs it with the rest. In a live Claude
Code 2.1.296 session against the stand-in, the Stop block came back as
"Stop hook feedback", the PreToolUse ask denied an allowed command
under -p, and shadow showed a notice and let it run.
2026-10-11 10:33:43 -07:00
zeekayandHanzo Dev 35d949c4bf docs: add LLM.md and gitignore in hanzoai/kai
Co-authored-by: Hanzo Dev <[email protected]>
2026-10-06 19:03:27 -07:00
zeekayandHanzo Dev 82684b2c10 feat: update examples and recipes with Kai/Jev model support and native SDK integration
Co-authored-by: Hanzo Dev <[email protected]>
2026-10-06 19:02:03 -07:00
zeekay 77043e0e18 README: Kai, and how to use it on the Hanzo API 2026-09-29 21:27:05 -07:00