Skip to content

Agent Plugins

Carrel: A Private Desk in the Library, Set Up by AI

Carrel pairs a full Claude Code research-environment plugin with a portable multi-host Agent Skill, both governed by explicit trust and sensitivity boundaries.

A research desk should emerge from conversation, not from a checklist.

Carrel has a full Claude Code integration and a portable research-vault core. The full integration provides setup agents, commands, hooks, workflow skills and a typed Python CLI. The portable core is available as a plugin for Codex, GitHub Copilot and Kimi Code, as a standalone skill folder, or as an uploaded Claude skill. Portable plugin packaging does not add Claude Code’s agents, lifecycle hooks or typed-CLI integrations.

The full plugin lives at linxule/carrel (opens in a new tab). The portable skill has its own repository at linxule/carrel-skill (opens in a new tab).

The portable skill is not merely the old CLI without Claude. It preserves the conversational onboarding and judgment layer, then uses its bundled runtime for deterministic vault and policy operations. It is a strict subset of the full plugin, which remains the richest Carrel surface. Both keep the premise that made Carrel worth building: the product is not the install; it is the relationship that begins during install.

AGENT PLUGINXule LinFull plugin: Python 3.11+ / uv + JavaScript hooks; portable skill: Python 3.10+ stdlib

Sourcegithub.com/linxule/carrel ↗

Interview first, install second. The setup is the pedagogy.

Current full-plugin release: 0.10.0 (opens in a new tab). This cross-host release needs no vault migration. Updating an installed typed CLI remains separate from installing the portable plugin or skill. Python 3.11 and 3.13 are tested for the full plugin; Python 3.14 installation remains limited by an existing onnxruntime wheel dependency.

The full plugin bootstrap supports macOS, Linux, and Windows. The portable skill runs wherever a host can discover the whole skill folder, execute bundled files, and provide Python 3.10 or newer.

Why it matters

The list of tools at the bottom of an "AI research stack" tutorial may be correct. Following it is still the wrong way to start, because you end up with a configured machine and no understanding of why each piece is there.

Carrel inverts that. In the full plugin, @setup-interviewer asks about the researcher's actual work before installing anything. In a portable host, the same interview is defined in the skill's onboarding workflow. A short stretch reads roughly like this:

Setup-interviewer: What kind of source material do you work with most? Mostly PDFs, mostly interview recordings, mostly notes from the web, or a mix? You: A mix, but heavy on interview audio right now. Setup-interviewer: Good to know. I'll set up coli for local transcription and liteparse for ordinary PDFs. For complex tables or scans, I can offer MinerU or Mistral OCR after we check whether cloud processing is acceptable. Anything sensitive about the audio? Patient interviews? Anything under NDA?

The product of the interview is a stack the researcher can explain. Its record also gives later setup, repair, and research sessions a shared account of the environment and its boundaries.

Two surfaces, one contract

Full Claude Code plugin

The plugin is the complete experience:

  • 15 /carrel-* commands: seven thin wrappers over typed CLI subcommands and eight full skill prompts.
  • Two agents: @setup-interviewer for onboarding and @research-partner for thinking with the researcher.
  • 13 workflow-specific plugin skills, plus the portable Carrel umbrella skill in the repository.
  • Four hooks for environment checks, reflection prompts, per-turn vault context, and a cloud-tool sensitivity checkpoint.
  • An installed carrel CLI with 11 subcommand groups: paper, transcript, capture, google, vault, env, setup-state, trust, automate, batch, and migrate.

The slash commands and hooks call the installed typed CLI. They do not call the portable skill's bundled runtime.

Portable Agent Skill

The standalone skill is a host-neutral operating layer for research vaults. Its lean SKILL.md routes the agent to deeper workflow and contract references. Templates under assets/ scaffold the vault, while scripts/carrel.py and scripts/carrel_core/ provide a stdlib-only Python 3.10+ runtime with no pip dependencies.

That runtime handles low-freedom operations such as vault initialization, profile validation and repair, document filing, batch work, trust checks, policy explanations, automation configuration, reflection logs, feedback export, and collaborator handoffs. Search, synthesis, note design, and the interview remain agent work.

The portable surface does not provide Claude Code slash commands, hooks, agents, marketplace state, plugin migrations, or direct cloud-provider calls. Host adapters may add those capabilities while preserving the portable contracts.

Commands

These commands belong to the full Claude Code plugin. Portable hosts invoke the skill in natural language and let it call scripts/carrel.py when a deterministic operation is needed.

CommandWhat it does
/carrel-setupFull onboarding interview, audit, scaffold a vault
/carrel-statusCheck what's installed and working
/carrel-fixDiagnose environment drift and guide recovery
/carrel-convertConvert PDF / Word / slides to markdown in your vault
/carrel-batchBatch convert or transcribe a folder; file results into the vault
/carrel-captureSave web content to your vault
/carrel-transcribeTranscribe audio to text in your vault
/carrel-automateSet up or update overnight vault maintenance and analytical tasks
/carrel-reflectEnd-of-session reflection
/carrel-mirrorSynthesize your research patterns from reflections and logs
/carrel-cheatsheetRegenerate your reference card
/carrel-shareGenerate a collaborator handbook for this vault
/carrel-teammatesAdd, remove, or review model teammates (Codex, Gemini, Kimi)
/carrel-migrateCheck for updates, show what's new, apply migrations
/carrel-feedbackGenerate an anonymized feedback digest for sharing

