Skip to content

Chat with your own Kiro plan, and fall back between chats - #155

Open
betodoescher wants to merge 4 commits into
Louis-CFM:mainfrom
betodoescher:kiro-chat-upstream
Open

betodoescher wants to merge 4 commits into
Louis-CFM:mainfrom
betodoescher:kiro-chat-upstream

Conversation

@betodoescher

@betodoescher betodoescher commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #151 (Cursor chat): this branch contains its commits. Once #151 is merged, only the last commit remains here.

What

  • Kiro as a chat provider, through the official Kiro CLI on the user's own plan:
    kiro-cli chat --no-interactive --trust-tools= (no tools, answers only) in a private
    folder, --resume from the second turn. Text output, because stream-json needs the
    v2 engine, which does not resume conversations yet.
  • Settings → Chat: each provider (Cursor, Kiro, Claude API) is turned on or off. The
    turned-on ones are tried in that order until one answers — out of credits on Cursor,
    Kiro takes over. Each keeps its own conversation.
  • Settings → Kiro: CLI status, model list (--list-models), install / kiro-cli login hint.
  • Island quick settings: a Kiro status dot next to Claude Code, API and Cursor.
  • CLI lookup in ~/.local/bin, prompt building and ANSI stripping are shared with Cursor.
  • No telemetry, no new dependency, nothing stored on disk besides the chosen models.

Testing

  • Ubuntu with kiro-cli 2.20.1 signed in: multi-turn chat keeps context, model switch,
    fallback from Cursor to Kiro.
  • cargo test -p coucou (Kiro answer/error parsing, model list), tsc --noEmit.
image

Made with Cursor

betodoescher and others added 4 commits October 2, 2026 16:22
Cursor has no public chat API, and calling its private endpoints is against
its terms. The supported way is the Cursor CLI: sign in once with
`agent login`, then each chat turn runs
`agent -p --output-format json --mode ask --trust --model <m>`, resuming the
same session for the next turns.

- Read-only (`--mode ask`), in an empty private folder under the local data
  directory, so the agent has nothing of the user's to read. The folder is
  always the same because `--resume` is scoped to it.
- 120 s timeout, the child is killed on drop. An optional API key goes
  through CURSOR_API_KEY in the environment (never argv) and lives in the
  Secret Service / Credential Manager like every other key.
- Text files ride along inline on the first turn; images and PDFs say they
  are not supported with Cursor yet.

Settings -> Cursor: "Chat answers with" Claude (API key) or Cursor (your
plan), the model list from `agent models`, sign-in status from
`agent status`, a "Sign in with Cursor" button and the optional key. Claude
stays the default.

Co-authored-by: Cursor <cursoragent@cursor.com>
…acks it

Co-authored-by: Cursor <cursoragent@cursor.com>
…and settings

Co-authored-by: Cursor <cursoragent@cursor.com>
Adds the Kiro CLI as a chat provider next to Cursor and the Claude API:
`kiro-cli chat --no-interactive --trust-tools=` (no tools, answers only) in a
private folder, with `--resume` from the second turn. The text output is used
because stream-json needs the v2 engine, which does not resume yet.

Settings -> Chat now turns each provider on or off. The turned-on ones are tried
in order (Cursor, Kiro, then the API) until one answers, so running out of
credits on one plan hands the chat to the next. A Kiro section shows the CLI
status and models, and the island shows a Kiro dot next to Cursor.

Co-authored-by: Cursor <cursoragent@cursor.com>

This branch has not been deployed

No deployments
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