| 1 | { |
| 2 | "schemaVersion": 2, |
| 3 | "product": { |
| 4 | "name": "Codewhale", |
| 5 | "description": "Terminal coding agent for supported hosted and local models. One runtime on your machine. Rust, MIT.", |
| 6 | "positioning": "Terminal-native, model/provider-neutral, local-first coding agent", |
| 7 | "license": "MIT", |
| 8 | "terminology": { |
| 9 | "Fleet": "the user's model inventory: who is in the roster and which member is selected", |
| 10 | "Workflow": "what order the work follows", |
| 11 | "Lane": "one running Workflow instance", |
| 12 | "Runtime": "where, how, and with what authority selected work executes" |
| 13 | }, |
| 14 | "sources": [ |
| 15 | "Cargo.toml", |
| 16 | "LICENSE", |
| 17 | "README.md", |
| 18 | "npm/codewhale/package.json", |
| 19 | "docs/FLEET.md" |
| 20 | ] |
| 21 | }, |
| 22 | "sourceCandidate": { |
| 23 | "version": "0.10.0", |
| 24 | "providerCount": 50, |
| 25 | "toolCount": 80, |
| 26 | "sandboxBackends": [ |
| 27 | "seatbelt (macOS, when available)", |
| 28 | "bubblewrap (Linux, opt-in when installed)" |
| 29 | ], |
| 30 | "sources": [ |
| 31 | "Cargo.toml", |
| 32 | "crates/tui/src/config.rs", |
| 33 | "crates/tui/src/sandbox/mod.rs", |
| 34 | "web/scripts/derive-facts.mjs" |
| 35 | ], |
| 36 | "providerCountDefinition": "Website-derived ApiProvider labels in this source snapshot, excluding Custom, DeepseekCN and retired Antigravity; includes protocol/plan variants. Not a count of distinct vendors, ProviderKind identities, live catalogs, or released v0.9.11 providers." |
| 37 | }, |
| 38 | "latestPublishedRelease": { |
| 39 | "tag": "v0.9.13", |
| 40 | "version": "0.9.13", |
| 41 | "publishedAt": "2026-09-14T03:48:56Z", |
| 42 | "url": "https://github.com/Hmbown/CodeWhale/releases/tag/v0.9.13", |
| 43 | "sources": [ |
| 44 | "web/data/latest-published-release.json" |
| 45 | ] |
| 46 | }, |
| 47 | "install": { |
| 48 | "recommended": "curl -fsSL https://codewhale.net/install.sh | sh", |
| 49 | "binaries": [ |
| 50 | "codewhale", |
| 51 | "codew" |
| 52 | ], |
| 53 | "channels": { |
| 54 | "npm": "published releases only", |
| 55 | "cargo": "published crates only", |
| 56 | "prebuiltArchives": "published GitHub Releases only", |
| 57 | "cnbMirror": "documented targets only" |
| 58 | }, |
| 59 | "androidTermux": { |
| 60 | "status": "preview", |
| 61 | "npm": "preview", |
| 62 | "requiresMatchingPublishedAssets": true, |
| 63 | "sourceBuild": true |
| 64 | }, |
| 65 | "sources": [ |
| 66 | "README.md", |
| 67 | "npm/codewhale/package.json", |
| 68 | "npm/codewhale/README.md", |
| 69 | "npm/codewhale/scripts/artifacts.js", |
| 70 | "docs/INSTALL.md", |
| 71 | "docs/CNB_MIRROR.md" |
| 72 | ] |
| 73 | }, |
| 74 | "control": { |
| 75 | "modes": [ |
| 76 | "Plan", |
| 77 | "Work", |
| 78 | "Operate" |
| 79 | ], |
| 80 | "permissionPostures": [ |
| 81 | "Ask", |
| 82 | "Auto-Review", |
| 83 | "Full Access" |
| 84 | ], |
| 85 | "shortcuts": { |
| 86 | "mode": { |
| 87 | "chord": "Tab", |
| 88 | "when": "composer empty" |
| 89 | }, |
| 90 | "permissionPosture": { |
| 91 | "chord": "Shift+Tab", |
| 92 | "when": "always (suppressed only under a non-Config modal)" |
| 93 | } |
| 94 | }, |
| 95 | "sources": [ |
| 96 | "docs/MODES.md", |
| 97 | "docs/KEYBINDINGS.md", |
| 98 | "crates/tui/src/settings.rs" |
| 99 | ] |
| 100 | }, |
| 101 | "toolSurface": { |
| 102 | "defaultActive": [ |
| 103 | "read", |
| 104 | "write", |
| 105 | "edit", |
| 106 | "bash", |
| 107 | "agent", |
| 108 | "workflow", |
| 109 | "todo_write", |
| 110 | "create_goal", |
| 111 | "get_goal", |
| 112 | "update_goal" |
| 113 | ], |
| 114 | "schemas": { |
| 115 | "read": [ |
| 116 | "path", |
| 117 | "offset?", |
| 118 | "limit?" |
| 119 | ], |
| 120 | "write": [ |
| 121 | "path", |
| 122 | "content" |
| 123 | ], |
| 124 | "edit": [ |
| 125 | "path", |
| 126 | "edits" |
| 127 | ], |
| 128 | "bash": [ |
| 129 | "command", |
| 130 | "timeout?" |
| 131 | ] |
| 132 | }, |
| 133 | "deferred": { |
| 134 | "Web": [ |
| 135 | "search", |
| 136 | "fetch", |
| 137 | "wait" |
| 138 | ] |
| 139 | }, |
| 140 | "compatibility": { |
| 141 | "legacyAliases": "hidden-exact", |
| 142 | "modelVisible": false, |
| 143 | "toolSearchDiscoverable": false |
| 144 | }, |
| 145 | "activationCache": { |
| 146 | "maximumNames": 8, |
| 147 | "maximumSchemaBytes": 16384, |
| 148 | "scope": "per conversation; each subagent owns an independent policy-filtered cache" |
| 149 | }, |
| 150 | "agentConcurrency": { |
| 151 | "defaultConfigured": 64, |
| 152 | "maximumConfigured": 128, |
| 153 | "maximumAdmitted": 1024 |
| 154 | }, |
| 155 | "sources": [ |
| 156 | "docs/TOOL_SURFACE.md", |
| 157 | "docs/RUNTIME_SIMPLIFICATION_DESIGN.md", |
| 158 | "crates/tui/src/core/engine/tool_catalog.rs", |
| 159 | "crates/tui/src/tools/registry.rs", |
| 160 | "crates/tui/src/config/subagent_limits.rs" |
| 161 | ] |
| 162 | }, |
| 163 | "surfaces": { |
| 164 | "availableInSourceCandidate": [ |
| 165 | "TUI", |
| 166 | "codewhale exec", |
| 167 | "Web client", |
| 168 | "Runtime API", |
| 169 | "MCP", |
| 170 | "Fleet" |
| 171 | ], |
| 172 | "sources": [ |
| 173 | "docs/GUIDE.md", |
| 174 | "docs/WEB.md", |
| 175 | "docs/RUNTIME_API.md", |
| 176 | "docs/MCP.md", |
| 177 | "docs/FLEET.md" |
| 178 | ] |
| 179 | }, |
| 180 | "trust": { |
| 181 | "localRuntime": "runtime, workspace state, and audit log stay on the user's machine", |
| 182 | "hostedProviderBoundary": "the selected hosted provider receives turn context required for inference", |
| 183 | "localInference": "a loopback local-model route can keep inference local", |
| 184 | "telemetry": "Codewhale 0.10.0 counts anonymous usage by default and discloses it at first launch (policy notice version 5, naming Codewhale and PostHog as processors), while the earlier 0.9.11 release asked first; turning it off is a saved choice that later versions keep, an opt-out recorded under the earlier opt-in policy stays off, and showing the notice never records any acceptance on the user's behalf; Codewhale does not collect conversations, code, prompts, files, file/repo/branch names, model content, credentials, or per-turn/per-tool timelines; while on, sessions post aggregate counts and closed enums to the first-party endpoint https://telemetry.codewhale.net/v1/telemetry, whose storage has no IP, country, or geo column and a fixed three-month retention; optional PostHog forwarding requires separate operator configuration and verified IP-safe egress, and its retention is a separate project setting; telemetry_endpoint = \"\" writes only to a local dry-run file; no mandatory hosted relay", |
| 185 | "account": "no account required for the local runtime", |
| 186 | "plan": "Plan centrally refuses file mutation and shell execution; policy-allowed research may contact external services and local session state can still be persisted.", |
| 187 | "sandbox": "Seatbelt is used on macOS when available; Linux bubblewrap is opt-in and must be installed; Windows currently reports no OS sandbox", |
| 188 | "audit": "sensitive events append best-effort to $CODEWHALE_HOME/audit.log (default ~/.codewhale/audit.log); write failures are logged", |
| 189 | "usage": "provider token and cache usage is shown locally when available", |
| 190 | "sources": [ |
| 191 | "docs/PROVIDERS.md", |
| 192 | "docs/MODES.md", |
| 193 | "docs/SANDBOX.md", |
| 194 | "docs/RUNTIME_API.md", |
| 195 | "docs/WEB.md", |
| 196 | "crates/tui/src/audit.rs", |
| 197 | "web/app/[locale]/faq/page.tsx", |
| 198 | "web/app/[locale]/install/page.tsx" |
| 199 | ] |
| 200 | }, |
| 201 | "platforms": { |
| 202 | "prebuilt": [ |
| 203 | "Linux x64", |
| 204 | "Linux arm64", |
| 205 | "macOS x64", |
| 206 | "macOS arm64", |
| 207 | "Windows x64", |
| 208 | "Windows arm64" |
| 209 | ], |
| 210 | "preview": [ |
| 211 | "Android/Termux arm64" |
| 212 | ], |
| 213 | "sources": [ |
| 214 | "docs/INSTALL.md" |
| 215 | ] |
| 216 | }, |
| 217 | "repository": { |
| 218 | "canonical": "https://github.com/Hmbown/CodeWhale", |
| 219 | "mirrors": [ |
| 220 | "https://cnb.cool/codewhale.net/codewhale", |
| 221 | "https://npmmirror.com/package/codewhale" |
| 222 | ], |
| 223 | "creditSources": [ |
| 224 | "CHANGELOG.md", |
| 225 | "docs/CONTRIBUTORS.md", |
| 226 | "web/lib/release-credits.ts" |
| 227 | ], |
| 228 | "requiredCandidateCredits": [ |
| 229 | "@aboimpinto", |
| 230 | "@7jrxt42BxFZo4iAnN4CX", |
| 231 | "@BX166", |
| 232 | "@Lstarsky0", |
| 233 | "@Lujc0523", |
| 234 | "@Statter", |
| 235 | "@sequico", |
| 236 | "@bevis-wong" |
| 237 | ] |
| 238 | }, |
| 239 | "screenshot": { |
| 240 | "readme": "web/public/codewhale-tui-d7a9a1c.png", |
| 241 | "website": "web/public/codewhale-tui-d7a9a1c.png", |
| 242 | "sourceVersion": "0.10.0", |
| 243 | "sourceCommit": "d7a9a1c8c15635a84099d5fc2ee965146cf197c7", |
| 244 | "sourceSha256": "73e56158d6ec6c04933ce787c23c07322ce4d509b54050b54b12d181b09314b8", |
| 245 | "terminal": "real PTY cell capture rendered with Menlo and Apple Symbols", |
| 246 | "theme": "Shoreline dark", |
| 247 | "capture": "Captured on 2026-09-20 from the exact d7a9a1c8c156 development build in an isolated empty workspace: canonical whale mark, new session, composer, Ask permissions, Work mode and model status. Rendered directly from terminal cells without changing the content. No fixture conversations or provider requests. This documents appearance, not a published release or completed task. Ask/Work is the captured posture, not a default claim.", |
| 248 | "sources": [ |
| 249 | "crates/tui/tests/cucumber/launch_card_pty.rs", |
| 250 | "web/public/codewhale-tui-d7a9a1c.png" |
| 251 | ] |
| 252 | } |
| 253 | } |
| 254 |