Host support

"Full" below means full support for the Carrel surface available on that host. On non-Claude hosts, that surface is the portable core, installed as a plugin or Agent Skill rather than the full Claude Code integration.

Host support: which research environments this tool works in
HostSupportNotes
Claude Code (Desktop Code tab / CLI)Full supportInstall the full plugin for commands, hooks, agents, workflow skills, cloud adapters, and the typed CLI. Standalone skill installation is also supported when the plugin is absent.
Codex CLI / IDE / DesktopFull supportInstall the native portable plugin through the marketplace, or the full skill folder at `.agents/skills/carrel` or `~/.agents/skills/carrel`. Neither path adds Claude Code hooks or agents.
CursorFull supportInstall the portable folder at `.agents/skills/carrel` or `~/.agents/skills/carrel`, with bundled scripts and assets intact.
OpenCodeFull supportUse `.agents/skills/carrel`, `.opencode/skills/carrel`, `~/.agents/skills/carrel`, or `~/.config/opencode/skills/carrel`; allow skill, read, and shell access.
Gemini CLIFull supportWhere Agent Skills are enabled, install at `.agents/skills/carrel` or `.gemini/skills/carrel` and allow access to bundled scripts and assets.
Kimi Code CLIFull supportInstall the native plugin from the repository and reload, or keep the complete portable skill at a supported skill path.
Claude app / Claude.ai chatPartial supportUpload the complete skill as a zip through Customize > Skills. Cloud execution can work with uploaded or connected files, but it cannot directly write an arbitrary local vault.
Claude CoworkFull supportWorks with a connected local folder while Claude Desktop is open. Remote-only sessions without that connection cannot reach the local vault.
Kimi app / Kimi WorkPartial supportSuitable for instructions and documents, but not verified for bundled local scripts. Use Kimi Code when the runtime must write a vault.

For the full integration, use Claude Code or Claude Desktop's Code tab. For another host, choose its portable plugin or install the whole standalone skill folder.

Trust and sensitivity

Trust governs what the agent may do. Sensitivity governs where research data may go. The two are separate, and high sensitivity overrides every trust level.

Carrel uses four trust levels:

  • Advisory: suggest, never act without explicit approval.
  • Consultative: prepare and propose actions, then ask before meaningful writes.
  • Delegated: act on routine work within named boundaries and report afterward.
  • Partnership: exercise broader autonomy only after explicit opt-in.

In the full plugin, the typed CLI enforces its action matrix through commands such as:

carrel trust check vault:move-file --vault .
carrel trust list --vault .

The portable runtime provides the corresponding checks:

python3 scripts/carrel.py trust check vault:move-file --vault .
python3 scripts/carrel.py trust list --vault .

The portable runtime stores and validates trust preferences, but the calling agent must still apply judgment before writes. If a host lacks the full plugin's hooks, its agent must also supply the confirmation step those hooks would have provided.

The sensitivity router follows three rules:

  • High: block cloud tools even when credentials and consent are present.
  • Medium: prefer local tools. A cloud route must be explicitly requested; the full plugin also pauses for human confirmation through its PreToolUse hook.
  • Low: still prefer local tools. Cloud fallback requires consent and an available adapter.

The full plugin implements cloud adapters for MinerU and Mistral OCR conversion, plus Groq and Gemini transcription routes. Mistral OCR is intended for scanned or layout-heavy documents and requires MISTRAL_API_KEY. The portable stdlib runtime can explain policy and report credentials, but it does not call those provider APIs directly. A host adapter must supply the cloud execution.

Install

Choose the surface you intend to use. Installing the portable skill does not install the full plugin, and installing only the typed carrel CLI does not install the portable skill.

Use the one-line bootstrap on a fresh machine or for facilitator-assisted setup.

PlatformCommand
macOScurl -fsSL https://raw.githubusercontent.com/linxule/carrel/main/install.sh | bash
Linuxcurl -fsSL https://raw.githubusercontent.com/linxule/carrel/main/install.sh | bash
Windowsirm https://raw.githubusercontent.com/linxule/carrel/main/install.ps1 | iex

The script installs the prerequisites, Claude Code, the Carrel plugin, and the typed carrel CLI. It is idempotent and safe to re-run.

Then open Claude Desktop, choose the Code tab, select the research folder, and run /carrel-setup.

Portable plugin routes

  • Codex: run codex plugin marketplace add linxule/carrel, then install Carrel from the app's Plugins tab or /plugins in the CLI. An organization may require an administrator to import the marketplace.
  • Copilot CLI: run copilot plugin marketplace add linxule/carrel, then copilot plugin install carrel@carrel. The marketplace name is carrel, not linxule.
  • Kimi Code: run /plugins install https://github.com/linxule/carrel, then /reload.

