{
  "markdown": "# STICKY\n<img width=\"924\" height=\"265\" alt=\"image\" src=\"https://github.com/user-attachments/assets/140760b9-e635-461b-a7e1-466b48d98a13\" />\n\n**A board your coding agent can write to — and you can see.**\n\nYour agent forgets between sessions. The usual fix is a `CLAUDE.md` that grows until it's a\nthousand lines of stale rules nobody deletes, quietly costing you tokens on every request.\n\nSTICKY holds **ten active notes**. When the eleventh arrives, the oldest one tumbles to the\narchive on its own. Nothing to prune, nothing to garden.\n\n```bash\nnpx sticky-mcp\n```\n\nThat's it. The board opens in your browser. No account, no cloud, no config.\n\n---\n\n## Wire it to your agent\n\n```bash\nclaude mcp add sticky -- npx sticky-mcp-server\n```\n\nCursor, Cline, Windsurf and anything else that speaks MCP work the same way — point them at\n`npx sticky-mcp-server`.\n\nOr add it to your MCP config by hand:\n\n```json\n{\n  \"mcpServers\": {\n    \"sticky\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"sticky-mcp-server\"]\n    }\n  }\n}\n```\n\n> `sticky-mcp-server` takes no flags on purpose. Some CLIs — Claude Code among them — read\n> `-y` and `--mcp` as their own options and never pass them through, so a command with\n> nothing after it is the only one that works everywhere.\n\nYour agent gets two tools:\n\n- **`post_sticky`** — pin a decision, a constraint, or where the work paused\n- **`read_active_stickies`** — read the board at the start of a session\n\n## The three columns\n\n| | what it holds | reaches the agent |\n|---|---|---|\n| **Pinned** | permanent rules — *\"use C# 12\"*, *\"never touch migrations by hand\"* | always |\n| **Active** | current decisions and where work stopped | always, newest 10 |\n| **Archive** | whatever tumbled off | **never — zero tokens** |\n\nDrag a note between columns. Drop it on **Pinned** and it becomes a permanent rule. Drop it on\n**Archive** and it stops reaching the agent immediately. Double-click to edit, click the cross\nto bin a bad assumption.\n\nThe board updates live as your agent posts — you watch it think.\n\n## What's bounded, and what isn't\n\nBeing precise, because a promise that isn't quite true is worse than no promise:\n\n- **Active is capped at 10** (configurable 5–20). The oldest unpinned note tumbles out.\n- **Pinned is capped at 15.** Rules never tumble — a rule vanishing silently would be worse\n  than the bloat — so instead the board refuses the sixteenth and asks you to retire one.\n- **Archive is unbounded** and costs nothing, because it never reaches the model.\n\nSo the agent's context stays bounded at roughly 25 notes, permanently, no matter how long\nyou work.\n\n## Your data\n\nThe board is a SQLite file at `~/.sticky/store.db`. The web server binds to `127.0.0.1` and\nnothing else. There is no telemetry, no analytics, and no network code in this package beyond\nthe local server itself.\n\n## Options\n\n```\nnpx sticky-mcp                 open the board\nnpx sticky-mcp --mcp           run as an MCP server (agents launch this)\n\n  --cap <n>      active notes before the oldest tumbles (default 10)\n  --port <n>     board port (default 7317)\n  --db <path>    where the board lives (default ~/.sticky/store.db)\n  --no-open      start without opening a browser\n```\n\nWant it floating beside your editor? `chrome --app=http://localhost:7317`\n\n## Requires\n\nNode 22.5 or newer — STICKY uses Node's built-in SQLite, so there's nothing to compile and\nno native modules to install.\n\n---\n\nMIT licensed. Built by [Juvina](https://juvina.ai).\n",
  "bytes": 3464,
  "sha": "f5da12bc1a22671788acc499d6b7481080a985eae50dc4077702b3cbecf18e78",
  "repo_slug": "1picassoai/sticky",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_1picassoai_sticky_634a006f/readme"
}