Skip to main content
The Raindrop OpenCode plugin (@raindrop-ai/opencode-plugin) instruments OpenCode so that every LLM response and tool call is sent to Raindrop. You don’t need to add any per-call instrumentation.

Installation

Add the plugin to your OpenCode config. Config file locations: opencode.json in your project, or ~/.config/opencode/opencode.json for a global config. Add this to the config file:

Quick Start

  1. Add the plugin to your OpenCode config (see above).
  2. Set your write key in the environment where OpenCode runs:
  3. Start OpenCode. Sessions are automatically traced to Raindrop.
After that, each session appears in your Raindrop dashboard with turn-by-turn input/output, tool spans, and LLM metadata.

Configuration

Required: set your Raindrop write key in the environment where OpenCode runs:
Optional: provide additional metadata to be included with every event

System Prompt Capture

To include the system prompt in trace spans (visible in the Trace tab when you click an LLM span), enable the captureSystemPrompt option:
Or via config file (~/.config/opencode/raindrop.json or .opencode/raindrop.json):
When enabled, the assembled system prompt is stored as a gen_ai.prompt.0.* span attribute and rendered as a “system” labeled section in the span detail view. This is useful for tracking which system prompt version was used in a given conversation. Defaults to false — no system prompt data is captured unless explicitly enabled. System prompts longer than 32KB are automatically truncated.

Projects

If your org has multiple projects, route this plugin’s events to a specific one by setting its slug via RAINDROP_PROJECT_ID or the project_id config-file key:
Or via config file (~/.config/opencode/raindrop.json or .opencode/raindrop.json):
This sets the X-Raindrop-Project-Id header on every event. Omit it (or pass default) to use your org’s default Production project, which is the existing behavior. Single-project orgs need nothing new.

Context & Metadata

Per-Call Context Override

You can override the environment-set metadata on a per-prompt basis by passing a metadata field on any text part when calling session.prompt():
Supported fields: Merge behavior:
  • Prompt-level values override RAINDROP_EVENT_METADATA for that turn
  • properties are shallow-merged (prompt-level wins on conflicts)
  • convoId is always the OpenCode session ID

Identifying Users

To associate traits with a user, use our TypeScript SDK:

Troubleshooting

Events not appearing in the dashboard

  1. Check your write key — Make sure RAINDROP_WRITE_KEY is set in the environment where OpenCode runs. Use the Raindrop dashboard to confirm events and traces after your first session.