watchword
CLAUDE
CHATGPT
GEMINI
KILO
CURSOR
COPILOT
CODEX
GROK

Handoff between AI agents.
Any MCP client.

One agent drops a result under a keyword — another picks it up and keeps going. Next chat, another machine, a teammate's setup. No files, no copy-paste, no "can you resend that?"

WORKS WITH EVERY MCP CLIENT

See Watchword in Action

You save any piece of work — a design decision, a research summary, a prompt, a file — into Watchword under a memorable keyword. Any AI tool that speaks MCP can instantly retrieve it by that keyword: in the next chat, on another machine, or by your teammate in a completely different setup. No copy-paste, no shared drives, no "can you resend that?" Just save, name, retrieve.

Features

  • 01

    Stop sending files

    Save work directly from your AI. Your teammate retrieves it from theirs. No attachments, no links, no "which version is this?"

  • 02

    Works across chats and sessions

    Pick up exactly where you left off — even in a new chat window, a new session, or a fresh context. Watchword bridges the gap your AI can't.

  • 03

    Smart keywords, generated for you

    When saving, your AI suggests a relevant, human-readable keyword automatically. You stay in flow, Watchword stays organized.

  • 04

    Works with any AI tool

    Claude, Cursor, Copilot, custom agents — if it speaks MCP, it works with Watchword. No lock-in to one vendor's ecosystem.

  • 05

    No vendor lock-in

    While every AI platform keeps your context trapped inside, Watchword sits outside — neutral, portable, yours.

  • 06

    Shared memory for your whole team

    One Watchword instance, shared across teammates. Everyone's AI works from the same ground truth.

  • 07

    Open source & self-hosted

    Deploy it on your own infrastructure. Your data never touches a third-party server. Available on GitHub.

  • 08

    Handles up to 1 GB per entry

    Large codebases, full research dumps, heavy output — Watchword holds it without complaining.

  • 09

    Auto-expires after 7 days

    Entries clean themselves up by default so your workspace stays lean. Need something to stick around longer — or shorter? Set your own TTL per entry.

Ship It In Three Commands

Go binary, Docker image, or Kubernetes manifest. SQLite for local, PostgreSQL for production. Migrations run at startup.

# build from source
git clone https://github.com/giglabo/watchword.git
cd watchword
go build -o watchword ./cmd/server

# run (SQLite + bearer auth)
WORDSTORE_AUTH_TOKEN=secret ./watchword --config config.yaml

# add to Claude Code
claude mcp add watchword /path/to/watchword -- --config /path/to/config.yaml
DEPLOY · 5 MINUTES TO PROD

From localhost to a public MCP endpoint

One-click Blueprint deploy on render.com. Watchword runs in a container, talks to a Turso (libSQL) database over HTTPS, and authenticates every MCP client with a bearer token or JWT — your URL is ready for Claude.ai, Cursor, and ChatGPT in minutes.

  • Push-button render.com Blueprint — fork, set 3 secrets, deploy
  • Turso / libSQL persistent storage — free tier covers ~500 MB and 1B row reads
  • Bearer tokens or JWT / JWKS via Cloudflare Worker OAuth out of the box
  • Auto HTTPS, custom domain, zero-downtime redeploys on every git push
render.comdocker
tursolibsql
jwt / bearerhttps
STARTS AT$0RENDER FREE TIER + TURSO FREE TIER
TEAM & ENTERPRISE READINESS

Your MCP server is a backdoor to your data. Treat it like one.

The moment your team's MCP server holds prompts, files, or credentials, every agent connection becomes an attack surface. The auth patterns below aren't Watchword-specific — they're the same playbook you'll need for every MCP server your team or company ships. Bearer tokens get you started; JWT/OIDC against Auth0, Keycloak, or Cloudflare Access is what survives an audit.

01

Per-user identity, not per-app secret

JWT identity claims map to your IdP — Auth0, Keycloak, Okta, Cognito, or Cloudflare Access. Audit logs name humans, not service accounts. SSO and MFA come for free.

02

Rotation without redeploys

JWKS pulls signing keys live from your IdP. Revoke a user, rotate a key, scope a tenant — none of it touches your MCP server config or the agents that consume it.

03

Zero standing tokens

Short-lived JWTs plus refresh tokens replace static bearer secrets in agent configs. Nothing to dump from a developer laptop. Compliance teams stop asking awkward questions.

Same patterns work for Watchword and for any MCP server you build internally. Get them right once.

PAID GUIDE · PDF + COPY-PASTE CONFIGS

MCP Auth Setup Guide — Watchword Example

