zephex
CLIGet StartedPricingMCP ToolsCommunityGuidesDocs
←BackSign in
CLIGet StartedPricingMCP ToolsCommunityGuidesDocs
Get started freeSign in
DocsAPIToolsEditorsChangelogHelp

GET STARTED

WelcomeQuickstartSetup videoMCP Q&A (learn)BlogWhat is MCP?Who is Zephex for?Plans & PricingZ-GASAB benchmarkBenchmark chart (live)Changelog

CLI

Install & upgradeStartAll install methodsnpx zephex setupCLI without an agentFirst run (init)Login, logout, keysCommand referenceTerminal Mode 2Slash commandsCLI in Docker

INSTALLATION

Connect MCPAll editors (one command)Crush, Hermes, ChatGPT, KiloVS Code Marketplace extensionOAuth & HTTP setupSetup walkthroughHTTP vs stdioWeb Terminal (dashboard)Web Terminal toolsTerminal tools (complete)Test PulseTest Pulse commandsdeep (Project Dossier)Project MemorySupply PulseSupply Pulse commandsinstall (GitHub / npm files)install file commandsCommand CompassHTTP API

API & KEYS

API Key ManagementKey Naming & FormatAuthenticationKey Dashboard

CONFIGURATION

Universal RequirementsSupported EditorsHow It WorksArchitectureCLAUDE.md TemplateAGENTS.md Template

EDITORS28 guides

Supported EditorsVS CodeVS Code extension (Marketplace)Claude CodeCursorWindsurfJetBrains

PLATFORM

macOSWindowsLinux

TOOLS10 tools

Capabilities OverviewTools OverviewTool FilteringTool Workflowsget_project_contextread_codefind_codecheck_packageexplain_architectureZephex_dev_infocheck_testaudit_headerskeep_thinkingproject_memory

GUIDES

Best PracticesToken EfficiencyUse CasesZephex vs Local MCPZephex vs Context7Zephex vs GitHub MCPZephex vs SmitheryMCP EcosystemMarkdown Access

SUPPORT

Help CenterMCP troubleshootingTeam rolloutFAQConnection IssuesRate LimitsDowntime & ErrorsBillingTier GuidePro & Max guideUsage LimitsUsage Analytics

LEGAL

System StatusTerms (summary)Privacy (summary)Data UseSecurityAuthenticationSecurityData HandlingPrivacy PolicyTerms of Service

Quick Links

API Reference

Complete API documentation

Troubleshooting

Common issues and solutions

Community

Join our Discord community

Plugins

Editor and CLI integrations

Pricing

Free, Pro, and Max plans

Enter
Zephex_devzephex-devzephexzephexhello@zephex.dev
© 2026 Zephex. All systems operational.

Installation

Project Memory — what you learned stays

Store decisions, gotchas, and goals across agent sessions. Local SQLite on your machine — not a cloud memory SaaS, not a repo scanner.

Tool reference: project_memory MCP guide · HTTP vs stdio · get_project_context · NPX setup

What it is

One sentence

project_memoryis one of Zephex's ten MCP tools — four actions that persist learned facts per project: decisions you made, gotchas you hit, goals you set, conventions the team follows.

Tagline

What you learned stays. What the repo is — that's get_project_context.

Context tools scan files. Memory tools store what scanning cannot infer: tribal knowledge discovered while coding.

Terminal CLI (primary way for humans)

shell
mcpcli remember "auth uses Supabase JWT in cookies"mcpcli recall authmcpcli memory listmcpcli memory forget <uuid> # Slash palette in interactive shell# /remember  /recall  /memory

Not package upgrades — that is mcpcli check-package next --task upgrade (legacy alias: loop-guard). See slash commands.

What it is not

  • Not a replacement for get_project_context (stack, scripts, layout)
  • Not automatic chat logging — every memory is an explicit remember call
  • Not a session-start token dump — recall is on-demand when you need it
  • Not a full chat export — hosted cloud memory needs a dashboard-linked API key; local stdio still writes ~/.zephex/memory/ when using npx zephex in editors
Memory vs context

Two complementary tools

get_project_contextproject_memory
Data sourceAuto-scan manifests, config, gitExplicit remember calls
Updates whenOn scan / cache refreshAgent or user intends to save
Best forNew repo orientationReturning to a repo across sessions
TransportLocal stdio + hosted HTTPLocal stdio only (v1)
StorageEphemeral scan results~/.zephex/memory/ SQLite

Typical flow: get_project_context on day one → work and discover quirks → project_memory remember → new session next week → project_memory recall before touching that area again.

Four actions

remember · recall · list · forget

One MCP tool. The action parameter selects the operation.

remember — save a fact

Requires title (max 80 chars), content (max 500 chars), and type. Optional area, tags, written_by. Paraphrase lessons — do not dump whole files.

json
{  "name": "project_memory",  "arguments": {    "action": "remember",    "title": "Stripe webhook idempotency",    "content": "Webhook handler dedupes by event.id in Redis 24h TTL. Do not use DB unique on raw payload.",    "type": "decision",    "area": "billing",    "tags": ["stripe", "webhooks"],    "written_by": "agent"  }}

recall — FTS5 keyword search

Requires query. Returns up to 5 matches with ~500 token budget. Updates last_recalled_at on hits. Call before editing unfamiliar subsystems.

json
{  "name": "project_memory",  "arguments": {    "action": "recall",    "query": "stripe webhook idempotency billing"  }}

list — audit without bodies

Returns titles, types, areas, and ids — useful when near the 200-memory cap or cleaning stale entries.

