chore: name the artifact fleet-memory, keep RCLL as the product name

The repository, the npm package and the container image are now
fleet-memory; RCLL stays the product and documentation brand (rcll.ai).

- server.json / package.json: io.github.holetron-lab/fleet-memory,
  npm identifier fleet-memory-mcp
- env chain is two names, not three: FLEET_URL/FLEET_BANK with the
  pre-rebrand HINDSIGHT_URL/MEMPALACE_BANK still read as a fallback.
  RCLL_URL/RCLL_BANK and bank rcll-main never shipped — nothing was
  published under rcll-mcp — so they are dropped rather than carried.
- default bank is fleet-main; hindsight-mempalace-mcp@1.0.0 users are
  told on stderr that their memory is in mempalace-main
- rooms are described as topic scoping over one shared store, not
  per-agent isolation: the read path filters on the room list the
  caller passes and has no notion of caller identity
This commit is contained in:
RCLL 2026-08-24 10:50:24 +03:00
parent 0af516ae69
commit adce870665
8 changed files with 60 additions and 65 deletions

View file

@ -1,10 +1,10 @@
name: Publish to npm name: Publish to npm
# Publishes rcll-mcp to npm via OIDC Trusted Publishing. # Publishes fleet-memory-mcp to npm via OIDC Trusted Publishing.
# No NPM_TOKEN needed — npm verifies this workflow's identity through the # No NPM_TOKEN needed — npm verifies this workflow's identity through the
# Trusted Publisher trust configured on npmjs.com (holetron-lab/rcll). # Trusted Publisher trust configured on npmjs.com (holetron-lab/fleet-memory).
# NOTE: that trust entry is per package AND per repo. It has to be re-created on # NOTE: that trust entry is per package AND per repo. It has to be re-created on
# npmjs.com for rcll-mcp + holetron-lab/rcll before the first release fires, # npmjs.com for fleet-memory-mcp + holetron-lab/fleet-memory before the first release fires,
# otherwise the publish step fails with an OIDC mismatch. # otherwise the publish step fails with an OIDC mismatch.
# Fires when a GitHub Release is published; the release tag is the source of truth # Fires when a GitHub Release is published; the release tag is the source of truth
# for the version already set in mcp-server/package.json. # for the version already set in mcp-server/package.json.

View file

@ -109,7 +109,7 @@ stays `false` there. Rehearse on a copy of the schema, never on the master.
## Remotes ## Remotes
``` ```
origin https://github.com/holetron-lab/rcll.git origin https://github.com/holetron-lab/fleet-memory.git
upstream https://github.com/vectorize-io/hindsight.git (push URL deliberately upstream https://github.com/vectorize-io/hindsight.git (push URL deliberately
poisoned — nothing on poisoned — nothing on
this box can push to this box can push to

View file

