This guide explains how to set up MemPalace as a permanent memory for the Gemini CLI.
- Python 3.9+
- Gemini CLI installed and configured
On many Linux systems, installing Python packages globally is restricted. We recommend using a local virtual environment within the MemPalace directory.
# Clone the repository (if you haven't already)
git clone https://github.com/milla-jovovich/mempalace.git
cd mempalace
# Create a virtual environment
python3 -m venv .venv
# Install dependencies and MemPalace in editable mode
.venv/bin/pip install -e .Set up your "Palace" (the database) and configure your identity.
# Initialize the palace in the current directory
.venv/bin/python3 -m mempalace init .You can manually define who you are and what projects you work on by creating/editing these files in ~/.mempalace/:
~/.mempalace/identity.txt: A plain text file describing your role and focus.~/.mempalace/wing_config.json: A JSON file mapping projects and name variants to "Wings".
Register MemPalace as an MCP server so Gemini CLI can use its tools.
gemini mcp add mempalace /absolute/path/to/mempalace/.venv/bin/python3 -m mempalace.mcp_server --scope userNote: Use the absolute path to ensure it works from any directory.
To ensure the AI saves memories automatically when conversation history becomes too long, add a PreCompress hook to your Gemini CLI settings.
Edit your ~/.gemini/settings.json and add the following:
{
"hooks": {
"PreCompress": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "/absolute/path/to/mempalace/hooks/mempal_precompact_hook.sh"
}
]
}
]
}
}Make sure the hook scripts are executable:
chmod +x hooks/*.shOnce connected, Gemini CLI will automatically:
- Start the MemPalace server on launch.
- Use
mempalace_searchto find relevant past discussions. - Use the
PreCompresshook to save new memories before they are lost.
If you want the AI to learn from your existing code or docs immediately, run the "mine" command:
.venv/bin/python3 -m mempalace mine /path/to/your/projectIn a Gemini CLI session, you can run:
/mcp list: VerifymempalaceisCONNECTED./hooks panel: Verify thePreCompresshook is active.