SCM Providers
Claudette shows pull request state and CI check results for every workspace, right in the sidebar. No in-app sign-in required — it wraps the CLI tools you already have authenticated (gh, glab).
What You See
Section titled “What You See”Sidebar badges — each workspace displays a git icon indicating its PR state:
- Open — arrow icon, colored by CI status (green = passing, yellow = running, red = failing)
- Draft — dashed circle icon
- Merged — merge icon in purple
- Closed — closed-PR icon, muted
- No PR — dashed circle icon, muted
PR status banner — a color-coded banner appears above the right sidebar tabs showing the PR number (clickable), a status icon, and a human-readable label like “Ready to merge” or “CI failed.”
SCM tab — the right sidebar includes a dedicated SCM tab with:
- PR title, author, base branch, and a link to open in your browser
- A list of CI checks with individual pass/fail/pending status
- Create PR and Merge PR buttons for common actions without leaving the app
How It Works
Section titled “How It Works”Claudette auto-detects your SCM provider by matching git remote get-url origin against known hostname patterns (e.g., github.com, gitlab.com). A background polling loop fetches PR and CI data every 30 seconds across all active workspaces — no manual refresh needed.
All data is cached in memory, keyed by repository and branch. Concurrent CLI calls are capped at 4 to avoid overwhelming your machine.
Requirements
Section titled “Requirements”| Provider | CLI tool | Auth |
|---|---|---|
| GitHub | gh | gh auth login |
| GitLab | glab | glab auth login |
If the CLI isn’t installed or authenticated, the SCM tab shows a helpful status message instead of failing silently.
Auto-Archive on Merge
Section titled “Auto-Archive on Merge”Enable Settings > General > Archive on merge to automatically archive a workspace when its PR is detected as merged. The sidebar cleans itself up without manual intervention.
Custom Plugins
Section titled “Custom Plugins”SCM providers are Lua plugins that live in ~/.claudette/plugins/<name>/. Each plugin has a plugin.json manifest declaring which CLI it wraps, which hostnames it handles, and which operations it supports.
GitHub and GitLab ship as bundled plugins — they’re seeded to disk on first launch and kept up to date automatically. If you’ve customized a bundled plugin, your changes are preserved.
The plugin sandbox enforces strict security:
- CLI allowlist — plugins can only invoke the executables declared in their manifest
- 30-second timeout — per CLI invocation
- No filesystem or network access — all I/O goes through the host API
Environment Provider Plugins
Section titled “Environment Provider Plugins”The same Lua plugin runtime powers a second plugin kind: env-provider. Each env-provider activates when the workspace’s worktree contains the file or signal it watches for, then merges its environment variables into every process Claudette spawns inside the worktree (terminals, agent subprocesses, MCP servers).
Bundled env-providers:
| Plugin | Activates when | Required CLI |
|---|---|---|
env-direnv | The worktree has an .envrc | direnv |
env-mise | The worktree has a mise.toml, .mise.toml, or .tool-versions | mise |
env-dotenv | The worktree has a .env file | None (parsed in-process) |
env-nix-devshell | The worktree has a flake.nix with a default devshell | nix |
Toggle individual providers in Settings > Plugins. Each plugin’s manifest declares any user-configurable settings — for example, env-direnv exposes auto_allow to skip the per-path direnv allow safeguard if you’d rather trust your own .envrc files automatically.
If a bundled provider’s required CLI isn’t installed (e.g. nix missing on a non-Nix host), Claudette marks it not installed in the Environment panel and silently skips it on every workspace spawn — no toast, no error. The toggle is locked in this state. CLI availability is probed once at startup, so if you install the underlying tool while Claudette is running, restart the app to pick up the change.
When Claudette creates a new workspace, the repo setup script (if any) runs first with the system shell environment — deliberately, so a setup script can prime env-provider state itself (direnv allow, mise trust && mise install, generate a .env from a template, nix flake check) before any provider tries to read it. Claudette then resolves the env-providers, and only after that does the workspace appear as ready. Selecting an existing workspace performs the same env warmup but skips the setup script (it already ran on create). In both cases, terminal tabs, agent subprocesses, and MCP servers spawn into the merged environment once the warmup completes.
The merged environment is computed once per worktree and reused across processes; if you change .envrc or mise.toml, terminate the running agent or terminal tab and Claudette picks up the new env on the next spawn.
Drop your own env-provider into ~/.claudette/plugins/<name>/ (one plugin.json + one init.lua) and Claudette discovers it at startup.