Repository navigation
feat(memory): share notes between the agents in one project's panes - #85
Merged
Merged
Conversation
`nightcrow-memory mcp` is a stdio MCP server each agent's CLI runs. It offers notes (write, search, recent, delete) and a status board (post, read), kept in one SQLite file per project under ~/.nightcrow/memory and found through the two variables nightcrow already sets on every pane, so agents in the same project meet without configuration and an agent started elsewhere reaches nothing. There is no server between them. The host only starts a plugin some pane names or one with `watch_on_signal`, and a single writer process would add nothing SQLite does not already do across processes. The one place that needed care is opening: switching to WAL answers BUSY at once rather than waiting out the busy timeout, so agents starting together failed to open a store that was merely being opened; it is retried. Every read is prefixed with a notice that entries are another agent's unverified notes, authors are labelled with the client name and a prefix of the pane token, and text over a limit is refused rather than cut. The crate inherits the workspace version, so the release policy and the push hook's plugin scope list it beside the recovery plugin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K9Y6nr4J3kMp6GVQNUd9Ry
How to install it and register it with Claude Code, Codex and OpenCode, what each tool does, its limits, and the three things to know before turning it on: a note is another agent's words, the store is neither private nor authenticated, and nothing scans what agents write. The architecture notes record that it is a pane helper outside the plugin protocol, and the decision record why it opens SQLite directly and which alternatives were set aside. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K9Y6nr4J3kMp6GVQNUd9Ry
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Coding agents running in different panes of one project had no way to tell each other anything.
nightcrow-memorygives them a shared set of notes and a status board, as MCP tools each agent's CLI calls.nightcrow-memory mcpis a stdio MCP server. Tools:memory_write,memory_search,memory_recent,memory_delete,board_post,board_read.~/.nightcrow/memory, never inside the repository. The project is found throughNIGHTCROW_PLUGIN_RUNTIME_DIRandNIGHTCROW_PANE_TOKEN, which nightcrow already sets on every pane, so there is no host change.nightcrow-memory exportprints a project's board and notes as Markdown.Design notes for review
watch_on_signal, and a single writer adds nothing SQLite does not already do across processes, so each helper opens the file directly. Recorded indocs/decisions.md.rusqlite0.40 (MIT) withbundled, which compiles SQLite in and needs a C compiler on every CI platform.@code0xffreview): the crate inherits the workspace version, sorelease-policy.json,release-lib.mjsand its test now list six version entries, and the push hook's plugin scope names both plugin crates.docs/plugins.md.Verification
cargo build / test / clippy -D warnings --locked --workspaceandcargo +stable fmt --all --checkpass on macOS: 2205 tests, 60 of them new.BUSYat once, about 40% of concurrent starts) is fixed and covered; the new test fails 3 runs in 10 with the retry removed.node --test scripts/prepare-release.test.mjs scripts/publish-release.test.mjsandprepare-release.mjs checkpass.Not run: Linux and Windows (left to CI), and a session with real Claude Code, Codex or OpenCode. The Codex and OpenCode registration snippets follow those tools' documentation.
🤖 Generated with Claude Code
https://claude.ai/code/session_01K9Y6nr4J3kMp6GVQNUd9Ry