Back to the catalog

io.github.1picassoai/sticky

Persistent memory and context for your agent, on a board you can see. Capped, so it stays small.

Open source Open in the app JSON README (API)

About

Persistent memory and context for your agent, on a board you can see. Capped, so it stays small.

Details

Kind
MCP servers
Topic
AI, RAG & memory
Publisher
1picassoai
Origin
official
Category
ferramentas
Transport
local
Version
0.2.2
Last push
2026-09-08T17:16:03Z
Repository state
ativo
Language
JavaScript
Added
2026-09-08 17:04:42
Updated
2026-09-08 18:04:58
Origin id
io.github.1picassoai/sticky

README

# STICKY
<img width="924" height="265" alt="image" src="https://github.com/user-attachments/assets/140760b9-e635-461b-a7e1-466b48d98a13" />

**A board your coding agent can write to — and you can see.**

Your agent forgets between sessions. The usual fix is a `CLAUDE.md` that grows until it's a
thousand lines of stale rules nobody deletes, quietly costing you tokens on every request.

STICKY holds **ten active notes**. When the eleventh arrives, the oldest one tumbles to the
archive on its own. Nothing to prune, nothing to garden.

```bash
npx sticky-mcp
```

That's it. The board opens in your browser. No account, no cloud, no config.

---

## Wire it to your agent

```bash
claude mcp add sticky -- npx sticky-mcp-server
```

Cursor, Cline, Windsurf and anything else that speaks MCP work the same way — point them at
`npx sticky-mcp-server`.

Or add it to your MCP config by hand:

```json
{
  "mcpServers": {
    "sticky": {
      "command": "npx",
      "args": ["-y", "sticky-mcp-server"]
    }
  }
}
```

> `sticky-mcp-server` takes no flags on purpose. Some CLIs — Claude Code among them — read
> `-y` and `--mcp` as their own options and never pass them through, so a command with
> nothing after it is the only one that works everywhere.

Your agent gets two tools:

- **`post_sticky`** — pin a decision, a constraint, or where the work paused
- **`read_active_stickies`** — read the board at the start of a session

## The three columns

| | what it holds | reaches the agent |
|---|---|---|
| **Pinned** | permanent rules — *"use C# 12"*, *"never touch migrations by hand"* | always |
| **Active** | current decisions and where work stopped | always, newest 10 |
| **Archive** | whatever tumbled off | **never — zero tokens** |

Drag a note between columns. Drop it on **Pinned** and it becomes a permanent rule. Drop it on
**Archive** and it stops reaching the agent immediately. Double-click to edit, click the cross
to bin a bad assumption.

The board updates live as your agent posts — you watch it think.

## What's bounded, and what isn't

Being precise, because a promise that isn't quite true is worse than no promise:

- **Active is capped at 10** (configurable 5–20). The oldest unpinned note tumbles out.
- **Pinned is capped at 15.** Rules never tumble — a rule vanishing silently would be worse
  than the bloat — so instead the board refuses the sixteenth and asks you to retire one.
- **Archive is unbounded** and costs nothing, because it never reaches the model.

So the agent's context stays bounded at roughly 25 notes, permanently, no matter how long
you work.

## Your data

The board is a SQLite file at `~/.sticky/store.db`. The web server binds to `127.0.0.1` and
nothing else. There is no telemetry, no analytics, and no network code in this package beyond
the local server itself.

## Options

```
npx sticky-mcp                 open the board
npx sticky-mcp --mcp           run as an MCP server (agents launch this)

  --cap <n>      active notes before the oldest tumbles (default 10)
  --port <n>     board port (default 7317)
  --db <path>    where the board lives (default ~/.sticky/store.db)
  --no-open      start without opening a browser
```

Want it floating beside your editor? `chrome --app=http://localhost:7317`

## Requires

Node 22.5 or newer — STICKY uses Node's built-in SQLite, so there's nothing to compile and
no native modules to install.

---

MIT licensed. Built by [Juvina](https://juvina.ai).

More