Files
backnotprop__plannotator/apps/opencode-plugin
Michael Ramos ea758f9978 Add configurable paste service URL for self-hosting (#582)
* Wire PLANNOTATOR_PASTE_URL through opencode/pi servers and Landing demo link

OpenCode plugin only read PLANNOTATOR_SHARE_URL; add a getPasteApiUrl helper
and thread it into plan/annotate/archive server starts. Pi extension's
serverReview gains the same shareBaseUrl/pasteApiUrl env-var pair already
used by serverPlan/serverAnnotate. Landing.tsx now accepts a shareBaseUrl
prop for self-hosters' demo link. Paste-service CORS defaults grow a
comment clarifying that self-hosters must override ALLOWED_ORIGINS.

* Embed custom paste origin in short URL fragment

When PLANNOTATOR_PASTE_URL is set to a non-default paste service, the
generated short link now includes a base64url-encoded paste param in the
fragment (#key=...&paste=...). The share portal and importFromShareUrl
extract it on load so they can fetch from the right paste backend without
needing a server — fixing broken short links for self-hosters who use a
custom paste service but keep the hosted share portal.

Backward compatible: links without a paste param continue to use the
default or server-provided paste API URL as before.

For provenance purposes, this commit was AI assisted.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-17 22:21:49 -07:00
..

@plannotator/opencode

Annotate plans. Not in the terminal.

Interactive Plan Review for OpenCode. Select the exact parts of the plan you want to change—mark for deletion, add a comment, or suggest a replacement. Feedback flows back to your agent automatically.

Obsidian users can auto-save approved plans to Obsidian as well. See details

Watch Demo

Watch Demo

Install

Add to your opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@plannotator/opencode@latest"]
}

Restart OpenCode. The submit_plan tool is now available.

Slash commands: Run the install script to get /plannotator-review, /plannotator-annotate, and /plannotator-last:

curl -fsSL https://plannotator.ai/install.sh | bash

This also clears any cached plugin versions.

How It Works

  1. Agent calls submit_plan → Plannotator opens in your browser
  2. Select text → annotate (delete, replace, comment)
  3. Approve → Agent proceeds with implementation
  4. Request changes → Annotations sent back as structured feedback

Features

  • Visual annotations: Select text, choose an action, see feedback in the sidebar
  • Runs locally: No network requests. Plans never leave your machine.
  • Private sharing: Plans and annotations compress into the URL itself—share a link, no accounts or backend required
  • Plan Diff: See what changed when the agent revises a plan after feedback
  • Annotate last message: Run /plannotator-last to annotate the agent's most recent response
  • Obsidian integration: Auto-save approved plans to your vault with frontmatter and tags

Environment Variables

Variable Description
PLANNOTATOR_REMOTE Set to 1 / true for remote mode, 0 / false for local mode, or leave unset for SSH auto-detection. Uses a fixed port in remote mode; browser-opening behavior depends on the environment.
PLANNOTATOR_PORT Fixed port to use. Default: random locally, 19432 for remote sessions.
PLANNOTATOR_BROWSER Custom browser to open plans in. macOS: app name or path. Linux/Windows: executable path.
PLANNOTATOR_SHARE_URL Custom share portal URL for self-hosting. Default: https://share.plannotator.ai.
PLANNOTATOR_PASTE_URL Custom paste service URL for self-hosting. Default: https://plannotator-paste.plannotator.workers.dev.
PLANNOTATOR_PLAN_TIMEOUT_SECONDS Timeout for submit_plan review wait. Default: 345600 (96h). Set 0 to disable timeout.

Devcontainer / Docker

Works in containerized environments. Set the env vars and forward the port:

{
  "containerEnv": {
    "PLANNOTATOR_REMOTE": "1",
    "PLANNOTATOR_PORT": "9999"
  },
  "forwardPorts": [9999]
}

If nothing opens automatically, open http://localhost:9999 when submit_plan is called.

See devcontainer.md for full setup details.

Obsidian Integration

Save approved plans directly to your Obsidian vault.

  1. Open Settings in Plannotator UI
  2. Enable "Obsidian Integration" and select your vault
  3. Approved plans save automatically with:
    • Human-readable filenames: Title - Jan 2, 2026 2-30pm.md
    • YAML frontmatter (created, source, tags)
    • Auto-extracted tags from plan title and code languages
    • Backlink to [[Plannotator Plans]] for graph view
image

License

Copyright 2025 backnotprop Licensed under MIT or Apache-2.0.