Polls the TrendingIdeas API for new idea issues and launches Claude Code sessions as VSCode terminal tabs. Authenticates via OAuth 2.1 (PKCE + DCR) against the platform's Supabase authorization server.
What it does
Connects to TrendingIdeas with a real OAuth consent flow — no API keys to paste.
Reads the workspace's .project_idea file to learn which idea it's working on, and polls that idea's idea_issues.
For each issue in backlog / todo state, transitions it to in_progress and spawns a Claude session running claude --worktree <name> --permission-mode plan <prompt>.
Tokens (access + refresh) are stored in VSCode SecretStorage and refreshed transparently.
The .project_idea file
The workspace must contain a .project_idea file at its root identifying which idea's issues to poll:
{ "ideaId": "<idea UUID>" }
A bare UUID (the file containing just the id) also works. This file is created automatically by the MCP initialize_project flow when scaffolding a project from an idea; you can also write it by hand.
Setup
Open the project folder (containing a .project_idea file) in VSCode.
In your workspace or user settings, set the API base:
Run Claude Orchestrator: Connect to TrendingIdeas from the command palette. A browser tab opens to the consent screen — review and click Approve.
Run Claude Orchestrator: Start Polling.
OAuth flow
On first connect:
The extension fetches /.well-known/oauth-protected-resource/api from your configured apiBase, then follows the link to the authorization server's metadata.
It dynamically registers itself with the AS (RFC 7591) using a loopback redirect_uri like http://127.0.0.1:54322/callback. The client_id is cached in SecretStorage.
It generates a PKCE pair, opens the browser to the authorization endpoint with the openid scope, and starts a local HTTP server on the callback port.
After you approve, the AS redirects to the loopback. The extension exchanges the code for tokens at the token endpoint and stores them in SecretStorage.
Subsequent polls refresh the access token automatically when it's within 60s of expiry.
Use Claude Orchestrator: Disconnect to clear all stored credentials (tokens and dynamic-client registration).
Settings
Setting
Purpose
claudeOrchestrator.apiBase
Base URL of the TrendingIdeas API (e.g. https://api.trendingideas.com/api). The idea to poll comes from the workspace's .project_idea file, not a setting.
claudeOrchestrator.stateFilter
Comma-separated issue statuses that trigger a session. Default "backlog,todo".
claudeOrchestrator.pollIntervalMs
Poll interval. Default 30000ms.
claudeOrchestrator.autoStart
Start polling automatically on VSCode launch.
claudeOrchestrator.claudeCommand
Path to the claude binary. Default claude.
claudeOrchestrator.terminalLocation
editor (default) or panel.
Commands
Command
What it does
Connect to TrendingIdeas
Run the OAuth flow and store tokens.
Disconnect
Clear stored tokens and OAuth client registration.
Start Polling
Begin the polling loop. Prompts to connect if no tokens.
Stop Polling
Stop the timer (open terminals remain).
Poll Now
One-shot poll cycle.
List Sessions
Quick-pick of open Claude terminals.
Show Output
Reveal the Claude Orchestrator output channel.
Spawn Test Session
Open a dummy session in the current workspace (no API call).
Development
cd vscode-extension
npm install
npm run build # bundles to dist/extension.cjs via esbuild
npm run typecheck # tsc --noEmit
Open the vscode-extension/ folder in VSCode and press F5 to launch an Extension Development Host with the extension loaded.
Caveats
The callback server binds to one of ports 54322–54325 on 127.0.0.1. If all four are in use, the OAuth flow fails — close whatever else is bound and retry.
The dynamically registered OAuth client persists across VSCode sessions (in SecretStorage). Disconnect to force re-registration with a different redirect URI.
claude must be on PATH (or set claudeOrchestrator.claudeCommand).