Document Work and To-do as the two product concepts, synchronize every shipped locale, publish the six-tool and typed-image contracts, and keep static web generation offline while live GitHub chrome refreshes after deployment.
The previous commit added "including which role ran on which model" to the
resume bullet. Testing a real fleet run showed that is not true of the
Fleet ledger: `FleetTaskState` in `crates/tui/src/fleet/ledger.rs` carries
`entry`, `status`, `lifecycle_seq`, `leased_to`, `leased_at`, and
`completed_at` — no model, no provider, no route. A grep for `pub model` /
`pub provider` in that file returns zero.
The route *is* recorded, but by the sub-agent state
(`.codewhale/state/subagents.v1.json` holds
`runtime_profile.model = {fixed: "deepseek-v4-flash"}` and
`provider = "deepseek"`), which is a different system from `fleet.jsonl`.
Conflating the two put a claim in the README that the named artifact does
not back.
The rest of the fleet positioning stands and was verified in the same run:
spawning with only `type=scout` and no model resolved the scout profile's
pinned `deepseek-v4-flash` / `deepseek` route, with `permissions.write =
false`.
Reverted in English and all nine translations; re-stamped.
Assisted by Claude Code.
The README sold "any model, any provider" as *switching*: pick a provider,
pick a model, change it mid-task with `/model`. That undersells what the
runtime does. A saved role records its `provider`, `model`, and reasoning
tier explicitly, so roles in one fleet can run on different models from
different vendors in a single run — a cheap fast model directing an
expensive reasoning one, a GLM builder beside a Kimi reviewer.
That capability was documented in docs/FLEET.md (which even ships a
`provider = "zai"` / `model = "glm-5.2"` example) and absent from the front
door. `/fleet` was described as "runs a team of workers", which reads like
a thread pool rather than a team you compose.
Four changes, all prose:
- An intro paragraph stating the idea directly: you pick the model per
role, and they don't have to match.
- The first "What it does" bullet now says roles pin their route
explicitly, so a fleet can span vendors and a role's route does not
depend on whichever provider happens to be active.
- A new bullet for the other half — roles and the constitution are files
you author, so the harness matches your practice instead of ours.
- `/fleet` and the resume bullet name the per-role model.
Claims verified against `FleetProfileDraft` (`model`, `provider`,
`reasoning_effort` are per-profile fields) and docs/FLEET.md, not written
from the product pitch.
All nine translations updated in step and re-stamped; no new sections,
code blocks, or URLs, so the structural gates hold. Verified:
check-readme-translations.py, check-readme-locales.sh, 250 web tests,
check:docs.
Assisted by Claude Code.
- bump docs/public-surface-facts.json toolCount to 67 to match
web/lib/facts.generated.ts after harness/continual tool addition
(fixes Web Frontend Lint & Type Check: expected 66 to be 67)
- README: remove codewhale account login / account auth paragraph
until hosted account is actually available; keep simple auth flow
The one-paragraph TUI tour in README.md and all nine translations taught two
false preconditions and the wrong verb for undo.
Tab: the README said "when the composer is idle". The gate is EMPTINESS, not
idleness — crates/tui/src/tui/ui.rs:6978 does `if !app.input.is_empty() {
continue; }` immediately before `app.cycle_mode()`, and the comment at
ui.rs:6974-6977 explicitly denies the idle/running distinction ("Tab is
completion when the composer has content and a mode switch only when it is
empty ... so Tab never changes roles based on whether a turn happens to be
running"). A user with typed text and no turn running got completion, not a
mode switch.
Shift+Tab: the README applied the same "idle" qualifier. Shift+Tab has no
composer precondition at all — ui.rs:6363-6367 gates only on the modal stack,
per the comment at ui.rs:6358-6359 ("Shift+Tab is a shell-level permission
control. Keep it live in the composer.").
/restore: "undoes a turn" conflated two commands and described neither. Bare
`/restore` lists snapshots and reverts nothing
(crates/tui/src/commands/groups/skills/restore.rs:33-42 returns
`format_listing(&snapshots)` and returns early); `/restore <N>` reverts
workspace files only ("conversation history is unchanged", restore.rs:104-108).
The verb that undoes a turn is `/undo`
(crates/tui/src/commands/groups/debug/undo.rs:9-16). The product's own help
string already had this right — crates/tui/locales/en.json:287.
Also in this commit, because the translation stamp couples them:
- docs/KEYBINDINGS.md:18 inherited the same wrong "idle" qualifier on the
Shift+Tab row; KEYBINDINGS.md:17 was already correct for Tab.
- README.id.md was stamped in sync but was missing the docs/AUTHORIZATION_ORDER
and docs/HOOKS "Learn more" bullets that README.md:87-92 and the other eight
translations carry, and its language switcher omitted Русский and Українська.
Provenance: 171f0b2a2 touched README.md plus the eight files in the checker's
TRANSLATIONS list and skipped README.id.md; 92128e669 then refreshed the stamp
wholesale, so the marker certified a sync that did not exist.
- scripts/check-readme-translations.py checked only eight of the nine shipped
translations. README.id.md was absent from both TRANSLATIONS and the
LANGUAGE_LINKS exemption set, which is exactly how the gap above survived CI.
Adding it makes the gate report "9 translations in sync".
- README.ru.md:24 listed [Українська](README.uk.md) twice.
The gate was already red before this commit: cc20f407f added the Discord link
and badge to README.md and to every translation body but never re-stamped, so
all eight checked files reported stale. All nine are now re-stamped to
sha256:a7f294018f28.
Verified: `python3 scripts/check-readme-translations.py` exit=0 ("9
translations in sync"), `bash scripts/check-readme-locales.sh` exit=0 (PASS).
Adds https://discord.gg/37gfS3ksug in the places someone actually looks for
a community: a badge in the first badge row and an entry on the language/link
line of all ten READMEs, a Discord action in the site nav beside the star
badge, an entry in the footer Project column, and a link in the homepage
community section.
"Discord" is a brand name, so it is a literal rather than a dictionary key —
it needs no translation and every routed locale gets the identical link shape.
The one exception is the zh README's nav line, which reads "Discord 社区" so
the word is a noun phrase in context rather than a bare English token.
docs-ia.test.ts pins the footer project routes in exact locale-swap parity, so
its expectation is extended rather than relaxed — a new footer link still has
to appear in every locale or the test fails.
Receipts: cd web && npx tsc --noEmit exit=0; npm test -> 28 files, 235 tests
passed; npm run lint exit=0.
Land the in-flight experimental-search slice as a real, honest v0.9.4
piece: a provider-neutral WorkflowSearchSpec authoring + freeze boundary
(parse/validate, preregistration hashes over baseline/requested+resolved
model/public evidence/evaluator, deterministic candidate ids and
admission batches) plus the operate best-of-N recipe's structured
'search' strategy (2-16 independent worktree candidates with
responseSchema contracts and a read-only judge). The module explicitly
remains an authoring boundary, not a runtime: hard_gates/score commands
are parsed and validated only, and docs say so.
Fixes found during the takeover operation:
- The checked-in recipe test failed against the real driver contract
(parse_task_options lets prompt win over description, so fake-driver
needles never matched and replies fell back to non-JSON). The recipe
now puts the full instruction in the single driver-visible description
and pins the prompt-wins contract with a new test.
- Queue claims verified against the runtime: the Workflow host's
per-run concurrency gate (Semaphore, 16 live) is where larger
populations wait; docs now name the gate instead of vague 'queues
through Fleet'. WORKFLOW_SEARCH_MAX_CONCURRENT documents 16 as today's
default with a cross-reference (a crate cycle prevents importing the
host constant).
- TournamentOrdering (ScoreThenCost) and the 1,000-agent validation
test bump retained from the slice.
Verified: cargo test -p codewhale-workflow -p codewhale-workflow-js
--locked green (250 + 16 + 9 + 49).
(cherry picked from commit f3e3232ef2)
Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
Add browser device login, profile-scoped OS credential storage, refresh and logout, and redacted BYOK vault management for the Codewhale account. Keep provider auth separate and retain cloud as a compatibility alias.
(cherry picked from commit 3c7a614d7c)
Signed-off-by: Hmbown <101357273+Hmbown@users.noreply.github.com>
Publish the implemented authorization order and lock its precedence with regression coverage. Preserve the contributor's documentation, translation, and contract-test work.
README.ru.md and README.uk.md are full translations of README.md,
including the docs/HOOKS.md bullet the candidate added after the lane
forked. Every README's language nav gains the two links (each file omits
its own), and all eight translations are restamped against the new
README.md sha256.
check-readme-translations.py learns the two files in both TRANSLATIONS
and LANGUAGE_LINKS. `scripts/check-readme-translations.py` and
`scripts/check-readme-locales.sh` both pass.
Scope: this is the README half only — #4788/#4789 ship no fr/de/ca/id
READMEs and no marketing-site pages for those locales.
Harvested from the v0.9.2 localization lane (#3092, #4791).
Run observer and background hooks through bounded supervisors, enforce timeout containment and reaping, and preserve one hook session identity across runtime rebinds. Carry real tool exit codes into after/error events, fire tool-scoped on_error hooks for every settled failure, and keep message-submit stdin and queue recovery exact without parking the terminal loop.
Document the implemented TUI-only event, steering, shell_env, timeout, environment, and audit contracts without implying headless or public-API coverage.
Verified: hook filter 144/144; message_submit 29/29; reported_tool_exit_code 1/1; on_error filter 11/11; TUI locale parity; README locale links; cargo fmt --check; git diff --check.
Supersedes the previous simplification pass in this branch with a
stronger rewrite from a parallel session (PR #4746, branch
claude/github-readme-simplify-al6fi3): opens with the actual history
(native DeepSeek experience -> community-driven multi-provider harness)
instead of a slogan, researches the opencode/pi README register for
tone, and moves the feature list under a plain "What it does" heading
instead of bold marketing labels. Adopted verbatim (byte-identical,
including all 6 translations) since it lands the same brief better
than my first pass and matches the user's explicit direction, without
re-deriving the same research.
Also fixes the one JS/TS contract test the retired tagline broke
(web/lib/public-surface-contract.test.ts:145 pinned the literal phrase
"supported hosted and local models"): asserts the substantive
hosted-or-local claim instead of the exact retired marketing string.
Verified: full web vitest suite (136/136), both README CI gates
(check-readme-translations.py, check-readme-locales.sh).
The "Why Codewhale" bold-tagline bullet list and the hedge-heavy sandbox/
pricing paragraph read like generated landing-page copy, not a project
README. Folded the real facts (multi-provider, approval gating,
constitution.json write holds, fleet resume) into two plain paragraphs
and dropped the defensive edge-case detail (per-OS sandbox backend
enumeration, the "$0" pricing aside) that belongs in docs, not the
front page.
Retranslated the changed passages into all 6 shipped locales and
restamped each against the new README.md hash so
scripts/check-readme-translations.py stays green.
Derive website sandbox facts from explicit runtime capability markers instead of source filenames. Document actual platform wrappers, narrow model and audit claims, and make two-package/three-command installs exact.
Verify release assets under their manifest filenames before renaming them, with an executable contract test for every Unix snippet. Refresh localized README receipts and keep source-candidate toolCount at 66.
Signed-off-by: Hunter B <hmbown@gmail.com>
Label v0.9.1 as an unpublished source candidate while keeping v0.9.0 as the verified latest release. Correct channel and Android/Termux preview guidance, narrow model claims, synchronize localized README controls, and credit @fleitz for PR #4673/#4674 without rewriting contributor history.
Signed-off-by: Hunter B <hmbown@gmail.com>
* docs(web): align the public surface with Blue Stage
Carry the TUI's semantic Blue Stage palette into the website, keep Signal Gold on the whale and human-attention accents, and enforce the cross-surface token contract in tests. Route existing Install and Providers topics to their first-party pages and document the loopback-only browser client's real bootstrap and authentication boundaries.
Signed-off-by: Hunter B <hmbown@gmail.com>
* docs: keep translated READMEs in public-surface parity
Mirror the browser-client command and guide link across all six translated READMEs, with the source stamp updated to the exact English README. This restores the repository translation gate without translating or reordering executable commands.
Signed-off-by: Hunter B <hmbown@gmail.com>
---------
Signed-off-by: Hunter B <hmbown@gmail.com>
Rewrite the README top per the 0.9.1 public-surface brief: tagline, a
concrete first paragraph, three Why bullets (no lock-in, safe by
construction, work that survives), and the deepseek-tui origin line.
Fold the long What-it-does list into the Why bullets plus a short
Learn-more section that deep-links PROVIDERS, FLEET, and CONFIGURATION.
Port the changed hero and Learn-more sections into all six locale
READMEs and refresh their source stamps;
scripts/check-readme-translations.py passes. Star counts stay omitted
rather than hardcoded. No anti-cloud phrasing.
Prepared with agent assistance for the 0.9.1 public-surface pass.
Signed-off-by: Hunter B <hmbown@gmail.com>
Integrate the underwater TUI, message-first Operate, Fleet and Workflow reliability, expanded model/provider catalog, exact custom-route restoration, docs-first site, localization, packaging, and release metadata for the v0.9.0 candidate.
Harden endpoint-bound credential provenance, approval and goal UX, Fleet attempt fencing and crash recovery, large-workspace mention discovery, Kimi budgeting, and release asset/version gates. Include the stopship Fleet and Workflow fixtures used by release dogfood.
Verified with workspace fmt/check/clippy/tests on Rust 1.88, release-script and npm suites, 18-crate publish dry run, production web build, Docker build check, secret scan, dependency audit, and protected-state hash validation.
Rewrite the README in plain developer language — what it is, install, use,
what it does, how to contribute — with details linked out to docs and
codewhale.net. The contributor-culture section stays substantive: feedback
is a gift, harvested PRs keep credit, first-contribution paths explicit.
Translate it into 简体中文, 日本語, Tiếng Việt, 한국어, and (new) Español
and Português so every complete UI locale has a README. Each translation
carries a source stamp, and scripts/check-readme-translations.py — wired
into CI — fails whenever the English README changes without translations
following, or when code blocks, links, or section structure drift.
Machine translations follow each pack's terminology; flagged for native
review.
Make the repo self-explaining where the work happens: crates/tui/AGENTS.md
(shell grammar contract, l10n rules, PTY QA traps), crates/tui/locales/
AGENTS.md (pack parity discipline, translation conventions, how to add a
locale), web/AGENTS.md (derived facts, gate list). The blanket AGENTS.md
gitignore now carves out these maintained files.
Rewrite the 0.8.68 changelog section to cover the complete candidate —
the full underwater shell, streaming/repaint work, the exec JSONL fix,
the 104-key localization layer, harvests, and doc-status work — and
resync the packaged mirror.
Update the FAQ to describe the shipped Plan, Act, and Operate modes in English and Chinese, and replace nonexistent workflow status/logs subcommands with the real Lane inspection commands. This keeps the v0.8.68 public docs executable and consistent with the CLI.
Update workspace, npm, changelogs, docs, and generated site facts for the 0.8.68 release. Refresh the public mode and Workflow language to match the shipped Plan/Act/Operate surface.
Add a short "CodeWhale for VS Code — GUI frontend" section to both
README.md and README.zh-CN.md so terminal users who prefer a graphical
IDE experience can discover the community-maintained GUI frontend at
HengQuWorld/CodeWhale-VSCode.
The section notes that the GUI wraps the same local codewhale runtime
over the Runtime API — sessions, providers, modes, and skills stay in
sync between terminal and IDE — and clarifies the distinction between
the Phase 0 read-only scaffold under extensions/vscode/ in this repo
and the full chat frontend in the linked project.
No code or behavior changes. README-only.
The v0.8.67 work made `.codewhale/constitution.json` protected_invariants
mechanically enforceable, but the docs still described them as advisory
prose only.
CONFIGURATION.md:
- Add "Enforced repo-law invariants" section: the object shape
(text/paths/action, action defaults to ask), tighten-only guarantee,
non-bypassable-by-mode (ask force-prompts even in YOLO, block denies),
repo-local-only, fail-safe degradation, the tool.repo_law_decision
receipt, and the deliberately limited coverage (write_file/edit_file/
apply_patch target paths only; shell writes are NOT held). Includes a
correct JSON example.
- Add "Managing the user-global constitution" section: the constitution-
first setup path, the Constitution-step keys (1-6 tune, G preview then G
ratify, A model-draft behind the same ratify gate, K keep-existing, U
bundled), and the /constitution management subcommands.
- Note both protected_invariants shapes in the repo-constitution prose.
README.md:
- The "How instructions are ranked" section now notes that a
protected_invariants entry with path globs compiles into a mechanical,
tighten-only write hold, and links to the new CONFIGURATION.md section.
Verified against crates/tui/src/repo_law.rs (WRITE_TOOLS, ask/block,
receipt event, fail-safe), crates/tui/src/project_context.rs (schema,
RepoLawAction default = Ask), crates/tui/src/tui/setup/mod.rs (A/G/K key
handlers, ratify gate), and crates/tui/src/commands/groups/core/
constitution.rs (subcommand list).
Tests: docs-only; git diff --check clean; cross-checked every claim
(schema fields, key bindings, subcommands, tool coverage, receipt event
name) against the cited source files; verified the new intra-doc anchor
link slug.
Document /constitution as the primary personal constitution surface, with structured user-global constitution data rendered to prose, repo-local law as optional project policy, AGENTS.md as project instructions, and memory/handoffs below those layers.
Mark the full base-prompt Markdown override as expert-only and keep WHALE.md as deprecated migration-only guidance. Update README translations and the web constitution page so the docs map has localized coverage.
Tests: git diff --check; npm --prefix web run check:docs; npm --prefix web run lint; cargo fmt --all -- --check
Refs #3811. Refs #3412. Refs #3806.
Register OpenModel across the shared provider registry, CLI model registry, TUI config, provider picker, and docs. Default the route to deepseek-v4-flash, use Anthropic Messages wire semantics, and keep Bearer auth so /v1/messages and /v1/models share one client.
This harvest also updates the config example to use deepseek-v4-flash instead of deepseek-chat, which the original PR notes is not available through OpenModel Messages.
Harvested from PR #3585 by @noaft.
Verification:
- cargo fmt
- CARGO_TARGET_DIR=/Volumes/VIXinSSD/codewhale-target CARGO_INCREMENTAL=0 cargo test -p codewhale-config --locked openmodel
- CARGO_TARGET_DIR=/Volumes/VIXinSSD/codewhale-target CARGO_INCREMENTAL=0 cargo test -p codewhale-tui --bin codewhale-tui --locked openmodel
- CARGO_TARGET_DIR=/Volumes/VIXinSSD/codewhale-target CARGO_INCREMENTAL=0 cargo test -p codewhale-agent --locked first_party_recent_provider_models_are_listed
Promote the main setup commands in slash completion and the command palette while keeping toolbox/reference commands searchable when typed explicitly. The palette now runs picker-style commands such as /model, /provider, /fleet, and /statusline directly.
Render the config modal with friendly setting labels and selected-row hints while preserving the underlying persisted keys for edits and filters. Update docs to describe /statusline as footer configuration and move /models, /modeldb, and /rlm into the toolbox posture.
The README install example-output comments (all four locales) and the
CONFIGURATION.md auto_review section still named v0.8.64 as the current
release after the v0.8.65 bump. #3528 corrected a stale Cargo comment but
missed these user-facing docs.
- README.md / README.ja-JP.md / README.vi.md / README.zh-CN.md: example
`codewhale --version` output comment 0.8.64 -> 0.8.65
- docs/CONFIGURATION.md: auto_review 'enforced behavior in v0.8.64' -> v0.8.65
Verified with `./scripts/release/check-versions.sh` (workspace=0.8.65,
npm=0.8.65, lockfile in sync).
Closes#3087 (docs portion).
Reshape the front page toward the #3087 intended structure and ground every
claim in current repo facts.
- Identity line is now "the terminal coding agent for any model — open models
first," matching docs/PROVIDERS.md and the agent guidance.
- New "Providers and routing" section describes the real route system:
RouteResolver minting a resolved route (endpoint, wire protocol, model ID,
context limit, price), the network-free Models.dev-shaped catalog,
route-aware context budgets, and the honest cost states (per-token,
subscription/quota, credits, local/N-A, unknown/stale).
- Fold sub-agents into a single durable "Fleet" section: ledger at
.codewhale/fleet.jsonl, idempotent `fleet resume`, typed receipts, and
roles/profiles/loadouts/slots with strong/balanced/fast model classes.
- Dedicated "Safety" section: three modes, hooks allow/deny/ask, the actual
sandbox backends (Seatbelt/Landlock+seccomp/bwrap), and /restore.
- Fix stale facts: drop the "Kimi OAuth temporarily broken" note (a working
kimi_oauth auth_mode ships), mark openai-codex experimental, replace the
"big vs. cheap" tier wording with strong/balanced/fast, and add the
qianfan provider that was missing from the list.
- Sync the docs index (Fleet/Sub-agents links) and trim the prose.
English README.md only; localized READMEs tracked as follow-up. Install and
version tokens (--tag v0.8.64, # 0.8.64) are left unchanged for the
check-versions gate.
The `codewhale --version` install snippet showed `# 0.8.63` in all four
README variants while the workspace is already at 0.8.64 (Cargo.toml
[workspace.package] version), and the same READMEs' CNB mirror install
lines already reference v0.8.64. Sync the comment across en / vi / zh-CN
/ ja-JP so the front-page install instructions are internally consistent.
Refs #3087.
Remove public benchmark docs/scripts and the shipped SWE-bench CLI surface from the CodeWhale repo; benchmark work belongs outside this release repo.
Trim public docs that routed users into private maintainer runbooks, remove stale deleted-doc links, tone down release-facing copy, update CodeWhale crate descriptions, and expose the residue ledger as /debt while keeping quiet legacy dispatch compatibility.
Verification:\n- cargo fmt --all -- --check\n- git diff --check\n- ./scripts/release/check-versions.sh\n- cargo check -p codewhale-tui --bin codewhale-tui --locked\n- cargo test -p codewhale-tui --bin codewhale-tui --locked command_registry\n- cargo test -p codewhale-tui --bin codewhale-tui --locked every_command_alias_dispatches_to_a_handler\n- cargo test -p codewhale-cli --locked
Align the workspace, internal crate pins, lockfile, npm wrapper metadata, install docs, release-site fallback, and existing changelog split on 0.8.63 so the branch state matches its active release guidance.
Verified: git diff --cached --check; cargo fmt --all -- --check; ./scripts/release/check-versions.sh.
Update the 0.8.62 changelog entries, README/install snippets, npm wrapper metadata, and website fallback version after the final release-lane verification pass.
Also records the plan confirmation checklist visibility change from PR #3299 so the generated GitHub Release body includes it.
Verified: ./scripts/release/check-versions.sh; git diff --check; cargo fmt --all -- --check; python3 scripts/check-coauthor-trailers.py --author-map .github/AUTHOR_MAP --range v0.8.61..HEAD --check-authors; cargo test -p codewhale-tui --bin codewhale-tui --locked plan_prompt; cargo build --release -p codewhale-cli -p codewhale-tui --locked
Harvested from PR #3239 by @lucaszhu-hue.
Keep the useful Atlas Cloud setup path and model-id guidance, but fold it into the existing README/provider-doc shape instead of adding a large first-page provider table and logo asset.
Verified with:
- cargo fmt --all --check
- git diff --check
Co-authored-by: lucaszhu-hue <278269343+lucaszhu-hue@users.noreply.github.com>
The goal machinery existed in three disconnected surfaces that never
formed a loop: the /goal command set an in-memory struct;
model-facing / tools operated on a
; and a SQLite-backed layer was
fully built but never read. The turn loop called
but only intra-turn — a counter reset at each
turn boundary, so the loop died the moment a turn completed.
This wires the loop end-to-end:
- Remove MAX_GOAL_CONTINUATIONS_PER_RUN. A goal runs until the model
self-reports complete/blocked, the user pauses or clears, or an
optional token/time budget is exhausted. No continuation cap.
- Add in the engine. After a turn
completes (Completed only — Esc/Interrupted and Failed stop the
loop), if the goal is Active and under budget, dispatch a synthetic
back into the engine's own op channel. The engine
now carries a clone for self-dispatch.
- Add + so /goal
pause/resume/clear/complete/blocked push the new status to
SharedGoalState immediately — a queued continuation can no longer
overwrite a user-initiated pause back to Active.
- Add accessor.
- no longer takes a max parameter (the
loop is unbounded).
Verified: 25 goal tests pass (7 goal_loop, 8 tools::goal, 10
commands::goal). Compiles clean. Esc naturally stops the loop
(Interrupted != Completed).
Replace the grandiose "address / return address / prove alignment" framing
with plain copy: what CodeWhale is, what models it works with, how to install,
how to run it, and the mechanisms that make it agentic (plans, self-verification,
long sessions, sub-agents, clean undo) — stated once each, not as a manifesto.
Lead with the project's actual aim: bring the best available models to as many
people as possible. Credit the global contributor base plainly. Keep every
install path (npm, cargo, brew, Docker, Nix, scoop, CNB mirror), the full
provider list, the headless/exec path, and the docs index. Demote the
constitution/authority substance to a short, factual note rather than the hero.
Refreshed screenshot already swapped in the previous commit.