For Claude's uploaded-skill route, use the released carrel.zip (opens in a new tab), not GitHub's source-code ZIP. Upload it through Customize → Skills with code execution enabled. A standalone skill defers only inside Claude Code when the full Carrel plugin is active; merely installing the typed CLI does not replace the skill.

Verifying installation

For the full plugin, run:

/carrel-status

For the portable skill, ask the host to use Carrel, then verify the bundled runtime from the installed skill directory:

python3 scripts/carrel.py env doctor --vault <vault> --format json

Facilitator-assisted setup

When setting up a researcher's machine in person:

Bootstrap

Choose the full plugin or portable skill before installing anything. For the full plugin, run the platform bootstrap script and resolve any repository-access errors it reports.

Run the interview

In Claude Desktop, run /carrel-setup. In another host, ask the installed Carrel skill to begin onboarding.

Human steps

Help install Obsidian and any local tools the interview selected.

Confirm and teach

Test with a real PDF, inspect the resulting vault, and make the trust and sensitivity choices legible.

Part of Research Memex

The full plugin's interview configures the research environment and then offers optional integrations. The portable skill can scaffold and repair the same kind of vault, but host adapters own system installation, scheduling, and direct cloud execution.

The full plugin environment

These are the foundation of the complete setup:

Optional integrations

The full plugin offers these MCPs only when the interview surfaces a need:

Tools Carrel's interview can install for you, and what prompts it
IntegrationCarrel asks whenNotes
Voxresearcher wants multi-model access (Gemini, GPT, Grok, Kimi, …)Carrel adds Vox at project level if the interview surfaces multi-model needs. Requires at least one provider API key.
MinerUresearcher works with complex / scanned PDFsCarrel adds MinerU at project level for PDF-heavy work. Requires MINERU_API_KEY.
Zotero MCPresearcher uses Zotero for citations and PDF-library workCarrel can add Zotero MCP when citation-library integration is part of the researcher's workflow. Requires Zotero/local library setup and optional Zotero API credentials depending on mode.

The typed CLI also carries a Mistral OCR cloud adapter for scanned or layout-heavy documents, when cloud processing is allowed. It has no Toolkit page of its own because it is a provider route inside the CLI, not an agent-callable server. Its credentials are covered in the API-key guide (opens in a new tab) (docs/api-keys-guide.md).

Each integration needs its own credentials. The portable runtime can record these choices and report configured keys, but provider calls and MCP installation remain adapter work.

What Carrel does not install today

Carrel does not currently install sibling Claude Code plugins, methodology-specific MCP bundles, compute-heavy optional MCPs, or standalone research platforms. These are scope decisions, not architectural limits:

Tools Carrel names but does not install, and how to get them
ToolInstall pathWhy Carrel skips it
Kimi PluginMarketplace or manual installInstall separately from Carrel. Claude Code, Codex and DeepSeek Harness have native surfaces; each host needs its own installation and setup.
MemexMarketplace or manual installInstall separately from Carrel. The standalone CLI supports a shared vault; Claude Code adds lifecycle hooks, while Codex and Kimi Code use portable plugins without those hooks.
Interpretive OrchestrationMarketplace or manual installInstall separately using the target host’s native plugin route. Claude Code, Codex, Copilot CLI and Kimi Code have source-documented integrations; permissions, agents and hook behavior differ.
DeepThonk—Reasoning/coding MCP and CLI. It is not part of Carrel's environment interview today; add manually when a project needs OpenDeepThink-style test-time compute.
Lotus Wisdom—Methodology-specific MCP. Not part of Carrel's general-researcher interview — bundled inside Interpretive Orchestration where it powers /qual-wisdom-check.
Durable ThinkingMarketplace or manual installDeploy and connect separately. Stores explicit reasoning sequences, not the broader project memos held by Memex.
Sequential Thinking—Optional standalone reasoning-record server. Interpretive Orchestration no longer bundles it; /qual-think-through asks for written analytical steps without requiring this MCP.
OpenInterviewer—Standalone web platform; deployed separately on Vercel or self-hosted. Not in Carrel's install scope.
Research Scanner—Standalone skill artifact, not a plugin Carrel knows about.

These tools coexist with Carrel without sharing state. The division is by layer: Carrel sets up and maintains the research environment, while the other tools add methodology, memory, review, compute, or a separate application surface.

cite this page

Lin, X. (2026). Carrel: A Private Desk in the Library, Set Up by AI. Research Memex. https://research-memex.org/docs/toolkit/carrel

@misc{docs-toolkit-carrel-2026,
  author = {Xule Lin},
  title = {Carrel: A Private Desk in the Library, Set Up by AI},
  year = {2026},
  howpublished = {\url{https://research-memex.org/docs/toolkit/carrel}},
  note = {ORCID: 0000-0001-7885-4194}
}

one renderingthe source remains