Proma × Nowledge Mem
Connect Proma to Nowledge Mem with MCP tools, automatic thread capture, startup context, and standard skills.
For your agent
Give this line to your agent if you want it to help with setup:
Read https://mem.nowledge.co/SKILL.md and follow the instructions to install or update Nowledge Mem for Proma. Verify with nmem status, startup context, and a saved Proma thread, then summarize what changed.Proma can use Nowledge Mem in three ways:
- MCP tools let Proma search memories, save durable knowledge, and browse Mem when the task needs it.
- Lifecycle hooks save Proma conversations into Mem threads.
- Startup context writes your current Mem context into Proma's workspace
CLAUDE.md, so new Proma sessions begin with the right memory.
Proma v0.13.0 and newer include a Nowledge Mem card in Proma's Memory settings. Start there if you are setting this up for the first time: it copies a setup prompt you can paste into Proma Agent mode. Keep this page open for the exact files, update steps, and verification checks.
How you'll know it worked
Open a new Proma session and ask What was I working on?. Then send a message with a unique phrase, wait for Proma to reply, and run nmem t search "that phrase" --source proma. You should see the Proma thread in Mem.
Before You Start
- Nowledge Mem is running locally, or you have a reachable remote Mem server.
- Proma is installed.
- Python 3.9+ is available as
python3. nmemworks in your terminal.
nmem statusIf nmem is missing, install it from the Mem desktop app developer tools or run:
pip install nmem-cliInstall
If you are on Proma v0.13.0 or newer, open Proma Settings → Memory → Nowledge Mem, copy the setup prompt, and paste it into Proma Agent mode. The manual steps below are the same contract, written out so you can audit or repair the setup.
The examples use Proma's default workspace. If your workspace has a different name, replace default with the directory name under ~/.proma/agent-workspaces/.
If your platform exposes Python only as python, replace python3 with python in the hook commands.
Download the plugin files [step]
rm -rf /tmp/nowledge-community
git clone https://github.com/nowledge-co/community.git /tmp/nowledge-community
mkdir -p ~/.proma/scripts ~/.proma/agent-workspaces/default/skills
cp /tmp/nowledge-community/nowledge-mem-proma-plugin/hooks/save-to-nmem.py ~/.proma/scripts/
cp /tmp/nowledge-community/nowledge-mem-proma-plugin/hooks/read-working-memory.py ~/.proma/scripts/
chmod +x ~/.proma/scripts/save-to-nmem.py ~/.proma/scripts/read-working-memory.py
cp -R /tmp/nowledge-community/nowledge-mem-proma-plugin/skills/{read-working-memory,search-memory,distill-memory,save-thread,status} ~/.proma/agent-workspaces/default/skills/Add the MCP server [step]
Create or edit:
~/.proma/agent-workspaces/default/mcp.jsonIf the file already exists, merge nowledge-mem into the existing servers object.
{
"servers": {
"nowledge-mem": {
"url": "http://127.0.0.1:14242/mcp/",
"type": "streamableHttp",
"headers": {
"APP": "Proma"
}
}
}
}For remote Mem, replace the URL and add your key:
{
"servers": {
"nowledge-mem": {
"url": "https://mem.example.com/mcp/",
"type": "streamableHttp",
"headers": {
"APP": "Proma",
"Authorization": "Bearer nmem_your_key",
"X-NMEM-API-Key": "nmem_your_key"
}
}
}
}Enable hooks [step]
Create or edit:
~/.proma/sdk-config/.claude/settings.jsonMerge this into the hooks object. Use absolute paths if your Proma build does not expand $HOME.
{
"hooks": {
"SessionStart": [
{
"matcher": "startup|resume",
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.proma/scripts/read-working-memory.py\"",
"timeout": 15000
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.proma/scripts/save-to-nmem.py\" --event user-prompt-submit",
"timeout": 30000
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.proma/scripts/save-to-nmem.py\" --event stop",
"timeout": 30000
}
]
},
{
"hooks": [
{
"type": "command",
"command": "python3 \"$HOME/.proma/scripts/read-working-memory.py\" --rewake",
"timeout": 15000,
"async": true,
"asyncRewake": true,
"rewakeMessage": "Nowledge Mem context refreshed"
}
]
}
]
}
}Restart Proma [step]
Restart Proma after changing MCP, hooks, or skills.
What Happens
UserPromptSubmitsaves the current Proma thread before the next user turn.Stopsaves again after a response, so missed or delayed transcript writes are covered.- The save hook reads Proma transcripts from
~/.proma/sdk-config/projects/**/<session-id>.jsonland writes them as sourceproma. SessionStartrefreshes the Nowledge Mem block inside~/.proma/agent-workspaces/default/CLAUDE.md.StopasyncRewake can push a compact Working Memory reminder after assistant turns.
Proma's current Claude Agent SDK does not reliably inject SessionStart stdout as model context. That is why this connector writes a marked CLAUDE.md block instead:
<!-- nowledge-mem:start -->
...
<!-- nowledge-mem:end -->Keep your own Proma instructions outside that block, or in CLAUDE.md.template.
Update
cd /tmp/nowledge-community
git pull
cp nowledge-mem-proma-plugin/hooks/save-to-nmem.py ~/.proma/scripts/
cp nowledge-mem-proma-plugin/hooks/read-working-memory.py ~/.proma/scripts/
chmod +x ~/.proma/scripts/save-to-nmem.py ~/.proma/scripts/read-working-memory.py
cp -R nowledge-mem-proma-plugin/skills/{read-working-memory,search-memory,distill-memory,save-thread,status} ~/.proma/agent-workspaces/default/skills/Then merge the latest nowledge-mem-proma-plugin/hooks/hooks.json into ~/.proma/sdk-config/.claude/settings.json and restart Proma.
Remote Mode
For MCP, keep the remote URL and key in Proma's mcp.json.
For hooks and CLI fallback, configure the local nmem client once on the machine running Proma:
nmem config client set url https://mem.example.com
nmem config client set api-key nmem_your_keyTroubleshooting
MCP tools do not appear. Confirm mcp.json uses servers as the top-level key, then restart Proma.
Startup context does not appear. Run python ~/.proma/scripts/read-working-memory.py, then check ~/.proma/agent-workspaces/default/CLAUDE.md for the nowledge-mem:start block.
Threads do not appear in Mem. Wait for Proma to finish a turn, then check ~/.proma/logs/nm-hooks.log and search with nmem t search "<phrase>" --source proma.
Remote MCP works, but hooks do not. MCP uses Proma's mcp.json; hooks use the local nmem client config. Set both to the same remote Mem server.