[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75031":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},75031,"mem9","mem9-ai\u002Fmem9","mem9-ai","Unlimited memory for OpenClaw","",null,"TypeScript",1131,115,6,47,0,7,16,49,21,81.09,"Apache License 2.0",false,"main",[],"2026-06-12 04:01:17","\u003Cp align=\"center\">\n  \u003Cimg src=\"site\u002Fpublic\u002Fmem9-wordmark-square.svg\" alt=\"mem9\" width=\"180\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cstrong>Persistent Memory for AI Agents.\u003C\u002Fstrong>\u003Cbr\u002F>\n  Your agents forget everything between sessions. mem9 fixes that with persistent memory across sessions and machines, shared memory for multi-agent workflows, and hybrid recall with a visual dashboard.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  For OpenClaw and ClawHub installs, start here: \u003Ca href=\"https:\u002F\u002Fmem9.ai\u002Fopenclaw-memory\">mem9.ai\u002Fopenclaw-memory\u003C\u002Fa>\n  \u003Cbr\u002F>\n  Hermes Agent, Claude Code, OpenCode, Codex, and Dify guides are below.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ftidbcloud.com\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPowered%20by-TiDB%20Cloud%20Starter-E60C0C?style=flat&logo=data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj48cGF0aCBkPSJNMTEuOTk4NCAxLjk5OTAyTDMuNzE4NzUgNy40OTkwMkwzLjcxODc1IDE3TDExLjk5NjQgMjIuNUwyMC4yODE0IDE3VjcuNDk5MDJMMTEuOTk4NCAxLjk5OTAyWiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=\" alt=\"Powered by TiDB Cloud Starter\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fmem9-ai\u002Fmem9\u002Fserver\">\u003Cimg src=\"https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fmem9-ai\u002Fmem9\u002Fserver\" alt=\"Go Report Card\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fmem9-ai\u002Fmem9?style=social\" alt=\"Stars\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Quick Start\n\n1. Choose your mem9 endpoint.\n\n   - Hosted API: `https:\u002F\u002Fapi.mem9.ai`\n   - Self-hosted: apply the matching control-plane schema, then start `mnemo-server`:\n\n     ```bash\n     cd server\n     MNEMO_DSN=\"user:pass@tcp(host:4000)\u002Fmnemos?parseTime=true\" go run .\u002Fcmd\u002Fmnemo-server\n     ```\n\n     See [Self-Hosting](#self-hosting) for backend-specific setup details, and [API Reference](#api-reference) for provisioning.\n\n2. Pick your integration guide.\n\n   - [OpenClaw \u002F ClawHub](https:\u002F\u002Fmem9.ai\u002Fopenclaw-memory)\n   - [Hermes Agent](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-hermes-plugin#readme)\n   - [Claude Code](claude-plugin\u002FREADME.md)\n   - [OpenCode](opencode-plugin\u002FREADME.md)\n   - [Codex](codex-plugin\u002FREADME.md)\n   - [Dify](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-dify-plugin#readme)\n   - [Any HTTP client \u002F custom runtime](#api-reference)\n\n3. Set your credentials.\n\n   ```bash\n   # Hosted API\n   export MEM9_API_URL=\"https:\u002F\u002Fapi.mem9.ai\"\n   export MEM9_API_KEY=\"\u003Cmem9-api-key>\"\n\n   # Self-hosted\n   export MEM9_API_URL=\"http:\u002F\u002Flocalhost:8080\"\n   export MEM9_API_KEY=\"\u003Cmem9-api-key>\"\n   ```\n\n   For self-hosted deployments, use your server URL and the mem9 API key returned or configured by your provisioning flow.\n\n## Why mem9\n\nmem9 gives coding agents one shared memory layer instead of separate local notebooks and one-off prompt files.\n\n| What mem9 gives you | Why it matters |\n|---|---|\n| Persistent memory across sessions and machines | Your context survives restarts, laptop switches, and long-running projects |\n| Shared memory across agents and workflow platforms | OpenClaw, Hermes Agent, Claude Code, OpenCode, Codex, Dify apps, and custom clients can recall the same facts |\n| Stateless integrations | Runtime plugins stay thin because storage, search, ingest, and policy live in the server |\n| Hybrid recall and a visual dashboard | Semantic search, keyword search, and inspection workflows stay in one system |\n\n## Supported Platforms and Agent Runtimes\n\n| Platform | Integration shape | Install \u002F docs |\n|---|---|---|\n| OpenClaw | `kind: \"memory\"` plugin for server-backed shared memory | [OpenClaw \u002F ClawHub install guide](https:\u002F\u002Fmem9.ai\u002Fopenclaw-memory) |\n| Hermes Agent | Memory provider plugin with setup and activation flow | [mem9-hermes-plugin README](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-hermes-plugin#readme) |\n| Claude Code | Marketplace plugin with hooks and skills | [`claude-plugin\u002FREADME.md`](claude-plugin\u002FREADME.md) |\n| OpenCode | Plugin SDK integration loaded from `opencode.json` | [`opencode-plugin\u002FREADME.md`](opencode-plugin\u002FREADME.md) |\n| Codex | Marketplace plugin with managed hooks and project overrides | [`codex-plugin\u002FREADME.md`](codex-plugin\u002FREADME.md) |\n| Dify | Tool plugin for Dify Agent apps and Workflow apps, with single-space and multi-space authorization | [mem9-dify-plugin README](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-dify-plugin#readme) |\n| Any HTTP client \u002F custom runtime | Direct REST API integration | [API Reference](#api-reference) |\n\nAll supported runtimes and platform integrations expose the same core memory flow: store, search, get, update, and delete against the mem9 server API.\n\n## Why the Hosted API\n\nThe hosted mem9 API is the fastest way to put persistent memory behind an agent fleet while keeping the option to self-host later.\n\n| Hosted API capability | Why teams start here |\n|---|---|\n| Hosted mem9 API with instant space provisioning | You can install an agent integration first and skip standing up infrastructure on day one |\n| Shared memory across runtimes and platforms | One space can serve OpenClaw, Hermes Agent, Claude Code, OpenCode, Codex, Dify apps, and custom clients together |\n| Managed search and storage | Hybrid recall works out of the box without a separate vector stack or sync layer |\n| TiDB Cloud Starter foundation | The hosted path benefits from instant provisioning, native vector search, full-text search, server-side auto-embedding, hybrid search, and MySQL-compatible operational semantics |\n| Same API contract as self-hosted mem9 | Moving to your own deployment is a base-URL and credential change, not a plugin rewrite |\n| Visual dashboard and product onboarding | Teams can inspect and manage memory without building internal tooling first |\n\nUnder the hood, the hosted mem9 API runs the same mem9 server model surfaced in this repository, with TiDB Cloud Starter providing managed provisioning, native vector search, full-text search, server-side auto-embedding, hybrid search, and MySQL-compatible storage semantics.\n\n## API Reference\n\nSet `X-Mnemo-Agent-Id` on authenticated memory, import, and session-message requests when you want the server to distinguish which runtime or agent instance is writing and recalling memories inside the same mem9 space. This works on both the tenant-path `v1alpha1` routes and the `v1alpha2` API-key routes.\n\n### Provisioning\n\nUse this endpoint when you want mem9 to auto-provision a new TiDB-backed space.\n\n| Method | Path | Description |\n|--------|------|-------------|\n| `POST` | `\u002Fv1alpha1\u002Fmem9s` | TiDB auto-provision endpoint when a provisioner is configured. TiDB Zero enables this path by default on `tidb`; TiDB Cloud Pool uses `MNEMO_TIDB_ZERO_ENABLED=false` with `MNEMO_TIDBCLOUD_API_KEY` and `MNEMO_TIDBCLOUD_API_SECRET`. Manual-bootstrap deployments use pre-existing tenants instead of this path. Returns `{ \"id\" }`. Accepts optional `utm_*` query params for attribution logging |\n\nPrefer `v1alpha2` for all new integrations. It uses `X-API-Key` and is the primary API surface for current runtimes.\n\n### Preferred API (`v1alpha2`)\n\n| Method | Path | Description |\n|--------|------|-------------|\n| `POST` | `\u002Fv1alpha2\u002Fmem9s\u002Fmemories` | Preferred unified write endpoint. Requires `X-API-Key` header |\n| `GET` | `\u002Fv1alpha2\u002Fmem9s\u002Fmemories` | Preferred search endpoint. Requires `X-API-Key` header |\n| `GET` | `\u002Fv1alpha2\u002Fmem9s\u002Fmemories\u002F{id}` | Preferred get-by-id endpoint. Requires `X-API-Key` header |\n| `PUT` | `\u002Fv1alpha2\u002Fmem9s\u002Fmemories\u002F{id}` | Preferred update endpoint. Requires `X-API-Key` header |\n| `DELETE` | `\u002Fv1alpha2\u002Fmem9s\u002Fmemories\u002F{id}` | Preferred delete endpoint. Requires `X-API-Key` header |\n\n### Legacy Tenant-Path API (`v1alpha1`)\n\nUse these endpoints only when you need compatibility with older tenant-ID-in-path clients.\n\n| Method | Path | Description |\n|--------|------|-------------|\n| `POST` | `\u002Fv1alpha1\u002Fmem9s\u002F{tenantID}\u002Fmemories` | Legacy unified write endpoint. Tenant key travels in the URL path |\n| `GET` | `\u002Fv1alpha1\u002Fmem9s\u002F{tenantID}\u002Fmemories` | Legacy search endpoint for `tenantID`-configured clients |\n| `GET` | `\u002Fv1alpha1\u002Fmem9s\u002F{tenantID}\u002Fmemories\u002F{id}` | Legacy get-by-id endpoint |\n| `PUT` | `\u002Fv1alpha1\u002Fmem9s\u002F{tenantID}\u002Fmemories\u002F{id}` | Legacy update endpoint. Optional `If-Match` for version check |\n| `DELETE` | `\u002Fv1alpha1\u002Fmem9s\u002F{tenantID}\u002Fmemories\u002F{id}` | Legacy delete endpoint |\n\n## Self-Hosting\n\nBefore first start, apply the control-plane schema that matches your backend: `server\u002Fschema.sql`, `server\u002Fschema_pg.sql`, or `server\u002Fschema_db9.sql`.\n\nmem9 server supports multiple storage backends. Set `MNEMO_DB_BACKEND` to `tidb`, `postgres`, or `db9`, point `MNEMO_DSN` at that backend, and the rest of the runtime contract stays the same for your agents. TiDB supports three tenant flows: TiDB Zero auto-provisioning is enabled by default on `tidb`; TiDB Cloud Pool auto-provisioning uses `MNEMO_TIDB_ZERO_ENABLED=false` with `MNEMO_TIDBCLOUD_API_KEY` and `MNEMO_TIDBCLOUD_API_SECRET`; manual bootstrap uses pre-existing tenants mode. `postgres` and `db9` use the advanced manual-bootstrap path, which requires an active tenant row in the control-plane DB plus a live tenant database and schema behind it. In `v1alpha2`, `X-API-Key` resolves tenants by ID lookup.\n\n### Build & Run\n\n```bash\nmake build\ncd server\nMNEMO_DSN=\"user:pass@tcp(host:4000)\u002Fmnemos?parseTime=true\" .\u002Fbin\u002Fmnemo-server\n```\n\nFor PostgreSQL or db9 deployments, export `MNEMO_DB_BACKEND=postgres` or `MNEMO_DB_BACKEND=db9` before launching the server.\n\n### Docker\n\n`make docker` tags the image as `${REGISTRY}\u002Fmnemo-server:${COMMIT}`. This local example builds `local\u002Fmnemo-server:dev`:\n\n```bash\nmake docker REGISTRY=local COMMIT=dev\ndocker run -e MNEMO_DSN=\"...\" -e MNEMO_DB_BACKEND=\"tidb\" -p 8080:8080 local\u002Fmnemo-server:dev\n```\n\n### Environment Variables\n\nMinimal runtime config is `MNEMO_DSN`. Everything else is optional or only applies to specific deployment modes.\n\n#### Core Server\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_DSN` | Yes | — | Database connection string |\n| `MNEMO_PORT` | No | `8080` | HTTP listen port |\n| `MNEMO_DB_BACKEND` | No | `tidb` | Database backend: `tidb`, `postgres`, or `db9` |\n| `MNEMO_RATE_LIMIT` | No | `100` | Requests\u002Fsec per IP |\n| `MNEMO_RATE_BURST` | No | `200` | Burst size |\n| `MNEMO_UPLOAD_DIR` | No | `.\u002Fuploads` | Directory used for uploaded file storage |\n| `MNEMO_WORKER_CONCURRENCY` | No | `5` | Parallelism for async upload ingest workers |\n| `MNEMO_UTM_ENABLED` | No | `false` | Enable UTM campaign tracking. When enabled, `utm_*` query params on provisioning requests are stored in the control-plane DB. Requires the `tenant_utm` table to exist |\n\n#### Embedding And Ingest\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_EMBED_AUTO_MODEL` | No | — | TiDB\u002Fdb9 `EMBED_TEXT()` model name. When set, it takes precedence over client-side embeddings |\n| `MNEMO_EMBED_AUTO_DIMS` | No | `1024` | Vector dimensions for `MNEMO_EMBED_AUTO_MODEL` |\n| `MNEMO_EMBED_API_KEY` | No | — | Client-side embedding provider API key. Optional for local OpenAI-compatible endpoints when `MNEMO_EMBED_BASE_URL` is set |\n| `MNEMO_EMBED_BASE_URL` | No | `https:\u002F\u002Fapi.openai.com\u002Fv1` when client-side embeddings are enabled | Custom OpenAI-compatible embedding endpoint |\n| `MNEMO_EMBED_MODEL` | No | `text-embedding-3-small` | Client-side embedding model name |\n| `MNEMO_EMBED_DIMS` | No | `1536` | Client-side embedding vector dimensions |\n| `MNEMO_LLM_API_KEY` | No | — | LLM provider API key. If unset, smart ingest falls back to raw ingest behavior |\n| `MNEMO_LLM_BASE_URL` | No | `https:\u002F\u002Fapi.openai.com\u002Fv1` when LLM ingest is enabled | Custom OpenAI-compatible chat endpoint |\n| `MNEMO_LLM_MODEL` | No | `gpt-4o-mini` | LLM model for smart ingest |\n| `MNEMO_LLM_TEMPERATURE` | No | `0.1` | LLM temperature for smart ingest |\n| `MNEMO_INGEST_MODE` | No | `smart` | Ingest mode: `smart` or `raw` |\n| `MNEMO_FTS_ENABLED` | No | `false` | Enable TiDB full-text search path. Only set this on clusters that support TiDB FTS |\n\n#### Search Source Turns\n\nThe `MEM9_SOURCE_TURN_*` variables control how many source turn conversations are attached to search results as contextual decorations.\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MEM9_SOURCE_TURN_MIN_SCORE` | No | `2` | Minimum term-frequency relevance score for a source turn to be included in search result decorations |\n| `MEM9_SOURCE_TURN_PER_MEMORY_LIMIT` | No | `2` | Maximum source turns attached to a single memory in search results |\n| `MEM9_SOURCE_TURN_TOTAL_LIMIT` | No | `12` | Maximum total source turns across all memories in a single search response |\n\n#### Provisioning And Pooling\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_TIDB_ZERO_ENABLED` | No | `true` | Enable TiDB Zero auto-provisioning for `tidb` backend. When enabled, it takes precedence over TiDB Cloud Pool provisioning |\n| `MNEMO_TIDB_ZERO_API_URL` | No | `https:\u002F\u002Fzero.tidbapi.com\u002Fv1alpha1` | TiDB Zero API base URL |\n| `MNEMO_TIDBCLOUD_API_URL` | No | `https:\u002F\u002Fserverless.tidbapi.com` | TiDB Cloud Pool API base URL |\n| `MNEMO_TIDBCLOUD_POOL_ID` | No | `2` | TiDB Cloud Pool ID used for cluster takeover |\n| `MNEMO_TIDBCLOUD_API_KEY` | No | — | TiDB Cloud Pool API key. Used only when `MNEMO_TIDB_ZERO_ENABLED=false`, `MNEMO_DB_BACKEND=tidb`, and pool takeover is desired |\n| `MNEMO_TIDBCLOUD_API_SECRET` | No | — | TiDB Cloud Pool API secret for digest auth. Same conditions as `MNEMO_TIDBCLOUD_API_KEY` |\n| `MNEMO_TENANT_POOL_MAX_IDLE` | No | `5` | Max idle tenant database connections kept in the in-process tenant pool |\n| `MNEMO_TENANT_POOL_MAX_OPEN` | No | `10` | Max open connections per tenant database handle |\n| `MNEMO_TENANT_POOL_CONNECT_TIMEOUT` | No | `3s` | Timeout for tenant pool cold-connect ping\u002Fopen attempts |\n| `MNEMO_TENANT_POOL_IDLE_TIMEOUT` | No | `10m` | Idle timeout for tenant database handles |\n| `MNEMO_TENANT_POOL_TOTAL_LIMIT` | No | `200` | Total tenant database handles allowed across the process |\n| `MNEMO_CLUSTER_BLACKLIST` | No | — | Comma-separated TiDB cluster IDs whose spend-limit errors should be translated to HTTP 429 instead of 503 |\n\n#### Auto Spend Limit\n\nThese variables control automatic spend-limit increases for TiDB Cloud clusters that hit their cap. The feature progressively raises the limit up to `MNEMO_AUTO_SPEND_LIMIT_MAX` with a configurable cooldown between increments.\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_AUTO_SPEND_LIMIT_ENABLED` | No | `false` | Enable automatic spend-limit increases for TiDB Cloud clusters. Requires valid `MNEMO_TIDBCLOUD_API_KEY` and `MNEMO_TIDBCLOUD_API_SECRET` |\n| `MNEMO_AUTO_SPEND_LIMIT_INCREMENT` | No | `500` | Amount to increase the spend limit by each step (in USD cents: 500 = $5.00) |\n| `MNEMO_AUTO_SPEND_LIMIT_MAX` | No | `10000` | Maximum spend limit allowed (in USD cents: 10000 = $100.00). Must be greater than the increment |\n| `MNEMO_AUTO_SPEND_LIMIT_COOLDOWN` | No | `1h` | Minimum time between consecutive spend-limit increases for the same cluster |\n\n#### Metering\n\nThese are the supported rollout variables for the server-side metering writer. The writer is initialized at server startup, but this round does not wire any `Record()` call sites yet, so no usage events are emitted until caller hooks are added.\n\nThe public env surface is intentionally small for now. Metering location is configured as a single destination URL. Supported schemes are:\n\n- `s3:\u002F\u002F\u003Cbucket>\u002F\u003Cprefix>\u002F` for compressed JSON batches in S3\n- `http:\u002F\u002F...` or `https:\u002F\u002F...` for JSON batch webhooks\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_METERING_ENABLED` | No | `false` | Enable the metering writer. When `false`, the writer is a no-op |\n| `MNEMO_METERING_URL` | No | — | Metering destination URL. Supported forms: `s3:\u002F\u002F\u003Cbucket>\u002F\u003Cprefix>\u002F`, `http:\u002F\u002F...`, or `https:\u002F\u002F...`. If empty, the writer stays disabled even when `MNEMO_METERING_ENABLED=true` |\n| `MNEMO_METERING_FLUSH_INTERVAL` | No | `10s` | In-memory batch flush interval for the metering writer |\n\n#### Security And Debugging\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_ENCRYPT_TYPE` | No | `plain` | Encryption type for tenant DB passwords: `plain`, `md5`, or `kms`. One-time deployment decision. |\n| `MNEMO_ENCRYPT_KEY` | No | — | Encryption key for `md5` or KMS key ID for `kms`. Required when `MNEMO_ENCRYPT_TYPE` is not `plain` |\n| `MNEMO_DEBUG_LLM` | No | `false` | Log raw LLM responses for debugging parse errors. Use only in dev\u002Ftest because responses may contain user data |\n\n#### AWS KMS Environment\n\nThese are only relevant when `MNEMO_ENCRYPT_TYPE=kms`. The server uses the AWS SDK default config chain; the common environment-based inputs referenced in code are:\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `AWS_ACCESS_KEY_ID` | No | — | AWS access key ID for KMS auth when using environment-based AWS credentials |\n| `AWS_SECRET_ACCESS_KEY` | No | — | AWS secret access key for KMS auth when using environment-based AWS credentials |\n| `AWS_REGION` | No | — | AWS region used to create the KMS client |\n\n#### Test-Only\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `MNEMO_TEST_DSN` | No | Falls back to `MNEMO_DSN` | Integration-test DSN used by server repository tests |\n\n## Repository Map\n\n| Path | Role |\n|---|---|\n| [`server\u002F`](server\u002F) | Core Go REST API and source of truth for spaces, memories, search, ingest, and tenant provisioning |\n| [`cli\u002F`](cli\u002F) | Standalone Go CLI for exercising mem9 API and ingest flows |\n| [`openclaw-plugin\u002F`](openclaw-plugin\u002F) | OpenClaw memory plugin |\n| [`opencode-plugin\u002F`](opencode-plugin\u002F) | OpenCode plugin |\n| [`claude-plugin\u002F`](claude-plugin\u002F) | Claude Code hooks and skills integration |\n| [`codex-plugin\u002F`](codex-plugin\u002F) | Codex marketplace plugin and managed hooks |\n| [`site\u002F`](site\u002F) | Public mem9.ai site and published onboarding assets |\n| [`dashboard\u002F`](dashboard\u002F) | Dashboard product frontend and supporting product docs |\n| [`benchmark\u002F`](benchmark\u002F) | Benchmark harnesses and datasets for mem9 evaluation |\n| [`e2e\u002F`](e2e\u002F) | Live end-to-end scripts against a running mem9 server |\n| [`docs\u002F`](docs\u002F) | Architecture notes, design docs, and feature specs |\n\n## Related Repositories\n\n| Repository | What it owns | When to look there |\n|---|---|---|\n| [`mem9`](.) | Core Go API server, agent plugins, CLI, site, dashboard frontend, benchmark harnesses, and docs | You are working on the shared memory server, plugin integrations, or the main product docs |\n| [`mem9-node`](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-node) | Dashboard analysis backend, async jobs, and worker flows | A dashboard feature depends on backend APIs, background jobs, or analysis pipelines |\n| [`mem9-hermes-plugin`](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-hermes-plugin) | Hermes Agent plugin packaging, setup flow, and Hermes-specific docs | You are changing Hermes installation, activation, or runtime-specific behavior |\n| [`mem9-dify-plugin`](https:\u002F\u002Fgithub.com\u002Fmem9-ai\u002Fmem9-dify-plugin) | Dify tool plugin, memory tools, authorization modes, and Dify-specific docs | You are changing Dify Agent app, Workflow app, or multi-space plugin behavior |\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## License\n\n[Apache-2.0](LICENSE)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ftidbcloud.com\">\n    \u003Cimg src=\"assets\u002Ftidb-logo.png\" alt=\"TiDB Cloud Starter\" height=\"28\" \u002F>\n  \u003C\u002Fa>\n  \u003Cbr\u002F>\n  \u003Csub>Built on \u003Ca href=\"https:\u002F\u002Ftidbcloud.com\">TiDB Cloud Starter\u003C\u002Fa> for shared memory, vector search, and managed cloud provisioning.\u003C\u002Fsub>\n\u003C\u002Fp>\n","mem9 是一个为AI代理提供持久化记忆的解决方案。它通过跨会话和机器的记忆保持，以及多代理工作流中的共享记忆功能，解决了代理在不同会话间记忆丢失的问题。此外，mem9 还提供了混合回忆功能，并配备了一个可视化仪表盘以方便管理。该项目采用TypeScript编写，支持OpenClaw等平台的集成，适用于需要长期记忆保存、跨平台协作或希望提高其AI代理效率的各种场景。无论是开发者还是研究者，都能利用mem9来增强其AI系统的性能与可用性。",2,"2026-06-11 03:52:02","high_star"]