@ -4,7 +4,7 @@
> RCLL — team memory for agent fleets. Built on Hindsight (github.com/vectorize-io/hindsight, MIT). > RCLL — team memory for agent fleets. Built on Hindsight (github.com/vectorize-io/hindsight, MIT).
RCLL is a fork of [`vectorize-io/hindsight`](https://github.com/vectorize-io/hindsight) (MIT). It keeps Hindsight's storage engine and adds **rooms**shared, isolated memory across a team of agents — plus a hierarchical depth model (L0L3). The room/hall/layer taxonomy is prior art in the hierarchical-memory space; the implementation here is our own. RCLL is a fork of [`vectorize-io/hindsight`](https://github.com/vectorize-io/hindsight) (MIT). It keeps Hindsight's storage engine and adds **rooms**topic scoping over one shared store, which is selectivity rather than isolation — plus a hierarchical depth model (L0L3). The room/hall/layer taxonomy is prior art in the hierarchical-memory space; the implementation here is our own.
RCLL is `recall` with the vowels dropped — the one operation every agent in the fleet performs before it does anything else. The tool is literally called `memory_recall`; the product is named after the call. RCLL is `recall` with the vowels dropped — the one operation every agent in the fleet performs before it does anything else. The tool is literally called `memory_recall`; the product is named after the call.
@ -12,7 +12,7 @@ RCLL is `recall` with the vowels dropped — the one operation every agent in th
### Status ### Status
The source is public and MIT. **There is no packaged release yet:** `rcll-mcp` is not published on npm and no container image is pushed. Running RCLL today means building from this tree, which the quick start below does. Don't quote an install command as working until [rcll.ai](https://rcll.ai/) shows one. The source is public and MIT. **There is no packaged release yet:** `fleet-memory-mcp` is not published on npm and no container image is pushed. Running RCLL today means building from this tree, which the quick start below does. Don't quote an install command as working until [rcll.ai](https://rcll.ai/) shows one.
| | | | | |
|---|---| |---|---|
@ -66,7 +66,7 @@ This is a list of **our additions relative to our branch point** ([`d054b884`](h
| Added here | What it is | | Added here | What it is |
|---|---| |---|---|
| **Rooms** | Per-agent and shared scoping on every write and every read | | **Rooms** | Topic scoping on every write and every read — selectivity, not isolation |
| **Halls** | Knowledge typing within a room (fact, event, decision, procedure, warning) | | **Halls** | Knowledge typing within a room (fact, event, decision, procedure, warning) |
| **Layers L0L3** | Durability tiers; L0 always recalled, L3 deep-search only | | **Layers L0L3** | Durability tiers; L0 always recalled, L3 deep-search only |
| **Classification** | Keyword-based, sub-millisecond, **no LLM call** — the taxonomy costs zero tokens | | **Classification** | Keyword-based, sub-millisecond, **no LLM call** — the taxonomy costs zero tokens |
@ -96,7 +96,7 @@ Latency on CPU with no GPU: ~0.29 s for search, ~3.0 s including the cross-encod
## Quick start ## Quick start
```bash ```bash
git clone https://github.com/holetron-lab/rcll.git git clone https://github.com/holetron-lab/fleet-memory.git
cd rcll cd rcll
cp .env.example .env cp .env.example .env
# edit .env with your config # edit .env with your config
@ -158,7 +158,7 @@ costs about 1 KB instead of 43 KB. Recall spends no model call; it does spend co
```bash ```bash
cd mcp-server cd mcp-server
npm install npm install
RCLL_URL=http://localhost:5100 node server.js FLEET_URL=http://localhost:5100 node server.js
``` ```
### Claude Code config ### Claude Code config
@ -172,8 +172,8 @@ Add to `~/.claude/mcp.json`:
"command": "node", "command": "node",
"args": ["/path/to/mcp-server/server.js"], "args": ["/path/to/mcp-server/server.js"],
"env": { "env": {
"RCLL_URL": "http://localhost:5100", "FLEET_URL": "http://localhost:5100",
"RCLL_BANK": "my-agent-bank" "FLEET_BANK": "my-agent-bank"
} }
} }
} }

View file

