PressWire is a local-first Kujo tool for approval-gated publication effects, receipts, corrections, and idempotent local delivery. It has no required hosted service, database server, model key, or sibling-tool dependency.
PressWire provides immutable records, append-only audit events, atomic writes, per-record locks, bounded inputs and queries, structured errors, CMS/Git-static/newsletter conformance fixtures, resumable effect reconciliation, explicit compensation rules, optional signed VersionSeal verification, and deterministic partial-provider fault injection. Optional external capabilities fail honestly when no adapter is configured. It does not claim hosted identity or distributed multi-host coordination.
See the production review and completed hardening worklist.
Requires Kujo 1.0.1 or newer.
git clone https://github.com/kujolang/presswire.git
cd presswire
export KUJO_BIN=/absolute/path/to/kujo
export PATH="$PWD/bin:$PATH"
presswire --version --json
presswire doctor --jsonpresswire init --state .presswire --json
presswire preflight --input fixtures/core.json --actor publisher --json
presswire validate --json
presswire export --output presswire-export.json --jsonRun presswire --help for the complete command surface. Common flags include --state, --config, --input, --actor, --timestamp, --id, --path, --type, --after, --limit, --output, --force, --dry-run, and --json. JSON mode uses the stable ok/data/error/error_code/tool_version/contract_version envelope. Exit codes are 0 success, 1 operational failure, and 2 usage error.
State defaults to .presswire/. Traversal, symlinks, secret-shaped fields, malformed JSON, incompatible schemas, duplicate IDs, checksum drift, oversized resources, and unsafe overwrites fail closed. Core behavior is implemented entirely in Kujo; adapters remain optional.
presswire.kujo canonical entrypoint
src/ publication runtime and shared Kujo modules
tests/ regression, security, and domain suites
schemas/ public JSON contracts
fixtures/ deterministic offline inputs
scripts/ validation gates
docs/ contracts, security, review, and future work
bin/presswire logic-free launcher
bash scripts/validate.shThe gate checks the entrypoint, every Kujo suite, JSON artifacts, CLI smoke paths, foreign-runtime boundaries, and the Git diff.