forget — delete by id

Pass the uuid from remember or list. Rewrites .zephex/memory.md in project scope.

Memory types

  • decision — architectural or product choice
  • gotcha — non-obvious trap or legacy constraint
  • goal — active objective across sessions
  • preference — team or user style preference
  • area_fact — fact about a subsystem
  • convention — naming, error shape, or process rule
Storage

Where memory lives

All data stays on your machine under ~/.zephex/memory/ — the same home directory family as Test Pulse sessions and credentials.

text
~/.zephex/memory/├── index.json              # registry: sha256 → { root, name, updated_at }├── personal/│   └── memories.db         # when no project root detected└── projects/    └── {sha256(absRoot)}.db  # one SQLite DB per project

Project isolation

Each absolute project root maps to sha256(root). Cursor's global-memory bleed problem is the cautionary tale — Zephex never mixes memories across projects unless you explicitly pass scope: "all" on recall (foreign hits get a warning field).

SQLite + FTS5

  • bun:sqlite with WAL mode — concurrent-safe, sub-ms search at scale
  • FTS5 virtual table on title, content, area, tags — keyword recall, no embedding RAM hog
  • 14-field memories table + meta key/value per database
  • Hard cap: 200 memories per project

Markdown mirror

After remember or forget in project scope, Zephex rewrites <projectRoot>/.zephex/memory.md with titles and metadata. Gitignore it by default; use it to audit what agents stored without opening SQLite.

Stdio only

Why hosted MCP cannot use memory

zephex.dev/mcp is served via Vercel and forwards to Railway — it cannot read ~/.zephex on your laptop. Calling project_memory over HTTP returns a structured error instead of failing silently:

json
{  "error": "local_stdio_required",  "message": "project_memory requires local stdio transport (npx zephex)...",  "hint": "Use get_project_context, find_code, read_code on hosted MCP...",  "docs": "https://zephex.dev/docs/tools/project-memory"}

Fix: add stdio transport for memory while keeping HTTP for other tools, or use stdio for everything. See HTTP vs stdio.

Stdio config (Cursor / Claude Code)

json
{  "mcpServers": {    "zephex": {      "command": "npx",      "args": ["-y", "zephex"],      "env": { "ZEPHEX_API_KEY": "mcp_sk_your_key_here" }    }  }}

No Node? curl -fsSL https://zephex.dev/cli/install.sh | bash. Already have Node 22.5+? npx -y zephex@latest (terminal) or npx -y zephex@latest setup --cursor (editor). Install & upgrade. Same CLI: mcpcli, zepx, zphx, mcpz, zepcli, zephx, or zephex (after npm i -g zephex).

Security

What gets rejected on remember

Memory poisoning and secret leaks are blocked at write time:

  • AWS keys (AKIA…), Stripe live keys, OpenAI sk-…
  • GitHub ghp_, Slack xoxb- tokens
  • PEM private keys
  • Instruction-shaped content (always ignore…, never skip…)

Rejected writes return status: "rejected" with a reason — never silent drop. Store the lesson, not the secret.

Privacy

Memory files never upload to Zephex servers in v1. Your API key still authenticates MCP calls, but memory content stays local. Each project_memory call counts as one request on your plan like any other tool.

Workflows

How agents should use memory

New repo (first session)

  1. get_project_context — stack, entry points, scripts
  2. Work normally with find_code / read_code
  3. project_memory remember after non-obvious discoveries

Returning repo (new session)

  1. project_memory recall with area keywords before editing
  2. Apply returned facts — do not re-scan the whole repo for known gotchas
  3. remember updates; forget stale entries

Cross-editor continuity

Same npx zephex stdio install in Cursor Monday and Claude Code Thursday — same ~/.zephex/memory/ database for the same project root. That is the wedge vs editor-native memory silos.

Pairing with verification tools

check_test scopes files → agent implements → project_memory remembers the fix pattern if it was non-obvious. Memory captures the lesson so the next session does not re-learn it.

Limits

Caps and budgets

LimitValue
Memories per project200 (reject remember with cap_reached)
Title length80 characters
Content length500 characters
recall default hits5 (max 10 via limit)
recall token budget~500 tokens total response
Tags per memory10
Scope defaultproject (current DB only)
Scope modes

project · personal · all

  • project (default) — current project database only. Safe default; no cross-project leakage.
  • personal — personal/memories.dbwhen cwd has no git/package markers. Global preferences like "prefer bun over npm."
  • all (recall only) — searches every registered project plus personal. Each foreign match includes a warning so agents know the source project.

Project root detection walks up from cwd for .git, package.json, pyproject.toml, go.mod, or Cargo.toml.

Troubleshooting

Common issues

local_stdio_required
Switch MCP config from HTTP URL to npx zephex stdio. Memory cannot run on hosted transport.
rejected / secret_detected
Rephrase without API keys or tokens. Store the pattern, not the credential.
cap_reached
Run list, forget stale ids, then remember again.
Empty recall on first visit
No memories stored yet — expected. recall does not create empty database files on virgin projects.
Wrong project memories
Confirm cwd / path points at the correct root. Each root has its own hash.
Roadmap

v1 vs future

Shipped in v1:

  • Single MCP tool, four actions
  • Local SQLite FTS5 + WAL
  • Project isolation, secret rejection, markdown export
  • Hosted graceful error

Not in v1 (possible follow-ups):

  • zephex memory CLI subcommands
  • SessionStart hook with ≤400 token inject
  • Cloud sync / team shared memory
  • confidence, expires_at, supersedes_id in MCP schema