@ -1,10 +1,10 @@
# RCLL MCP Server # RCLL MCP Server (`fleet-memory-mcp`)
Standalone [MCP](https://modelcontextprotocol.io) server that exposes **RCLL** memory tools to any MCP-compatible client (Claude Code, OpenClaw, etc). RCLL is self-hosted, hierarchical **shared** memory for a *team* of AI agents — rooms for per-agent vs shared recall, L0L3 depth, pgvector under the hood. Standalone [MCP](https://modelcontextprotocol.io) server that exposes **RCLL** memory tools to any MCP-compatible client (Claude Code, OpenClaw, etc). RCLL is self-hosted, hierarchical **shared** memory for a *team* of AI agents — topic-scoped rooms, L0L3 depth, pgvector under the hood. The published artifact is named `fleet-memory`; RCLL is the product name.
> RCLL — team memory for agent fleets. Built on Hindsight (github.com/vectorize-io/hindsight, MIT). > RCLL — team memory for agent fleets. Built on Hindsight (github.com/vectorize-io/hindsight, MIT).
RCLL is a fork of [`vectorize-io/hindsight`](https://github.com/vectorize-io/hindsight) (MIT). It keeps Hindsight's storage engine and adds rooms — shared, isolated memory for a team of agents — plus a hierarchical depth model (L0L3). The room/hall/layer taxonomy is prior art in the hierarchical-memory space; the implementation here is our own. RCLL is a fork of [`vectorize-io/hindsight`](https://github.com/vectorize-io/hindsight) (MIT). It keeps Hindsight's storage engine and adds rooms — topic scoping over one shared store, which is selectivity rather than isolation — plus a hierarchical depth model (L0L3). The room/hall/layer taxonomy is prior art in the hierarchical-memory space; the implementation here is our own.
## Tools ## Tools
@ -21,7 +21,7 @@ RCLL is a fork of [`vectorize-io/hindsight`](https://github.com/vectorize-io/hin
```bash ```bash
cd mcp-server cd mcp-server
npm install npm install
RCLL_URL=http://localhost:5100 node server.js FLEET_URL=http://localhost:5100 node server.js
``` ```
## Claude Code ## Claude Code
@ -33,10 +33,10 @@ Add to `~/.claude/mcp.json`:
"mcpServers": { "mcpServers": {
"rcll": { "rcll": {
"command": "npx", "command": "npx",
"args": ["-y", "rcll-mcp"], "args": ["-y", "fleet-memory-mcp"],
"env": { "env": {
"RCLL_URL": "http://localhost:5100", "FLEET_URL": "http://localhost:5100",
"RCLL_BANK": "my-agent-bank" "FLEET_BANK": "my-agent-bank"
} }
} }
} }
@ -47,28 +47,28 @@ Add to `~/.claude/mcp.json`:
| Variable | Default | Description | | Variable | Default | Description |
|----------|---------|-------------| |----------|---------|-------------|
| `RCLL_URL` | `http://127.0.0.1:5100` | RCLL backend base URL | | `FLEET_URL` | `http://127.0.0.1:5100` | fleet-memory backend base URL |
| `RCLL_BANK` | `rcll-main` | Default memory bank ID. Set it explicitly. | | `FLEET_BANK` | `fleet-main` | Default memory bank ID. Set it explicitly. |
### Migrating from `hindsight-mempalace-mcp` ### Migrating from `hindsight-mempalace-mcp`
That package defaulted to bank `mempalace-main`. `rcll-mcp` defaults to `rcll-main`, That package defaulted to bank `mempalace-main`. `fleet-memory-mcp` defaults to `fleet-main`,
so an install that never set the variable would open a different, empty bank — which so an install that never set the variable would open a different, empty bank — which
reads as "the update erased my memory". It does not: the old bank is still there. reads as "the update erased my memory". It does not: the old bank is still there.
Set `RCLL_BANK=mempalace-main` to keep reading it, or move the contents into a new Set `FLEET_BANK=mempalace-main` to keep reading it, or move the contents into a new
bank first. When `RCLL_BANK` and `MEMPALACE_BANK` are both unset, the server prints bank first. When `FLEET_BANK` and `MEMPALACE_BANK` are both unset, the server prints
which bank it defaulted to on stderr rather than picking one silently. which bank it defaulted to on stderr rather than picking one silently.
### Deprecated (still read, with a notice on stderr) ### Deprecated (still read, with a notice on stderr)
Installs created before the rebrand keep working — these are used only when the Installs created before the rebrand keep working — these are used only when the
`RCLL_*` equivalent is unset, and they will be dropped in a future major. `FLEET_*` equivalent is unset, and they will be dropped in a future major.
| Legacy variable | Replaced by | | Legacy variable | Replaced by |
|-----------------|-------------| |-----------------|-------------|
| `HINDSIGHT_URL` | `RCLL_URL` | | `HINDSIGHT_URL` | `FLEET_URL` |
| `MEMPALACE_BANK` | `RCLL_BANK` | | `MEMPALACE_BANK` | `FLEET_BANK` |
## Memory Taxonomy ## Memory Taxonomy

View file

@ -1,18 +1,18 @@
{ {
"name": "rcll-mcp", "name": "fleet-memory-mcp",
"version": "0.1.0", "version": "0.1.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "rcll-mcp", "name": "fleet-memory-mcp",
"version": "0.1.0", "version": "0.1.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@modelcontextprotocol/sdk": "^1.12.1" "@modelcontextprotocol/sdk": "^1.12.1"
}, },
"bin": { "bin": {
"rcll-mcp": "server.js" "fleet-memory-mcp": "server.js"
} }
}, },
"node_modules/@hono/node-server": { "node_modules/@hono/node-server": {

View file

@ -1,12 +1,12 @@
{ {
"name": "rcll-mcp", "name": "fleet-memory-mcp",
"version": "0.1.0", "version": "0.1.0",
"mcpName": "io.github.holetron-lab/rcll", "mcpName": "io.github.holetron-lab/fleet-memory",
"description": "RCLL — self-hosted, hierarchical shared memory for a team of AI agents over MCP (rooms, L0L3 depth, pgvector). Fork of vectorize-io/hindsight.", "description": "RCLL — self-hosted, hierarchical shared memory for a team of AI agents over MCP (rooms, L0-L3 depth, pgvector). Fork of vectorize-io/hindsight.",
"type": "module", "type": "module",
"main": "server.js", "main": "server.js",
"bin": { "bin": {
"rcll-mcp": "./server.js" "fleet-memory-mcp": "./server.js"
}, },
"scripts": { "scripts": {
"start": "node server.js" "start": "node server.js"
@ -15,6 +15,7 @@
"mcp", "mcp",
"memory", "memory",
"rcll", "rcll",
"fleet-memory",
"hindsight", "hindsight",
"ai-agents", "ai-agents",
"multi-agent", "multi-agent",

View file

@ -11,10 +11,10 @@
* memory_compress create closet summaries * memory_compress create closet summaries
* memory_bridge cross-bank tunnels * memory_bridge cross-bank tunnels
* *
* Connects to the RCLL backend (default: http://127.0.0.1:5100) * Connects to the fleet-memory backend (default: http://127.0.0.1:5100)
* *
* Usage: * Usage:
* RCLL_URL=http://localhost:5100 node server.js * FLEET_URL=http://localhost:5100 node server.js
* *
* Claude Code config (~/.claude/mcp.json): * Claude Code config (~/.claude/mcp.json):
* { * {
@ -22,7 +22,7 @@
* "rcll": { * "rcll": {
* "command": "node", * "command": "node",
* "args": ["/path/to/mcp-server/server.js"], * "args": ["/path/to/mcp-server/server.js"],
* "env": { "RCLL_URL": "http://localhost:5100" } * "env": { "FLEET_URL": "http://localhost:5100" }
* } * }
* } * }
* } * }
@ -34,44 +34,44 @@ import { z } from 'zod';
// --- Config --- // --- Config ---
// RCLL_* are the current names. The pre-rebrand names are still honored as a // FLEET_* are the current names. The pre-rebrand names are still honored as a
// fallback so an existing install keeps working after `npm update` — each one // fallback so an existing install keeps working after `npm update` — each one
// hit prints a deprecation notice on stderr (stdout is the MCP transport). // hit prints a deprecation notice on stderr (stdout is the MCP transport).
const LEGACY_ENV = [ const LEGACY_ENV = [
['RCLL_URL', 'HINDSIGHT_URL'], ['FLEET_URL', 'HINDSIGHT_URL'],
['RCLL_BANK', 'MEMPALACE_BANK'], ['FLEET_BANK', 'MEMPALACE_BANK'],
]; ];
function envWithFallback(current, legacy) { function envWithFallback(current, legacy) {
if (process.env[current]) return process.env[current]; if (process.env[current]) return process.env[current];
if (process.env[legacy]) { if (process.env[legacy]) {
console.error(`rcll-mcp: ${legacy} is deprecated — rename it to ${current}.`); console.error(`fleet-memory-mcp: ${legacy} is deprecated — rename it to ${current}.`);
return process.env[legacy]; return process.env[legacy];
} }
return undefined; return undefined;
} }
const RCLL_URL = envWithFallback(...LEGACY_ENV[0]) || 'http://127.0.0.1:5100'; const FLEET_URL = envWithFallback(...LEGACY_ENV[0]) || 'http://127.0.0.1:5100';
const RCLL_BASE = `${RCLL_URL}/v1/default/banks`; const FLEET_BASE = `${FLEET_URL}/v1/default/banks`;
// The default bank is 'rcll-main'. The pre-rebrand package // The default bank is 'fleet-main'. The pre-rebrand package
// hindsight-mempalace-mcp@1.0.0 defaulted to 'mempalace-main', so an install that // hindsight-mempalace-mcp@1.0.0 defaulted to 'mempalace-main', so an install that
// never set the env var and switches packages would land in a different, empty bank. // never set the env var and switches packages would land in a different, empty bank.
// That reads as "the update erased my memory", so we say it out loud instead of // That reads as "the update erased my memory", so we say it out loud instead of
// guessing: the legacy env var is still honoured, and defaulting is announced. // guessing: the legacy env var is still honoured, and defaulting is announced.
const LEGACY_DEFAULT_BANK = 'mempalace-main'; const LEGACY_DEFAULT_BANK = 'mempalace-main';
const DEFAULT_BANK = envWithFallback(...LEGACY_ENV[1]) || 'rcll-main'; const DEFAULT_BANK = envWithFallback(...LEGACY_ENV[1]) || 'fleet-main';
if (!process.env.RCLL_BANK && !process.env.MEMPALACE_BANK) { if (!process.env.FLEET_BANK && !process.env.MEMPALACE_BANK) {
console.error( console.error(
`rcll-mcp: RCLL_BANK is unset, using '${DEFAULT_BANK}'. ` + `fleet-memory-mcp: FLEET_BANK is unset, using '${DEFAULT_BANK}'. ` +
`Coming from hindsight-mempalace-mcp? Your memory is in '${LEGACY_DEFAULT_BANK}' — ` + `Coming from hindsight-mempalace-mcp? Your memory is in '${LEGACY_DEFAULT_BANK}' — ` +
`set RCLL_BANK=${LEGACY_DEFAULT_BANK} to keep reading it.` `set FLEET_BANK=${LEGACY_DEFAULT_BANK} to keep reading it.`
); );
} }
// --- RCLL HTTP client --- // --- fleet-memory HTTP client ---
async function hindsightRequest(method, path, body = null) { async function hindsightRequest(method, path, body = null) {
const url = `${RCLL_BASE}${path}`; const url = `${FLEET_BASE}${path}`;
const opts = { const opts = {
method, method,
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
@ -326,8 +326,8 @@ server.resource(
uri: 'rcll://config', uri: 'rcll://config',
mimeType: 'application/json', mimeType: 'application/json',
text: JSON.stringify({ text: JSON.stringify({
rcll_url: RCLL_URL, fleet_url: FLEET_URL,
hindsight_url: RCLL_URL, // legacy alias, drop after 60d hindsight_url: FLEET_URL, // legacy alias, drop after 60d
default_bank: DEFAULT_BANK, default_bank: DEFAULT_BANK,
rooms: ['auth', 'pipeline', 'schema', 'infrastructure', 'ui', 'api', 'deployment', 'monitoring', 'agent', 'general'], rooms: ['auth', 'pipeline', 'schema', 'infrastructure', 'ui', 'api', 'deployment', 'monitoring', 'agent', 'general'],
halls: ['fact', 'event', 'decision', 'preference', 'discovery', 'procedure', 'warning'], halls: ['fact', 'event', 'decision', 'preference', 'discovery', 'procedure', 'warning'],
@ -347,13 +347,7 @@ server.resource(
async function main() { async function main() {
const transport = new StdioServerTransport(); const transport = new StdioServerTransport();
await server.connect(transport); await server.connect(transport);
if (!process.env.RCLL_BANK && !process.env.MEMPALACE_BANK) { console.error(`fleet-memory-mcp running (backend: ${FLEET_URL}, bank: ${DEFAULT_BANK})`);
console.error(
`rcll-mcp: no bank configured — falling back to the pre-rebrand default '${DEFAULT_BANK}'. ` +
'Set RCLL_BANK explicitly; this fallback goes away in a future major.'
);
}
console.error(`rcll-mcp running (backend: ${RCLL_URL}, bank: ${DEFAULT_BANK})`);
} }
main().catch(err => { main().catch(err => {

View file

@ -1,18 +1,18 @@
{ {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.holetron-lab/rcll", "name": "io.github.holetron-lab/fleet-memory",
"title": "RCLL", "title": "RCLL",
"description": "RCLL — team memory for agent fleets. Built on Hindsight (github.com/vectorize-io/hindsight, MIT). Self-hosted shared memory over MCP: rooms, hierarchical L0L3 depth, pgvector.", "description": "RCLL — team memory for agent fleets. Built on Hindsight (github.com/vectorize-io/hindsight, MIT). Self-hosted shared memory over MCP: rooms, hierarchical L0L3 depth, pgvector.",
"version": "0.1.0", "version": "0.1.0",
"websiteUrl": "https://rcll.ai", "websiteUrl": "https://rcll.ai",
"repository": { "repository": {
"url": "https://github.com/holetron-lab/rcll", "url": "https://github.com/holetron-lab/fleet-memory",
"source": "github" "source": "github"
}, },
"packages": [ "packages": [
{ {
"registryType": "npm", "registryType": "npm",
"identifier": "rcll-mcp", "identifier": "fleet-memory-mcp",
"version": "0.1.0", "version": "0.1.0",
"runtimeHint": "npx", "runtimeHint": "npx",
"transport": { "transport": {
@ -20,16 +20,16 @@
}, },
"environmentVariables": [ "environmentVariables": [
{ {
"name": "RCLL_URL", "name": "FLEET_URL",
"description": "Base URL of the RCLL backend (self-hosted). Defaults to http://127.0.0.1:5100. The pre-rebrand name HINDSIGHT_URL is still read as a fallback.", "description": "Base URL of the fleet-memory backend (self-hosted). Defaults to http://127.0.0.1:5100. The pre-rebrand name HINDSIGHT_URL is still read as a fallback.",
"isRequired": false, "isRequired": false,
"default": "http://127.0.0.1:5100" "default": "http://127.0.0.1:5100"
}, },
{ {
"name": "RCLL_BANK", "name": "FLEET_BANK",
"description": "Default memory bank ID for retain/recall. The pre-rebrand variable MEMPALACE_BANK is still read as a fallback. Migrating from hindsight-mempalace-mcp? Set this to mempalace-main to keep reading your existing bank; see mcp-server/README.md.", "description": "Default memory bank ID for retain/recall. The pre-rebrand variable MEMPALACE_BANK is still read as a fallback. Migrating from hindsight-mempalace-mcp? Set this to mempalace-main to keep reading your existing bank; see mcp-server/README.md.",
"isRequired": false, "isRequired": false,
"default": "rcll-main" "default": "fleet-main"
} }
] ]
} }