Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
d12c96e
fix: filtered search fallback and diary_write content alias
lucian-the-traveler Apr 27, 2026
d88597c
fix(backends): repair missing _type in collection config (#1611)
mvalentsev May 25, 2026
c4d8804
fix(backends): close sqlite connection before PersistentClient
mvalentsev May 25, 2026
15ac430
fix(embedding): add embed_query/embed_documents to EmbeddinggemmaONNX…
May 27, 2026
bf156fb
feat: add Antigravity IDE support (plugin, MCP, skill, hooks, docs, t…
undeadindustries May 27, 2026
b06cf24
fix(antigravity): address gemini-code-assist review on PR #1633
undeadindustries May 27, 2026
2d4fae1
fix(mcp): retry stale-index transient in tool_search
trek-e May 27, 2026
a0508cb
build(deps-dev): bump ruff from 0.15.14 to 0.15.15
dependabot[bot] May 29, 2026
13c38ac
fix(palace): file_already_mined iterates all groups when source_file …
milla-jovovich May 29, 2026
55d4e37
Merge pull request #1652 from MemPalace/fix/file-already-mined-multi-…
igorls May 29, 2026
387d50d
Merge pull request #1647 from MemPalace/dependabot/pip/ruff-0.15.15
igorls May 29, 2026
df295bd
fix(antigravity): atomic counter write, background --version probe, s…
undeadindustries May 30, 2026
9b7cfc9
Merge pull request #1617 from mvalentsev/fix/1611-config-json-str-type
igorls May 30, 2026
48f4eb6
test(embedding): expect 3 hf_hub_download calls (model + .onnx_data w…
igorls May 30, 2026
818e4f3
fix(normalize): use utf-8-sig to handle BOM-prefixed transcript files
arnoldwender Apr 22, 2026
29db125
fix(closet_llm): replace non-ASCII symbols in progress output (#1034)
arnoldwender Apr 22, 2026
038a7e0
fix(convo_miner): preserve blank lines and indentation in AI responses
arnoldwender Apr 23, 2026
10d1ce6
fix(backends): lower HNSW bloat-guard thresholds to fix sub-50k persi…
mvalentsev May 25, 2026
b11f414
style(test): use _HNSW_MISSING_METADATA_DATA_FLOOR constant instead o…
mvalentsev May 25, 2026
7b1f624
fix(backends): detect sub-threshold segments by link_lists state, not…
mvalentsev May 27, 2026
c19d894
fix(backends): re-arm HNSW quarantine gate on mtime change and explic…
mvalentsev May 24, 2026
22804b8
fix(backends): guard mtime_appeared discard behind _freshness membership
mvalentsev May 24, 2026
206cfbb
fix(ids): delimit hash inputs to prevent drawer_id collisions (#80)
milla-jovovich May 30, 2026
a329acf
fix(antigravity): resolve interpreter from console-script shebang
undeadindustries May 31, 2026
6dd99ec
fix(backends): strip lone surrogates from documents at the ChromaDB c…
terrizoaguimor Jun 1, 2026
e548966
fix(backends): keep single-string documents whole in surrogate sanitiser
terrizoaguimor Jun 1, 2026
b5f3915
fix(config): strip leading/trailing separators in normalize_wing_name
M8SON Jun 2, 2026
0dd0ade
fix(mcp): defer WAL setup so import no longer recreates ~/.mempalace …
mvalentsev Jun 2, 2026
6aa8e93
feat: add pluggable vector backends
igorls Jun 3, 2026
30b82ba
fix: avoid qdrant lexical full scan on empty text hits
igorls Jun 3, 2026
4d3daf9
fix(hallways): paginate drawer fetch to avoid SQLite variable overflo…
milla-jovovich Jun 3, 2026
526d58a
Update tests/test_hallways_pagination.py
milla-jovovich Jun 3, 2026
af2bd0e
style(tests): format test_hallways_pagination.py with ruff (#1680)
milla-jovovich Jun 3, 2026
300e824
docs(hallways): correct col contract in compute_hallways_for_wing doc…
milla-jovovich Jun 3, 2026
02b8753
Merge pull request #1680 from MemPalace/fix/1619-hallway-pagination
milla-jovovich Jun 3, 2026
ce46747
fix(status): count drawers from sqlite instead of cold-loading the HN…
potterdigital Jun 3, 2026
5ba8399
Fix crash when tool_use input is a list instead of dict
robertcprice Jun 4, 2026
4e0fce0
fix(hooks): file stop-hook diary checkpoints under the harness agent …
mvalentsev Jun 5, 2026
717a57f
feat(docker): add container image for MCP server and CLI
sebaplaza Jun 5, 2026
8757ba2
fix(docker): address gemini review on MR #1696
plaza-s-mgdis Jun 5, 2026
9be2b97
fix(backups): add max_backups retention to bound backup disk usage
margaretjgu Jun 5, 2026
ec5d1eb
feat: add pgvector backend + namespace-isolation conformance contract
igorls Jun 6, 2026
1dadd33
ci: add PyPI trusted-publishing workflow
igorls Jun 6, 2026
0225eb4
docs: bump version on develop, not directly on main
igorls Jun 6, 2026
eb3ff2e
ci(docker): fix latest/main publishing, add arm64 + GPU build check
igorls Jun 6, 2026
15852ed
Merge pull request #1696 from sebaplaza/feat/docker-image
igorls Jun 6, 2026
dc7d0be
docs: clarify publish.yml trigger comment
igorls Jun 6, 2026
4bc1ea8
fix: address Copilot second-pass review on the pluggable-backend PR
igorls Jun 6, 2026
f88951e
Merge remote-tracking branch 'origin/develop' into codex/pluggable-ve…
igorls Jun 6, 2026
37e34f6
docs: correct pgvector table_dimension comment after real-Postgres te…
igorls Jun 6, 2026
723e45b
Merge pull request #1679 from MemPalace/codex/pluggable-vector-backen…
igorls Jun 6, 2026
694289c
Merge pull request #1698 from MemPalace/ci/pypi-trusted-publishing
igorls Jun 6, 2026
5289bdf
Merge pull request #1631 from YuRiNjjot/fix-embeddinggemma-chromadb
igorls Jun 6, 2026
82af1ff
Merge pull request #1678 from mvalentsev/fix/1676-mcp-wal-import-side…
igorls Jun 6, 2026
6434370
Merge pull request #1666 from MemPalace/fix/80-drawer-id-collision-de…
igorls Jun 6, 2026
593cfeb
Merge pull request #1682 from potterdigital/fix/status-sqlite-count
igorls Jun 6, 2026
e00bc66
Merge pull request #1102 from arnoldwender/fix/normalize-utf8-bom
igorls Jun 6, 2026
04af6a4
Merge pull request #1100 from arnoldwender/fix/closet-llm-gbk-symbols
igorls Jun 6, 2026
cace223
Merge pull request #1618 from mvalentsev/fix/1579-hnsw-flush-at-mine-end
igorls Jun 6, 2026
e1fce46
Merge pull request #1602 from mvalentsev/fix/1573-quarantine-rearm-mtime
igorls Jun 6, 2026
b1df41b
Merge pull request #1137 from arnoldwender/fix/convo-miner-preserve-r…
igorls Jun 6, 2026
bbe6ff9
Merge pull request #1245 from lucian-the-traveler/fix/filtered-search…
igorls Jun 6, 2026
46e3b22
Merge pull request #1694 from mvalentsev/fix/1693-hook-diary-agent
igorls Jun 6, 2026
097687c
Merge pull request #1687 from robertcprice/fix/tool-use-input-list-guard
igorls Jun 6, 2026
1ed7f49
Merge pull request #1635 from trek-e/fix/mcp-search-stale-index-retry
igorls Jun 6, 2026
334fc6d
Merge pull request #1673 from terrizoaguimor/fix/sanitize-documents-c…
igorls Jun 6, 2026
ad9874f
fix(mcp): repair diary_write content alias + restore -32602 diagnostic
igorls Jun 6, 2026
b130301
fix(mcp): address bot review on #1700
igorls Jun 6, 2026
ab669fd
test(miner): compare default wing to normalized dirname, not raw name
igorls Jun 6, 2026
6ac2de8
Merge pull request #1700 from MemPalace/fix/1245-diary-write-and-lint
igorls Jun 6, 2026
e46374d
feat(migrate): mempalace migrate-wings — normalize legacy wing names
igorls Jun 6, 2026
8ec438e
docs(recovery): add wing-name migration guide for migrate-wings
igorls Jun 6, 2026
708ef4a
Merge pull request #1702 from MemPalace/feat/migrate-wing-normalize
igorls Jun 6, 2026
ed772a0
Merge remote-tracking branch 'origin/develop' into fix/wing-normalize…
igorls Jun 6, 2026
ab716d0
Merge pull request #1675 from M8SON/fix/wing-normalize-strip-sep
igorls Jun 6, 2026
e66cfff
chore(release): 3.4.0
igorls Jun 6, 2026
73d4e43
chore(release): bump README version badge to 3.4.0
igorls Jun 6, 2026
9694e2c
Merge pull request #1705 from MemPalace/chore/bump-3.4.0
igorls Jun 6, 2026
ce929a8
fix(backends): wrap bare-str OneOrMany inputs before embedding
igorls Jun 6, 2026
15833ab
ci(publish): add workflow_dispatch manual trigger
igorls Jun 6, 2026
d51e943
ci(publish): qualify checkout ref to refs/tags + tighten tag regex
igorls Jun 6, 2026
d464c28
Merge pull request #1708 from MemPalace/ci/publish-workflow-dispatch
igorls Jun 6, 2026
051f0cc
fix(backends): normalize all OneOrMany inputs in EmbeddingCollection
igorls Jun 6, 2026
72a69e2
Merge pull request #1707 from MemPalace/fix/embedding-wrapper-oneormany
igorls Jun 6, 2026
19d2f92
ci(publish): build + publish in one job to avoid cross-job artifact h…
igorls Jun 6, 2026
939a076
Merge pull request #1709 from MemPalace/ci/publish-single-job
igorls Jun 6, 2026
2a66bad
feat(mcp): add mempalace_mine tool (#1662)
mvalentsev Jun 4, 2026
c9dc4c4
fix(miner): count only new work toward --limit, not already-mined ski…
mvalentsev May 25, 2026
9a8c87a
fix(backends): keep post-deletion dim-None HNSW segments instead of q…
mvalentsev Jun 7, 2026
ffa8ac1
feat(searcher): metric-aware distance→similarity conversion (RFC 001 …
igorls Jun 8, 2026
5214470
Merge pull request #1727 from MemPalace/feat/searcher-backend-neutral
igorls Jun 8, 2026
212051d
feat(backends): embedder-identity contract + three-state enforcement …
igorls Jun 8, 2026
13de7a6
Merge pull request #1731 from MemPalace/feat/embedder-identity
igorls Jun 8, 2026
fdbafe5
feat(backends): observable maintenance hooks + pgvector indexed-build…
igorls Jun 8, 2026
4ceb880
Merge pull request #1732 from MemPalace/feat/maintenance-hooks
igorls Jun 8, 2026
ed77125
feat(backends): shared embedder-identity sidecar + qdrant identity (R…
igorls Jun 8, 2026
676ee68
fix(mcp): preserve room/wing casing on case-only update
Sathvik-1007 Jun 8, 2026
d514787
fix(mcp): str-coerce metadata before case comparison
Sathvik-1007 Jun 8, 2026
eab1196
feat(mcp): expose list_hallways and delete_hallway tools
ggettert Jun 8, 2026
ef2261f
docs(mcp): document list_hallways and delete_hallway tools
ggettert Jun 8, 2026
d05bb11
Merge pull request #1734 from MemPalace/feat/qdrant-embedder-identity
igorls Jun 8, 2026
7d7dc78
Merge pull request #1723 from mvalentsev/fix/hnsw-dim-none-deletions
igorls Jun 10, 2026
140c380
Merge pull request #1697 from margaretjgu/fix/backup-retention
igorls Jun 10, 2026
8c120be
Merge pull request #1692 from mvalentsev/feat/1662-mcp-mine-tool
igorls Jun 10, 2026
77eaa31
Merge pull request #1622 from mvalentsev/fix/1535-mine-limit-skips-al…
igorls Jun 10, 2026
4d60db0
Merge pull request #1741 from ggettert/feat/mcp-list-hallways
igorls Jun 10, 2026
ad67c1a
Merge pull request #1737 from Sathvik-1007/fix/1621-update-drawer-roo…
igorls Jun 10, 2026
692599a
merge: resolve CHANGELOG conflict with develop
igorls Jun 10, 2026
df0e29a
fix(test): make hybrid search closet preview test robust on Windows
igorls Jun 10, 2026
f124bd2
Merge pull request #1633 from undeadindustries/feat/antigravity-support
igorls Jun 10, 2026
fc89a1b
feat(antigravity): add recall skill, optional rule, shared protocol
undeadindustries Jun 11, 2026
60a4610
fix(antigravity): sync recall skill protocol with canonical shared so…
undeadindustries Jun 11, 2026
2ec4bae
Merge pull request #1771 from undeadindustries/feat/antigravity-support
igorls Jun 11, 2026
373fdf2
chore: sync upstream/develop through v3.4.0 (2ec4bae)
jphein Jun 11, 2026
ee78457
fix(sync): post-merge reconciliation — suite 4230 green, docs regener…
jphein Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .antigravity-plugin/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# MemPalace — Antigravity plugin

In-repo packaging for the MemPalace integration with Google's [Antigravity IDE](https://antigravity.google/).

This directory is the source of truth for what gets installed at
`~/.gemini/config/plugins/mempalace/` when the user runs the installer.

## Layout

```
.antigravity-plugin/
├── plugin.json # marker manifest (verified minimal schema)
├── mcp_config.json # auto-registers the mempalace-mcp stdio server
├── hooks.json.tmpl # template — installer renders to hooks.json
├── skills/
│ ├── mempalace/
│ │ └── SKILL.md # ops skill: setup, mine, status, CLI delegation
│ └── mempalace-recall/
│ └── SKILL.md # recall-only skill: search-before-answer protocol
├── rules/
│ └── mempalace-recall.md # optional recall rule (complements the skill)
└── README.md # this file
```

The hook scripts themselves live at `hooks/antigravity/`. The installer
copies them into `<install-dir>/hooks/` and renders `hooks.json.tmpl`
into a `hooks.json` whose `command` paths point at the absolute install
location.

## Three recall layers

MemPalace can store everything, but it only helps if the agent actually
*reads* the palace before answering. Three layers wire that in, from
eager to on-demand:

1. **Wake hook** (`hooks/antigravity/mempal_wake_hook_antigravity.sh`,
`PreInvocation` event, gated to `invocationNum == 1`). On the first
model call of a conversation it runs `mempalace wake-up` and injects
the **actual palace content verbatim** via Antigravity's
`injectSteps[].ephemeralMessage` output. This is Antigravity's native
equivalent of Cursor's `sessionStart` `additional_context`, except it
delivers the memory itself rather than a directive to go fetch it.
2. **Recall skill** (`skills/mempalace-recall/SKILL.md`). The
search-before-answer protocol the agent follows when a turn is
recall-relevant — tool selection, unhappy paths, anti-patterns. It
covers recall only; the `mempalace` skill covers setup / mine /
status.
3. **Optional recall rule** (`rules/mempalace-recall.md`). A lightweight
markdown rule that nudges the agent to search before answering when
Antigravity's matcher decides the turn is recall-relevant. It is
deliberately recall-scoped (not an always-on global rule) so it never
adds latency to greenfield work, honouring MemPalace's "memory should
feel instant" budget.

All three point to the single canonical protocol in
[`integrations/shared/recall-protocol.md`](../integrations/shared/recall-protocol.md)
so the skill and rule never drift.

## Install

```bash
bash hooks/antigravity/install.sh
```

The installer is idempotent and the uninstaller matches by basename, so
re-runs and partial installs are safe.

See [website/guide/antigravity.md](../website/guide/antigravity.md) for
the full user-facing guide and [hooks/antigravity/README.md](../hooks/antigravity/README.md)
for the hooks-specific documentation.

## Verified surfaces

Every file in this directory maps to a surface verified against
[Google's Antigravity docs](https://antigravity.google/docs/). See
[hooks/antigravity/INVESTIGATION.md](../hooks/antigravity/INVESTIGATION.md)
for the full audit, including the surfaces deliberately not shipped.
20 changes: 20 additions & 0 deletions .antigravity-plugin/hooks.json.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"mempalace-save": {
"Stop": [
{
"type": "command",
"command": "__PLUGIN_DIR__/hooks/mempal_save_hook_antigravity.sh",
"timeout": 30
}
]
},
"mempalace-wake": {
"PreInvocation": [
{
"type": "command",
"command": "__PLUGIN_DIR__/hooks/mempal_wake_hook_antigravity.sh",
"timeout": 5
}
]
}
}
7 changes: 7 additions & 0 deletions .antigravity-plugin/mcp_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"mcpServers": {
"mempalace": {
"command": "mempalace-mcp"
}
}
}
3 changes: 3 additions & 0 deletions .antigravity-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"name": "mempalace"
}
18 changes: 18 additions & 0 deletions .antigravity-plugin/rules/mempalace-recall.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# MemPalace recall

Before answering anything that may already be in the user's memory
palace — past work, prior decisions, a person, a project, or "what did
we do / decide / discuss last time?" — search the palace first:

1. Call `mempalace_search` with a short keyword query. Use
`mempalace_kg_query` for relational or time-bound facts.
2. Quote the drawer's **verbatim** text. Never summarize or paraphrase
stored content.
3. If results are empty, say so — do not invent an answer. If the MCP
server is unavailable, surface the error; do not fall back to guessing.

Skip recall for pure greenfield work with no memory relevance (renaming
a variable, fixing a typo). Recall is question-driven, not reflexive.

Full protocol: <https://github.com/MemPalace/mempalace/blob/main/integrations/shared/recall-protocol.md>. Deeper guidance:
the `mempalace-recall` skill.
119 changes: 119 additions & 0 deletions .antigravity-plugin/skills/mempalace-recall/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
---
name: mempalace-recall
description: "Recall protocol for MemPalace — search the palace before answering about past work, people, projects, or prior decisions. Apply when the user asks what was decided, what happened before, who someone is, what was discussed last time, or anything that may already be filed in their memory palace; or when mempalace-recall is invoked. Complements the mempalace setup skill and requires the mempalace-mcp server."
---

# MemPalace Recall

Search-before-answer protocol for MemPalace. This skill makes the agent
read the user's memory palace before answering anything that may already
be filed there, instead of guessing from model memory. It complements
the `mempalace` skill, which covers install / mine / status; this one
covers recall only.

## Step 0 — Verify MemPalace is available

Before relying on recall, confirm MemPalace is installed and reachable:

- Official release page: <https://github.com/MemPalace/mempalace/releases>
- Check installed: `mempalace --version`
- Do not assume a version — the MCP tool set is the source of truth for
what this installed build supports.

If the `mempalace_*` MCP tools are not available, tell the user the
server is not connected and point them at the `mempalace` skill to set
it up. Do not silently fall back to answering from model memory.

## Identity

Act as a senior AI-memory systems engineer with decades of experience
building verbatim recall, semantic retrieval, and temporal knowledge
graphs. Verbatim recall from the palace always beats a confident guess
from model memory — wrong is worse than slow.

## When to recall

Search the palace **before answering** whenever the user asks about
something that may already be filed:

- Past work or prior decisions — "what did we decide / try / do?"
- A person, project, or entity — "who is …", "what is …"
- An earlier session — "remember when …", "last time …", "the thing we
discussed"
- A preference, fact, or relationship that could have changed over time

Do **not** search on pure greenfield work with no memory relevance
(e.g. "rename this variable", "fix this typo"). Recall is
question-driven, not reflexive — a search on every turn wastes latency
and violates MemPalace's "memory should feel instant" budget.

## Protocol

1. On wake-up, the MemPalace PreInvocation hook injects verbatim palace
content via `injectSteps[].ephemeralMessage` on the first model call
of a conversation. If memory was injected, start from it before
searching further.
2. **Before responding** about people, projects, past events, or prior
decisions: call `mempalace_search` first. For relational or temporal
facts ("who reported to whom in March", "what was true then"), call
`mempalace_kg_query` instead or as well.
3. **If unsure** about a fact (name, age, relationship, preference): say
"let me check the palace" and query. Wrong is worse than slow.
4. **Return verbatim.** Quote the drawer's exact stored words. Never
summarize, paraphrase, or lossy-compress what the palace returns —
that is the whole point of the system.
5. **After a substantive session**, record continuity with
`mempalace_diary_write` (background hooks may already do this — do not
double-file).
6. **When a fact changes**, call `mempalace_kg_invalidate` on the old
fact, then `mempalace_kg_add` for the new one.

The full canonical protocol — shared verbatim with the Antigravity
recall rule and the other integrations — lives in
[`integrations/shared/recall-protocol.md`](https://github.com/MemPalace/mempalace/blob/main/integrations/shared/recall-protocol.md).

## Tool selection

| You need | Tool |
|---|---|
| Find any memory by meaning | `mempalace_search` (start here) |
| Relational / time-bound facts about an entity | `mempalace_kg_query` |
| The chronological story of an entity | `mempalace_kg_timeline` |
| Recent session continuity | `mempalace_diary_read` |
| Which wings / rooms exist (scope unknown) | `mempalace_list_wings`, `mempalace_list_rooms` |
| Record this session | `mempalace_diary_write` |

`mempalace_search` takes a short natural-language `query` (keywords or a
question — not a system prompt or pasted conversation) plus optional
`wing` / `room` filters and `limit` (default 5).

## Unhappy paths

- **Empty results.** Say the palace has nothing on this; do not invent an
answer to fill the gap. Offer to widen the search (drop the wing
filter) or to file the new information.
- **MCP unavailable / tool error.** Surface the error plainly and suggest
the user verify the server (`mempalace status`, or re-run the
installer `hooks/antigravity/install.sh`). Do not silently fall back
to guessing from model memory.
- **Stale or conflicting facts.** Prefer the knowledge graph's
time-valid answer; if a fact has changed, invalidate the old one and
add the new one rather than overwriting context silently.

## Anti-patterns — never do these

- Answering about past work, people, or decisions from model memory when
the palace might know — search first.
- Paraphrasing or summarizing stored content instead of quoting it
verbatim.
- Searching reflexively on every turn, including pure greenfield coding
with no memory relevance.
- Pasting the full conversation or a system prompt into the `query`
argument — keep queries short and keyword-driven.

## Official References

- MemPalace: <https://github.com/MemPalace/mempalace>
- MemPalace releases: <https://github.com/MemPalace/mempalace/releases>
- Antigravity documentation: <https://antigravity.google/docs>
- Agent Skills specification: <https://agentskills.io/specification>
92 changes: 92 additions & 0 deletions .antigravity-plugin/skills/mempalace/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
name: mempalace
description: MemPalace — mine projects and conversations into a searchable memory palace. Use when the user asks about MemPalace, memory palace, mining memories, searching memories, palace setup, wings, rooms, or drawers; or when they want to recall past work that may already be filed in their palace.
---

# MemPalace

A searchable memory palace for AI — mine projects and conversations, then search them semantically. Verbatim storage, local-first, zero external API by default.

## Prerequisites

Ensure `mempalace` is installed:

```bash
mempalace --version
```

If not installed (uv recommended):

```bash
uv tool install mempalace # or: pip install mempalace
```

## Dynamic, version-correct instructions

MemPalace exposes operation-specific instructions through the CLI so this skill stays accurate as MemPalace evolves. To get instructions for any operation:

```bash
mempalace instructions <command>
```

Always prefer the CLI output over what is written here when the two disagree — the CLI is the single source of truth for the installed version.

## Common operations

These are the five operations users ask for most often. Each one wraps a single MemPalace CLI subcommand. The `mempalace instructions <name>` form returns the full, version-correct guidance.

### `help` — discover what MemPalace can do

```bash
mempalace instructions help
```

Use when the user is new, unsure what's possible, or asks "what can you do".

### `init` — first-run setup of the palace

```bash
mempalace instructions init
```

Use when the user has just installed MemPalace, no palace exists yet, or the user explicitly asks to set up / configure / re-initialize their palace.

### `mine` — ingest a project or conversation directory

```bash
mempalace instructions mine
```

Use when the user wants to fold a project's files into their palace, or to ingest exported conversation transcripts into the palace as searchable memory.

### `search` — find verbatim memories by semantic query

```bash
mempalace instructions search
```

Use when the user wants to recall something from the past, find a previous decision, or rediscover code/notes/conversations they already wrote.

### `status` — what's in the palace right now

```bash
mempalace instructions status
```

Use when the user asks "what's in my palace", "how big is my palace", or wants a summary of wings, rooms, and drawer counts.

## MCP tools (preferred over CLI)

Inside Antigravity, the MemPalace MCP server registers a rich set of tools. Use these instead of shelling out to the CLI for live operations (search, diary writes, drawer adds, knowledge graph queries, palace status). The MCP tools always reflect the current palace state without spawning a subprocess.

The MCP server is auto-registered when this plugin is installed at `~/.gemini/config/plugins/mempalace/`. If the server does not appear in Antigravity's MCP store, run `mempalace-mcp --version` to verify the binary is on PATH, then restart Antigravity.

## Design principles (verbatim from the project)

- **Verbatim always** — never summarize, paraphrase, or lossy-compress user data.
- **Local-first, zero external API by default** — extraction, embedding, and LLM-assisted refinement happen on the user's machine.
- **Privacy by architecture** — the system never calls out to external services for core operations.
- **Performance budgets** — hooks under 500ms; startup injection under 100ms.
- **Background everything** — filing, indexing, and timestamps happen via hooks in the background; zero tokens spent on bookkeeping in the chat window.

If a request would violate any of these principles, refuse and explain — even if it would be technically convenient.
4 changes: 2 additions & 2 deletions .claude-plugin/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MemPalace Claude Code Plugin

A Claude Code plugin that gives your AI a persistent memory system. Mine projects and conversations into a searchable palace backed by ChromaDB, with 34 MCP tools, auto-save hooks, and 5 guided skills.
A Claude Code plugin that gives your AI a persistent memory system. Mine projects and conversations into a searchable palace backed by ChromaDB, with 37 MCP tools, auto-save hooks, and 5 guided skills.

## Prerequisites

Expand Down Expand Up @@ -51,7 +51,7 @@ Set the `MEMPAL_DIR` environment variable to a directory path to automatically r

## MCP Server

The plugin automatically configures a local MCP server with 34 tools for storing, searching, and managing memories. No manual MCP setup is required -- `/mempalace:init` handles everything.
The plugin automatically configures a local MCP server with 37 tools for storing, searching, and managing memories. No manual MCP setup is required -- `/mempalace:init` handles everything.

### CLI-only mode

Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
{
"name": "mempalace",
"source": "./.claude-plugin",
"description": "AI memory system — mine projects and conversations into a searchable palace. 34 MCP tools, auto-save hooks, guided setup.",
"version": "3.3.7",
"description": "AI memory system — mine projects and conversations into a searchable palace. 37 MCP tools, auto-save hooks, guided setup.",
"version": "3.4.0",
"author": {
"name": "milla-jovovich"
}
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "mempalace",
"version": "3.3.7",
"description": "Give your AI a memory — mine projects and conversations into a searchable palace. 34 MCP tools, auto-save hooks, and guided setup.",
"version": "3.4.0",
"description": "Give your AI a memory — mine projects and conversations into a searchable palace. 37 MCP tools, auto-save hooks, and guided setup.",
"author": {
"name": "milla-jovovich"
},
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MemPalace - Codex CLI Plugin

Give your AI a persistent memory -- mine projects and conversations into a searchable palace backed by ChromaDB, with 34 MCP tools, auto-save hooks, and guided skills.
Give your AI a persistent memory -- mine projects and conversations into a searchable palace backed by ChromaDB, with 37 MCP tools, auto-save hooks, and guided skills.

To run without the MCP tool surface (CLI + hooks + skills only), add `"mcp_mode": "cli-only"` to `~/.mempalace/config.json` -- saves ~9 KB context per session, fails open on bad config. See [MCP Integration guide](https://github.com/MemPalace/mempalace/blob/develop/website/guide/mcp-integration.md#cli-only-mode-mcp_mode).

Expand Down
Loading
Loading