Point an AI client at one URL and it can remember across sessions. Or write to the same memory from a script. Both take a few lines.
Add this URL as a custom connector or MCP server in your client. You sign in once in the browser and every call is scoped to your account.
https://mcp.smartmemory.ai/mcpThen ask your assistant to run whoami to confirm the connection.
Each row was connected by a person on the date shown. Other MCP clients that support remote servers can use the same URL, but we only list the ones we have run.
| Client | Setup | Verified on |
|---|---|---|
| Claude.ai | Settings, Connectors, Add custom connector, paste the URL | 2026-09-04 |
| Claude Code | claude mcp add --transport http smartmemory https://mcp.smartmemory.ai/mcp | 2026-09-04 |
| Claude Desktop (stdio bridge) | npx -y mcp-remote https://mcp.smartmemory.ai/mcp | 2026-09-04 |
| ChatGPT desktop app | Plugins, MCPs, Add custom MCP, Streamable HTTP, paste the URL, leave the bearer token empty | 2026-09-04 |
Install with pip install smartmemory. This runs locally with no account and no services to start.
from smartmemory.tools.factory import lite_context
with lite_context() as memory:
memory.ingest("Alice leads Project Atlas")
results = memory.search("who leads Atlas", top_k=5)
print(results[0].content)A scripted write that keeps the reasoning and the options you rejected:
from smartmemory.tools.factory import lite_context
with lite_context() as memory:
decision = memory.add_decision(
"Use SQLite for local storage",
rejected_alternatives=["Postgres sidecar"],
rationale="Zero-infra installs must work offline",
)
print(memory.get_decision(decision.decision_id).rejected_alternatives)Install with npm install @smartmemory/sdk-js. Use an API key from your dashboard settings.
import { SmartMemoryClient } from '@smartmemory/sdk-js'
const client = new SmartMemoryClient({
mode: 'apiKey',
apiBaseUrl: 'https://api.smartmemory.ai',
apiKey: process.env.SMARTMEMORY_API_KEY,
})
await client.memories.ingest('Atlas ships in Q3, owned by Priya.')
const { results } = await client.memories.search('who owns Atlas', { topK: 5 })