Production-grade authentication for Watchword — and the same blueprint for any MCP server your team ships. Bearer tokens, JWT/JWKS against Auth0, Keycloak, Cognito, and Cloudflare Access, OAuth 2.1 + PKCE for AI agents and chat clients discovery, and reverse-proxy patterns. Every step uses Watchword's real env vars, not pseudo-code.

  • Bearer tokens (WORDSTORE_AUTH_TOKENS) for solo dev — and the precise signals that tell you to graduate from them
  • JWT/JWKS validation against Auth0, Keycloak, Cognito, and Cloudflare Access — drop-in configs you can copy
  • Cloudflare Worker OAuth 2.1 proxy: Authorization Code + PKCE + Dynamic Client Registration (RFC 7591) for Claude.ai connectors
  • RFC 9728 Protected Resource Metadata so MCP clients auto-discover your authorization server
  • Audience scoping (WORDSTORE_AUTH_JWT_AUDIENCE), per-user identity claims, and audit logs that name humans
  • Reverse-proxy patterns: Caddy, Nginx, Traefik in front of Watchword — or any MCP server you build
  • 27 production-verified setup gotchas across Auth0, Keycloak, and Cloudflare Workers — including the 7 Auth0 DCR blockers that aren't in the official docs
How to ship MCP auth that survives a security review

Frequently Asked Questions

Model Context Protocol is an open spec for connecting AI agents to tools and data. Any MCP-compatible client (Claude Code, Cursor, ChatGPT via MCP bridges, etc.) can call Watchword to store and retrieve data — so the same memory works across every tool you use.

No. Watchword uses SQL LIKE patterns over human-readable keywords. It's fast, predictable, and you don't have to pick an embedding model. If you want semantic search, pair it with your own vector DB — Watchword stays focused on being a deterministic, keyword-addressable store.

SQLite for local development and single-user installs — zero setup. PostgreSQL for production and multi-replica Kubernetes deployments. Same code, same features, migrations run automatically at startup.

Auth is built into the open-source server: bearer tokens (WORDSTORE_AUTH_TOKENS), JWT/JWKS validation against any IdP — Auth0, Keycloak, Cognito, Cloudflare Access — and RFC 9728 protected resource metadata so MCP clients can auto-discover your authorization server. The code is MIT, so you can wire it all up from the README and the source if you have the time. The paid setup guide just bundles the production-tested configs, the Cloudflare Worker OAuth proxy, and the 27 setup gotchas you'd otherwise hit yourself.

Yes. Watchword speaks OAuth 2.1 + PKCE with Dynamic Client Registration (RFC 7591) via the included Cloudflare Worker, and publishes RFC 9728 / RFC 8414 metadata. Claude.ai's connector flow discovers your server, registers itself, and authenticates each user against your IdP — no shared bearer token, no per-user setup in agent configs.

The server is MIT-licensed and free to self-host — laptop, VPS, render.com free tier, or Kubernetes. Storage is your own (SQLite, Postgres, or Turso's free tier). The auth setup guide is the only paid piece — see the price above; everything it teaches is reproducible from the source code if you prefer DIY.

NEED A HAND?

Want help wiring up OAuth or JWT?

Auth0, Keycloak, Cognito, Cloudflare Access, or a Cloudflare Worker OAuth proxy — tell us what you have and we'll help you ship a production setup. We reply with a quote and a calendar link within one business day.

Give Your Agents a Memory

Clone it, run it, point your agents at it. Your prompts stop disappearing at the end of every session — and every AI tool you use reads from the same keyword-addressable store.

Heretic Lazy Shot
SHOT WITH HERETIC LAZY SHOT

Your agent can take the screenshots too

Every shot below was captured, annotated and beautified by Heretic Lazy Shot — a desktop screenshot app with a built-in MCP server. Same protocol as Watchword: your agent calls a tool, you get the file.

Call it over MCP

Ask in plain language; the agent picks the tool. Every call runs locally — no upload, no cloud.
See the bugcapture_window

You:Fix the layout bug in "My next Amazing Selling Application" — the logging items table is offset and overlaps the buttons. Take a shot of the window so you can see it.

Tool call
capture_window({
  "query": "My next Amazing Selling Application",
  "keyword": "logging-table-overlap"
})
Returns
{ "id": "logging-table-overlap", "path": "…/logging-table-overlap.png" }
Mark it up for the ticketadd_markers

You:Mark what is wrong: 1 on the shifted table, 2 on the buttons it covers.

Tool call
add_markers({
  "screenshot_id": "logging-table-overlap",
  "markers": [
    { "x": 120, "y": 80,  "label": "1" },
    { "x": 340, "y": 200, "label": "2" }
  ]
})
Returns
{ "keyword": "logging-table-overlap-annotated" }
Read the hidden rowsocr_screenshot

You:Read the log rows the buttons cover — the app is in English and Spanish.

Tool call
ocr_screenshot({
  "id": "logging-table-overlap",
  "lang": "eng+spa",
  "format": "text"
})
Returns
{ "text": "Timestamp · Level · Message · Retry…" }
Lifetime from€14.99€29.98
Launch price — 97 of 100 licenses left14-day free trial

Pay once, own forever. macOS and Windows. Screenshots and metadata stay on your machine.