Dashboard CLI ergonomics: config discovery, daemon + MCP auto-start, first-class install docs (MCP 3.0.0rc2)#99
Conversation
…wins upward walk (settings convention, then the .mcp.json-recorded path; a semantic probe keeps the tracked template from shadowing real settings)
… a flock-guarded ensure (adopt healthy, spawn absent, restart on version mismatch; state under logs/dashboard/), driven from every server boot by the fail-loud dashboard settings key (autoStart, port)
… — README gains Run The Dashboard (discovery, daemon, autoStart) and the PyPI page the same story; pinning documented as the debugging path with one rc-period pre-release note
…ack + README Status)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44c8051d00
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| from agents_remember.benchmarks.runner import CODEX_BENCHMARK_SANDBOX | ||
| from agents_remember.observer import AmbientLifecycle, EventStore, install_ambient, observer_root | ||
| from agents_remember.serving.daemon import maybe_autostart_dashboard |
There was a problem hiding this comment.
Keep the MCP server importable on Windows
On native Windows, this new top-level import makes every agents-remember-mcp startup import agents_remember.serving.daemon, which imports the POSIX-only fcntl module before config is even parsed. The install docs explicitly cover native Windows setup (docs/install/README.md), so Windows users will fail to start the MCP server even when dashboard.autoStart is false; make the daemon import/locking implementation platform-safe or lazy behind the dashboard feature.
Useful? React with 👍 / 👎.
| current, alive = probe(directory) | ||
| mismatch = "" | ||
| if alive and current is not None: | ||
| if current.version == version and current.port == port and current.host == host: |
There was a problem hiding this comment.
Restart the daemon when its config differs
This adoption check ignores the recorded configPath, so a workspace with multiple harness settings files, or a moved/re-rendered settings file sharing the same coordinationRoot, will report adopted while the existing daemon continues serving the old repository/provider configuration. Since spawn() records configPath and the CLI promises to use the caller's trusted settings, include the resolved config identity (and ideally settings content freshness) in the mismatch decision.
Useful? React with 👍 / 👎.
| with socket.create_connection((connect_host, state.port), timeout=0.5): | ||
| return True |
There was a problem hiding this comment.
Verify readiness belongs to the spawned dashboard
When the requested port is already bound by another process, this TCP connect succeeds even though the newly spawned dashboard will fail to bind, so ensure() can return started/restarted and write state for a pid that is not serving the dashboard. The readiness probe needs to confirm the spawned child is still alive after the connection and that the endpoint is the dashboard (or otherwise treat an occupied port as startup failure).
Useful? React with 👍 / 👎.
Dashboard CLI Ergonomics (master series 260703) — and MCP 3.0.0rc2
Makes running the mission-control dashboard effortless and cuts MCP
3.0.0rc2. Built as a master + 4 leaves onar/260703_dashboard-cli-ergonomics(offmain), each leaf landed through its own gated closeout; the release bump lands before the merge per the series sequencing rule.08307e1): config auto-discovery —--configbecomes optional: a nearest-wins upward walk from the working directory (the.claude/mcp/agents-remember-settings.jsonconvention before an.mcp.jsonregistration's recorded path), with a semantic usability probe so the repository's tracked placeholder template never shadows real settings. Newcli/discovery.py+ 8 tests.66af2a7): daemon mode + MCP auto-start —--daemon/--status/--stopover a flock-guardedensure()in the newserving/daemon.py(adopt healthy / spawn absent / restart on version mismatch; atomicdaemon.json, per-spawn-rotated log with access logs off, identity-checked liveness, TERM→KILL stop); the fail-louddashboardsettings key (autoStart,port) drives a threaded, total, stderr-only supervision hook in the MCP server boot. Settings reference + example updated. +38 tests, plus a live-fire smoke (detach survives the parent, HTTP 200, version-mismatch restart, realagents-remember-mcpboot spawning the daemon, clean stop).7bebee5): install docs — the README gains a ToC-linked "Run The Dashboard" section and the PyPI page the same story: unpinneduv tool install agents-remember-mcpfirst-class, pinning as the debugging path, one rc-period pre-release note. Every documented command verified against real PyPI resolution (unpinned resolves the latest stable;--prerelease allowresolves the rc).44c8051): release3.0.0rc2(pyproject +SERVER_VERSIONfallback + README Status).Suite: 1393 passed / quality gate exit 0 at every leaf. Post-merge: memory carryover onto the official memory main, then tag
mcp-v3.0.0rc2to publish to PyPI with GitHub Release notes.🤖 Generated with Claude Code