v1.1.1 Ambient memory: just say remember this

Local memory
for every repo
your agent touches.

Fossel is a local-first MCP server. Your editor's AI just knows the conventions, bug fixes, reviewer patterns, and architectural decisions for every repo you contribute to. No cloud, no accounts, your data never leaves your laptop.

$ npx -y fossel init copy
cursor · new chat · 7vignesh/fossel
you → what does Fossel remember about auth here?
fossel → loaded 4 memories for 7vignesh/fossel
⟡ JWT lives in localStorage; 401 redirects to /login
⟡ API base URL is http://localhost:5000/api
⟡ Reviewers prefer explicit return types on exports
📌 Pinned Always run npm run ci before merge
✓ context loaded · picking up where you left off

The problem[01 / 06]

AI is brilliant.
And painfully forgetful.

Every new chat starts from zero. You re-explain the conventions, the reviewer preferences, the bug you already solved last week. Now multiply that by every repo you contribute to.

The default

Stateless chat

  • New chat = blank slate. Re-explain everything.
  • Context window truncates older messages silently.
  • Switch from Cursor to Claude Desktop, lose history.
  • Reviewer patterns and team norms live only in your head.
With Fossel

Memory that just works

  • Say remember this. Fossel infers type, tags, and repo.
  • One canonical repo key — aliases collapse automatically.
  • Same memory across Cursor, Claude Desktop, any MCP client.
  • SQLite + FTS5 on your laptop. Zero cloud, zero accounts.

How it works[02 / 06]

Four primitives.
One local file.

Fossel sits in ~/.fossel/memory.db. Migrations run on startup. Every tool is non-breaking; the simple ones are enough for 80% of cases.

01  ·  INSTALL

30 seconds, no global install

One npx command sets up the local database, prints the MCP config snippet for Cursor and Claude Desktop, and runs migrations.

$ npx -y fossel init
02  ·  REMEMBER

Natural-language save

The remember tool auto-infers memory_type, generates 2–5 tags, resolves the repo, and merges near-duplicates instead of creating a second row.

remember("JWT lives in localStorage; 401 → /login")
03  ·  RETRIEVE

Pinned, recent, matching

get_context returns pinned first, then recent, then FTS matches when a query is provided. Default limit is tuned for direct LLM injection.

get_context({ query: "auth" })
04  ·  STAY CLEAN

Dedupe and doctor

dedupe_repo merges near-duplicates with a changelog audit trail. fossel doctor --fix cleans repo-key sprawl, stale alias mentions, and exact duplicates in one shot.

$ npx -y fossel doctor --fix
<100ms
get_context · 1k memories
0
cloud calls
30+
unit tests · CI gated
MIT
open-source license

Memory types[03 / 06]

Every kind of
repo knowledge.

Fossel auto-classifies into one of six types so retrieval can group by intent. Override the inferred type when you want — the tools still accept explicit values.

convention

Coding conventions

Uses Blaze, not React. Components live in client/. Avoid TypeScript generics in PR descriptions.

reviewer_pattern

Reviewer preferences

Reviewer A wants PRs under 200 lines. Reviewer B asks for edge-case tests. Don't merge without both.

bug_fix

Bug fixes & root causes

Subscription calls in the toolbar fired 3× on re-render without debouncing. Fixed with a 200ms delay.

decision

Architectural decisions

Decided NOT to use Prisma here — too much overhead for the read-heavy query pattern. Sticking with raw SQL.

issue

Issue context

Issue #892 — tried fixing in RoomHeader.js but conflicts with the i18n module. Try Toolbar.js next.

general

Anything else

Notes that don't fit cleanly anywhere else still get FTS-searchable, repo-scoped, and pinnable.


Install[04 / 06]

Up in 30 seconds.
Works everywhere.

Node.js 18+ is the only requirement. Data lives in ~/.fossel/memory.db (override with FOSSEL_DB_PATH). Set FOSSEL_WORKSPACE in your MCP config to pin Fossel to the right project root.

1

Initialize via npx

No global install needed. Detects your canonical repo key, prints copy-paste MCP config, and inserts a starter memory if the DB is empty.

2

Paste the MCP config

Drop the JSON into Cursor's ~/.cursor/mcp.json or Claude Desktop settings. Restart the client once.

3

Talk to your repo

Ask "what does Fossel remember about auth here?" or say "remember: API base is /api/v2." No type or tags required.

4

Stay tidy

Run npx fossel doctor any time to spot duplicate clusters, repo-key sprawl, or stale alias mentions. Add --fix to auto-clean.

$ npx -y fossel init
# Canonical repo key: 7vignesh/fossel
#   source: git-remote
#   git remote: https://github.com/7vignesh/fossel.git
#
# MCP config printed below — paste into your client.
# DB path: ~/.fossel/memory.db
{
  "mcpServers": {
    "fossel": {
      "command": "npx",
      "args": ["-y", "fossel"],
      "env": {
        "FOSSEL_WORKSPACE": "${workspaceFolder}"
      }
    }
  }
}
{
  "mcpServers": {
    "fossel": {
      "command": "npx",
      "args": ["-y", "fossel"],
      "env": {
        "FOSSEL_WORKSPACE": "/path/to/your/project"
      }
    }
  }
}
first call · in chat
# Just paste this into Cursor or Claude.
remember: API base URL is /api/v2
and 401 redirects to /login

MCP tools[05 / 06]

Three tools.
One command.

remember and get_context are all you need. doctor keeps things clean. Advanced tools are documented in the README.

remember new

Save a memory using only a natural-language note. Fossel infers the memory type, generates 2–5 tags, resolves the repo, and merges near-duplicates instead of storing them twice.

# in chat remember: JWT lives in localStorage; 401 → /login

Works in Cursor, Claude Desktop, and any stdio MCP client. Full tool reference →


Ship it[06 / 06]

Stop re-explaining.
Start building.

Free, open-source, fully local. Your memories never leave your machine.