ワンクリックで
graphiti-memory
Long-term memory backed by Graphiti knowledge graph — persist and query knowledge across sessions with rich metadata
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Long-term memory backed by Graphiti knowledge graph — persist and query knowledge across sessions with rich metadata
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Spawn and manage fully-configured opencode CLI sessions. Use when the user wants to launch opencode on a local or remote machine, bootstrap environments with skills from a git repo, set up config-cli auth and vault secrets, or orchestrate opencode agents. Also triggers when the user mentions opendawg-agent, spawning agents, remote opencode, or multi-machine orchestration.
Secure key-value vault for managing sensitive credentials (API keys, passwords, tokens) — encrypted at rest with AES-256-CBC
AI cron/scheduler skill based on Cronicle — create, manage, and monitor scheduled jobs. Supports cron expressions, interval scheduling, one-time runs, opencode session callbacks, and distributed worker execution. Use when the user mentions scheduling, cron jobs, timed tasks, periodic execution, or agent wake-up.
Use MCP servers on-demand via the mcp CLI tool - discover tools, resources, and prompts without polluting context with pre-loaded MCP integrations
Use tmux for ALL operations that need a TTY (interactive CLI tools, REPLs, editors, interactive git, full-screen terminal apps). Each session runs on its own isolated tmux socket so it never interferes with the user's tmux or other sessions. Use when running vim, nano, python REPL, git rebase -i, git add -p, htop, or any command requiring terminal interaction.
| name | graphiti-memory |
| description | Long-term memory backed by Graphiti knowledge graph — persist and query knowledge across sessions with rich metadata |
Persist facts, instructions, observations, and preferences into a Graphiti-powered knowledge graph (Neo4j + LLM). Query knowledge across sessions with semantic search.
Two scripts, two audiences:
| Script | Audience | Capabilities |
|---|---|---|
graphiti-agent.sh | AI agents | CRUD per-item: search, remember, delete single episodes/edges. No clear, no service management. |
graphiti-cli.sh | Humans / admin scripts | Full access: everything above + start/stop/status, clear graph, get-edge |
Agents use graphiti-agent.sh. Humans use graphiti-cli.sh.
When encountering unknown information (user preferences, project conventions, prior decisions), search memory first:
graphiti-agent search "user preference for test framework"
Only ask the user if no relevant results are found.
When the user gives explicit instructions, facts, or preferences, store them immediately:
graphiti-agent remember "User prefers pytest over unittest for all Python projects" \
--source user-instruction
The scripts auto-enrich with hostname, cwd, project, and timestamp. Add extra context via flags:
graphiti-agent remember "The auth service uses JWT with RS256" \
--source observation \
--metadata "component=auth-service" \
--metadata "confidence=high"
Graphiti does not support in-place updates. To correct a fact:
delete-episode <uuid>), then store the new oneStore multiple entries for the same topic — Graphiti handles deduplication and entity resolution automatically.
All sensitive values MUST be injected via $(config-cli get <key>). Never pass plaintext secrets to any command.
For advanced usage or direct tool access, use mcp call via the mcp-cli skill:
# Searches own node by default (uses $GRAPHITI_GROUP_ID)
mcp call search_memory_facts --params '{"query":"auth","group_ids":["'"$GRAPHITI_GROUP_ID"'"]}' http://localhost:8000/mcp
# Cross-node search — explicitly list target group_ids
mcp call search_memory_facts --params '{"query":"auth","group_ids":["opendawg-macbook","opendawg-server1"]}' http://localhost:8000/mcp
# Write (always to own node)
mcp call add_memory --params '{"name":"ep1","episode_body":"fact","group_id":"'"$GRAPHITI_GROUP_ID"'"}' http://localhost:8000/mcp
mcp call delete_episode --params '{"uuid":"<uuid>"}' http://localhost:8000/mcp
mcp call delete_entity_edge --params '{"uuid":"<uuid>"}' http://localhost:8000/mcp
mcp call clear_graph --params '{"group_ids":["'"$GRAPHITI_GROUP_ID"'"]}' http://localhost:8000/mcp
bash skills/config-cli/scripts/install.sh).opendawg/bin/mcp)config-cli set AZURE_OPENAI_API_KEY <key> and config-cli set AZURE_OPENAI_ENDPOINT <url>Install:
bash skills/graphiti-memory/scripts/install.sh
graphiti-agent.sh)| Command | Description |
|---|---|
graphiti-agent search <query> | Search facts (semantic) |
graphiti-agent search-nodes <query> | Search entity nodes |
graphiti-agent remember <text> [flags] | Store a new episode |
graphiti-agent episodes [--last N] | List recent episodes (default: 10) |
graphiti-agent get-edge <uuid> | Get an entity edge by UUID |
graphiti-agent delete-episode <uuid> | Delete one episode |
graphiti-agent delete-edge <uuid> | Delete one entity edge |
graphiti-cli.sh)All agent commands above, plus:
| Command | Description |
|---|---|
graphiti-cli start | Start Neo4j + Graphiti, inject secrets from config-cli |
graphiti-cli stop | Stop all services |
graphiti-cli status | Show service status, health, and MCP status |
graphiti-cli clear [--confirm] | ⚠️ Clear ALL data for the current group |
graphiti-agent remember "Always use pnpm instead of npm for this project" \
--source user-instruction
graphiti-agent remember "The API rate limit is 100 req/min per key" \
--source observation \
--metadata "service=api-gateway"
graphiti-agent search "package manager preference"
graphiti-agent search-nodes "BatchProcessor"
graphiti-agent episodes --last 20
# Option 1: Just store the correction (temporal resolution handles priority)
graphiti-agent remember "The API rate limit was increased to 500 req/min" \
--source observation
# Option 2: Delete old, store new
graphiti-agent delete-episode "c61faa9a-ed5a-4f83-8122-4c630a5d8f48"
graphiti-agent remember "The API rate limit is 500 req/min per key" \
--source observation
graphiti-cli start
graphiti-cli status
graphiti-cli stop
graphiti-cli clear --confirm
Each opendawg node gets its own isolated memory namespace via group_id. Default: opendawg-<hostname> (auto-generated by setup.sh).
| Scenario | group_id | Behavior |
|---|---|---|
| Default (auto) | opendawg-macbook | Node-local memory, isolated per machine |
| Explicit override | --graphiti-group-id my-project | Custom namespace |
| Shared across nodes | --graphiti-group-id opendawg | All nodes share one memory pool |
graphiti-agent search "auth preference"
# → searches only this node's group_id (e.g. opendawg-macbook)
To search another node's memory, pass group_ids explicitly via MCP:
mcp call search_memory_facts \
--params '{"query":"auth","group_ids":["opendawg-macbook","opendawg-server1"]}' \
http://localhost:8000/mcp
The group_ids array is the only way to read another node's memory — you must know and declare the target node's group_id.
graphiti-agent remember "some fact"
# → stored under this node's GRAPHITI_GROUP_ID, no cross-write possible
http://localhost:8000/mcp/GRAPHITI_GROUP_ID env var (default: opendawg-$(hostname -s))neo4j_data persists the graph databasegroup_id — each node has isolated memorygroup_ids declarationskills/graphiti-memory/docker/docker-compose.yml