Skip to content

feat: switch sidecar transport from SSE to Streamable HTTP#624

Open
TylerJNewman wants to merge 5 commits intobasicmachines-co:mainfrom
TylerJNewman:main
Open

feat: switch sidecar transport from SSE to Streamable HTTP#624
TylerJNewman wants to merge 5 commits intobasicmachines-co:mainfrom
TylerJNewman:main

Conversation

@TylerJNewman
Copy link

Summary

  • Switch sidecar MCP transport from deprecated SSE to Streamable HTTP (current MCP spec standard)
  • Update both Dockerfile.sidecar and docker-compose.sidecar.yml
  • Streamable HTTP is natively supported by Claude Code (--transport http), no proxy needed

Test plan

  • Docker image builds cleanly
  • MCP initialize handshake verified locally (POST /mcp returns capabilities)
  • Deploy to Railway and verify remote connectivity
  • Connect from Claude Code: claude mcp add --transport http basic-memory <url>/mcp

🤖 Generated with Claude Code

TylerJNewman and others added 5 commits February 26, 2026 17:41
Research documents covering Basic Memory's full architecture,
a sidecar deployment strategy with R2 sync hub, and phased
deployment plan for Railway with local bisync.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: TylerJNewman <tylerjnewman18@gmail.com>
Three sequential phases for deploying Basic Memory as a sidecar:
- 00: Deploy sidecar container on Railway with persistent volume
- 01: Set up Cloudflare R2 sync hub with rclone bisync
- 02: Connect chat app agent with knowledge organization

Each phase includes verification checklists, troubleshooting,
confidence levels, and instructions to stop and ask if uncertain.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: TylerJNewman <tylerjnewman18@gmail.com>
- Add docker-compose.sidecar.yml for sidecar deployment pattern
- Single volume at /app/data stores config, DB, and markdown files
- Config dir override via BASIC_MEMORY_CONFIG_DIR=/app/data/.config
- Semantic search disabled for local testing (sqlite_vec ARM compat)
- Updated plan with all tasks completed and learnings documented

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: TylerJNewman <tylerjnewman18@gmail.com>
- Add Dockerfile.sidecar (root user for Railway volume compat, entrypoint)
- Add entrypoint.sh to create config/data dirs before startup
- Deploy to Railway: bm-sync service on exemplary-renewal project
- Persistent volume at /app/data (50GB)
- SSE endpoint live at robust-creation-production-70db.up.railway.app/mcp
- Phase 00 fully complete with all tasks verified

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: TylerJNewman <tylerjnewman18@gmail.com>
SSE is deprecated in the MCP spec. Streamable HTTP is the current
standard and is natively supported by Claude Code (`--transport http`).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: TylerJNewman <tylerjnewman18@gmail.com>
@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5880a74c44

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +48 to +49
"transport": "sse",
"url": "http://basic-memory-sidecar.railway.internal:8000/sse"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use streamable HTTP settings in integration example

This client configuration still tells integrators to use "transport": "sse" at /sse, but the sidecar introduced in this commit is started with --transport streamable-http (see Dockerfile.sidecar and docker-compose.sidecar.yml), which serves MCP on /mcp with streamable HTTP semantics. Anyone following this example will fail MCP initialization against the deployed sidecar, so the integration guide now points to a non-working connection setup.

Useful? React with 👍 / 👎.

@bm-clawd
Copy link
Contributor

@TylerJNewman Thanks for the PR! Could you sign the CLA when you get a chance? The CLA assistant link should be in the checks below. Also, the Codex review caught that the integration example in the README still references "transport": "sse" and /sse — would you mind updating that to match the new streamable-http / /mcp endpoint?

@phernandez phernandez added the On Hold Don't review or merge. Work is pending label Feb 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

On Hold Don't review or merge. Work is pending

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants