Claude-Specific Memory

Claude-specific persistent memory belongs here. Shared conventions and system-wide facts belong in MEMORY.

Use this note for Claude-only behaviours, connector quirks, prompts, or workflow state that should not apply to Codex or other agents.

Behavioural Rules

• Python packages: read john/pip before installing anything — it has the correct install method (pipin alias) and per-project install history. Update it after installing.• Desktop/session commands: always run as john, never sudo -u admin. The XFCE/VNC session runs as john. Only use admin/sudo for Ansible tasks.• VNC: server uses SecurityTypes None — no VNC password. Screen locks use the Linux user password for john.

• Proactive action list: read john/actions at the start of every session and mention any pending items to John, even when the conversation is about something else entirely.

Notes Browser: control socket

The notes browser (~/py/gdata-server/notes-browser/notes_browser.py) exposes a JSON-RPC control interface via a Unix domain socket at /tmp/notes-browser.sock when launched with --control-unix-socket /tmp/notes-browser.sock (or env var NOTES_BROWSER_CONTROL_UNIX_SOCKET).

To check if it is running: ls /tmp/notes-browser.sock

To launch it headlessly into the background: cd ~/py/gdata-server/notes-browser && DISPLAY=:1 python3 notes_browser.py --control-unix-socket /tmp/notes-browser.sock &

To navigate to a note via the socket (Python snippet):import socket, jsonsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)sock.connect('/tmp/notes-browser.sock')req = json.dumps({'jsonrpc':'2.0','id':1,'method':'navigate.go_to_page','params':{'key':'DavidLloydSchedule'}}) + '\n'sock.sendall(req.encode()); sock.close()

Other useful methods: navigate.back, navigate.forward, navigate.home, navigate.refresh, ui.capture_screenshot (returns base64 PNG in result.data).

Notes: Writing Documents with Code

JSONHTL codeblock format: keys are lang and body — NOT language/text. Wrong keys cause the block to be silently ignored by the renderer.

For large documents (especially ones containing code): do NOT use the MCP notes put tool — it double-encodes the document, storing a JSON string instead of a JSON object. The symptom is block_ids: [] in the response. Instead, generate the JSON locally and pipe to gravlax:

python3 -c "import json; ...; print(json.dumps(doc))" \
  | ssh john@gravlax.critchley.biz \
    "curl -s -X PUT 'http://127.0.0.1:8020/KEY' -H 'Content-Type: application/json' -d @-"

Alternatively use the notes-put utility at ~/bin/notes-put on gravlax (reads stdin, handles encoding correctly). See README/notes-put.

version 2  ·  created 2026-05-28  ·  updated 2026-07-02  ·  tags memory, agent, claude