Repository navigation
Releases
v0.11.0
New
- Add
--web-searchand--web-fetchto chat for Straitly's hosted tools. The
provider runs them and returns a finished answer, so no tool loop is needed. - Add a per-provider web tool map. Straitly is enabled; every other preset and custom
endpoint fails with a clear error before any request.callm rawcan still send a
provider's own tool format. - Report sources separately from the answer: text and streaming output list them on
stderr, leaving stdout answer-only;--result-jsongains an additivesources
array;--jsonkeeps the originalannotations.
Changed
- Completion validation accepts web tool records only when the matching request
enabled web tools and the answer finished. Other tool calls and atool_calls
finish reason still fail. - The agent skill marks web tools as paid: agents must get explicit user confirmation
before each use and must not enable them by default in scripts or pipelines. - Release notes are now published from the tagged version's
CHANGELOG.mdsection,
and a release fails if that section is missing.
Cost and known limits
- Each search or fetch is billed on top of tokens, and the model chooses how many to
run.--stats,--jsonand--result-jsonreport the total the provider charged. - Straitly did not apply
--schemawhen web tools were on (three models tested). Ask
for JSON in the prompt and use--validate-schema FILE; failed validations are billed. - Sources are provider-reported and can include pages the answer did not use.
Maintenance
- Keep local development audit records out of version control and remove public
documentation links to them. Preserve local copies for development use.
What's Changed
- Add Straitly hosted web search and fetch (v0.11.0) by @steamvogue in #1
New Contributors
- @steamvogue made their first contribution in #1
Full Changelog: v0.10.0...v0.11.0
v0.10.0
-
Add regular-file prompt/system inputs, raw
--body-file FILE|-, and a combined
64 MiB request limit with a lower--max-input-bytesoverride. Raw bodies now
require one valid JSON value and reject extra/conflicting body arguments. -
Add
--schemaprovider constraints plus offline JSON Schema validation, and
--validate-schemafor local-only checks. Buffer and validate before publishing;
block external schema references. Builds now use pinned Go modules for validation.
OpenRouter schema requests require provider parameter support; local validation
remains mandatory even after a successful API response. -
Add strict, versioned
--result-jsonstatus/answer/model/finish/refusal/usage/timing
envelopes, including request/completion/schema errors. Keep original--json. -
Add an optional Python mini harness with sequential manifests, atomic artifacts,
hashes/journal/resume and one call per step. Test the harness against localhost
mocks in CI; no automatic retries, repairs or model-controlled tools. -
Make live tests free-only: verify all catalog prices are zero before at most two
explicit OpenRouter:freecalls, with no paid fallback. Record a separate
24-call free-model evaluation; leave production provider/model defaults unchanged. -
Remove the Go race runtime's repeated one-second exit delay from CLI fixture
subprocesses while retaining detector settings, keeping the expanded CI suite
within its existing 60-second timeout. -
Reject truncated, refused, filtered, tool-dependent and empty text completions.
Add--strictfor terminal-reason enforcement (including JSON), and
--allow-emptyfor intentionally empty answers. Plain--jsonretains diagnostic
envelope semantics. Partial streamed output can precede a failure. -
Preserve literal
<think>content by default; add explicit--parse-think.
Propagate answer/reasoning/statistics/raw/info/table/help/version write errors,
including renderer short writes and flush failures. -
Include Anthropic cache reads and cache creation in processed-input statistics
without adding cache categories again to compatible-provider totals. -
Add bounded model profiles for native Claude adaptive thinking/effort and known
GPT-6 reasoning, sampling and token-limit parameters. Keep provider/model defaults;
explicit caps remain unchanged. Legacy/manual and adaptive effort can consume
different amounts of reasoning; evaluate the new behavior on your workload. -
Reject native Anthropic editor exports with native-adapter guidance; retain
table and lossless JSON catalogs. Improve redacted missing-key diagnostics. -
Test supported Go 1.26/1.27 patches in CI; build releases with Go 1.27.2.
Keep the Go 1.22 module language minimum. -
Correct provider-specific examples and add guarded JSON publication. Free-only
live tests require valid answer/usage/finish metadata and zero reported cost. -
Validate repairs with unit/local mock tests and synthetic fixtures. Paid provider
generation and editor imports were not executed; free-model evaluations do not
establish compatibility with direct paid providers.
Download the archive for your platform and verify it with checksums.txt. The CLI is a standalone binary; the optional mini harness requires Python 3 on Linux/macOS.
Full Changelog: v0.9.0...v0.10.0
v0.9.0
v0.8.0
v0.7.1
v0.7.0
callm v0.6.0
Kimi Code subscribers can now select the coding API with --kimi and KIMI_API_KEY. The preset uses https://api.kimi.com/coding/v1 and defaults to kimi-for-coding.
export KIMI_API_KEY="your-kimi-code-key"
callm --kimi "Review this Go function"- Supports chat, SSE streaming, models, info, and raw requests through the OpenAI-compatible client, with existing key, URL, model, and timeout overrides.
- Alias change:
--kimipreviously selected Moonshot. Use--msor--moonshotwithMOONSHOT_API_KEYfor the separate pay-as-you-go Moonshot API. - Subscription statistics show server-returned usage and cost only; no per-call subscription price is inferred.
- Updated CLI help, README, examples, and bundled agent skill.
Validation: local mock tests, go vet, ShellCheck, and actionlint passed. GitHub CI passed, including the Linux amd64 race detector and builds for Linux/macOS amd64 and arm64, and Windows amd64. Live subscription access was not tested.
callm v0.5.0
- All API requests now identify the project with the default User-Agent
CallM (Call-LLM; +https://github.com/steamvogue/callm). - Added
--user-agentto chat, models, info, and raw commands, with
CALLM_USER_AGENTas the environment/configuration-file default override.
Explicit flags win; an empty environment value keeps the project default.
--user-agent ""omits the header; control characters are rejected. - Updated CLI help, README examples, and agent skills.
Validation: local mock HTTP tests cover defaults, overrides, omission, and invalid values across all API commands and both streaming protocols; catalog pagination is also checked. Existing regression probes and go vet passed.
callm v0.4.0
- Added OrcaRouter with
--orca,ORCA_API_KEY, base URL
https://api.orcarouter.ai/v1, and default modelorcarouter/auto.
--orremains OpenRouter. All existing timeout defaults and overrides apply. - Supports chat, SSE streaming, models, info, raw requests, and
--orca --claude.
--effortpasses OrcaRouter’sreasoning_effort;--thinking-budgetrejects
with guidance to use effort instead. Model capabilities remain provider-dependent. - OrcaRouter
--statsrequests billed cost throughX-OrcaRouter-Include-Cost
and readsusage.cost_usd, including streaming usage. - Updated CLI help, README, agent skill, and optional live-test provider list.
Validation: local mock API tests, 91 regression probe scenarios, go vet, actionlint, and ShellCheck passed. No billed OrcaRouter inference was performed.
callm v0.3.0
This release fixes stalled calls, dropped input, silently ignored options, and
misleading success results across chat, streaming, model discovery, and raw requests.
Timeouts and input
- All API calls default to a 300-second total timeout.
--timeoutaccepts
seconds or durations (600,10m);0disables it. - Added
--header-timeoutand streaming chat--idle-timeout, both inheriting
--timeoutunless explicitly overridden. Zero disables each selected limit. - Added independent
--stdin-timeout(default 300 seconds) and--no-stdin.
Pipes are read through EOF on all platforms, including delayed producers;
cancellation interrupts both input and HTTP waits. - Bound input files/stdin/buffered responses to 64 MiB and SSE events to 8 MiB.
Correctness and provider support
- Parse full SSE events, reject malformed or truncated streams, and stop Anthropic
streams immediately atmessage_stop. HTTP and API errors return failure. - Honor configured clients and endpoint overrides consistently. Follow Anthropic
model catalog pagination under one deadline and detect repeated cursors. - Update Claude defaults to
claude-sonnet-4-6directly and
anthropic/claude-sonnet-4.6through Straitly/OpenRouter. - Convert Anthropic images correctly, preserve top-p, validate thinking budgets,
and preserve explicit token caps. Unsupported JSON-object requests fail explicitly. - Apply reasoning display controls to both output modes. Preserve original provider
JSON and large numbers;--json --statsretains separate stderr statistics. - Request streaming usage for
--stats; handle string costs and unknown usage,
prices, and context sizes without reporting missing data as zero. - Accept provider flags before subcommands and honor
--stream=false. Reject
malformed numbers, conflicting flags, and unsupported provider combinations.
Normalize token limits for OpenAI o-series models.
Compatibility changes
- Missing provider keys no longer fall back to another provider's credentials.
Use the selected provider's key,CALLM_API_KEY, or an explicit key override.
Cross-origin redirects are rejected before credentials reach the destination. - Streaming and reasoning display default on only when stdout is a terminal.
Reasoning goes to stderr; final answers go to stdout. - Automation relying on incomplete streams, silently dropped settings, or API
errors returning success must now handle nonzero exit codes.
Documentation and validation
- Synchronize CLI/subcommand help, README, examples, and the callm agent skill with
current options, aliases, defaults, and configuration precedence. Add a README/help
consistency test and documented maintenance rules. - Add mock regression coverage and 91 local CLI scenarios; improve live-test
assertions and exposemake test-race, enabled in Linux amd64 CI. - Release archives cover Linux amd64/arm64, macOS amd64/arm64, and Windows amd64,
with SHA256 checksums. Mock validation does not establish live provider generation
quality, billing, or account-specific model availability.