Skip to content

feat: ir cowork — InferRoute's everyday-work surface, powered by goose - #16

Merged
henrydeclety merged 1 commit into
masterfrom
feat/cowork-goose
Jun 10, 2026
Merged

feat: ir cowork — InferRoute's everyday-work surface, powered by goose#16
henrydeclety merged 1 commit into
masterfrom
feat/cowork-goose

Conversation

@henrydeclety

Copy link
Copy Markdown
Collaborator

Summary

Adds ir cowork — a config-only integration with goose (Apache-2.0), the open-source agent with a desktop app + CLI — as InferRoute's point-and-click surface for non-terminal work, alongside ir (Claude Code). This is the "A + B" of the client-surface plan: docs + a CLI subcommand.

ir cowork:

  • wires goose to InferRoute (provider anthropic, your saved key, routing through the on-device recorder daemon when it's up, else the cloud) and launches it — the desktop app if installed, else the CLI;
  • flags: --cli, --configure-only, --model NAME;
  • is config-only (no fork): owns a small set of goose config/secret keys (config.yaml + secrets.yaml 0600, + GOOSE_DISABLE_KEYRING on Linux), merges them non-destructively, and re-asserts them every launch so goose updates can't drift it;
  • tags traffic with x-inferroute-client: cowork for dashboard attribution.

Also:

  • ir setup now offers it as an opt-in final step ("a desktop app powered by goose");
  • ir help documents it; docs/cowork.md covers usage + manual wiring;
  • adds pyyaml (to read/merge goose's YAML).

Testing

  • configure() verified: writes the right config.yaml/secrets.yaml (mode 600)/environment.d, resolves model aliases (glmzai-org/GLM-5.1-TEE), and is idempotent + non-destructive (preserves existing goose keys like theme).
  • Full entry-point path verified (ir cowork --help, --configure-only), the no-login guard fires, and the ir setup prompt path imports/skips cleanly.
  • Manually verified earlier this cycle that goose (CLI + Desktop) routes through InferRoute via exactly this config.

Notes

  • No version bump here — leaving the PyPI release (version + GitHub Release) as a separate step.
  • goose's in-app cost readout depends on block/goose#9719 (green, awaiting merge); until then routing/billing work but the cost label may read "unavailable" — docs/cowork.md notes this.

🤖 Generated with Claude Code

Adds a config-only integration with goose (block/goose, Apache-2.0) — the
open-source agent with a desktop app + CLI — as InferRoute's point-and-click
surface for non-terminal work, alongside `ir` (Claude Code).

- `ir cowork` wires goose to InferRoute (provider=anthropic, your key, routing
  through the on-device recorder daemon when present, else the cloud) and
  launches it — the desktop app if installed, else the CLI. Flags: --cli,
  --configure-only, --model.
- Config-only, no fork: owns a small set of goose config/secret keys
  (config.yaml + secrets.yaml, mode 600, + GOOSE_DISABLE_KEYRING on Linux) and
  re-asserts them every launch, so goose updates can't drift it. Merges
  non-destructively (preserves the user's other goose settings). Tags traffic
  with x-inferroute-client: cowork for dashboard attribution.
- `ir setup` now offers it as an opt-in final step ("a desktop app powered by
  goose"); `ir help` documents it; docs/cowork.md covers usage + manual wiring.
- Adds pyyaml dependency (reads/merges goose's YAML config).

Version bump + PyPI release left to a separate step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@henrydeclety
henrydeclety merged commit e7c937d into master Jun 10, 2026
@henrydeclety
henrydeclety deleted the feat/cowork-goose branch June 10, 2026 21:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant