個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Mirix is a multi-agent personal assistant designed to track on-screen activities and answer user questions intelligently. By capturing real-time visual data and consolidating it into structured memories, Mirix transforms raw inputs into a rich knowledge base that adapts to your digital experiences.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Your personal AI that builds memory through screen observation and natural conversation
| 🌐 Website | 📚 Documentation | 📄 Paper | 💬 Discord
Step 1: Backend & Dashboard (Docker):
docker compose up -d --pull always
Step 2: Create an API key in the dashboard (http://localhost:5173) and set as the environmental variable MIRIX_API_KEY.
Step 3: Client (Python, mirix-client, https://pypi.org/project/mirix-client/):
pip install mirix-client
Now you are ready to go! See the example below:
from mirix import MirixClient
client = MirixClient(
api_key="your-api-key",
base_url="http://localhost:8531",
)
client.initialize_meta_agent(
config={
"llm_config": {
"model": "gemini-2.0-flash",
"model_endpoint_type": "google_ai",
"api_key": "your-api-key-here",
"model_endpoint": "https://generativelanguage.googleapis.com",
"context_window": 1_000_000,
},
"embedding_config": {
"embedding_model": "text-embedding-004",
"embedding_endpoint_type": "google_ai",
"api_key": "your-api-key-here",
"embedding_endpoint": "https://generativelanguage.googleapis.com",
"embedding_dim": 768,
},
"meta_agent_config": {
"agents": [
{
"core_memory_agent": {
"blocks": [
{"label": "human", "value": ""},
{"label": "persona", "value": "I am a helpful assistant."},
]
}
},
"resource_memory_agent",
"semantic_memory_agent",
"episodic_memory_agent",
"procedural_memory_agent",
"knowledge_vault_memory_agent",
],
},
}
)
client.add(
user_id="demo-user",
messages=[
{"role": "user", "content": [{"type": "text", "text": "The moon now has a president."}]},
{"role": "assistant", "content": [{"type": "text", "text": "Noted."}]},
],
session_id="sess-demo-001",
)
# Include tool activity when you want skills learned from the WORK PROCESS:
# tool errors, retries, and the fix that finally worked are the distiller's
# strongest signals. Pass tool results as role="tool" turns and/or a
# "tool_calls" list on assistant messages (OpenAI shape) — both are preserved
# in the session conversation store.
client.add(
user_id="demo-user",
messages=[
{"role": "user", "content": [{"type": "text", "text": "Deploy the service."}]},
{"role": "assistant", "content": "", "tool_calls": [
{"function": {"name": "kubectl_apply", "arguments": "{\"file\": \"deploy.yaml\"}"}}
]},
{"role": "tool", "name": "kubectl_apply", "content": "error: forbidden (missing RBAC)"},
{"role": "assistant", "content": [{"type": "text", "text": "Fixed the RBAC role and redeployed successfully."}]},
],
session_id="sess-demo-001",
)
memories = client.retrieve_with_conversation(
user_id="demo-user",
messages=[
{"role": "user", "content": [{"type": "text", "text": "What did we discuss on MirixDB in last 4 days?"}]},
],
limit=5,
)
print(memories)
For more API examples, see samples/run_client.py.
MIRIX also exposes an auto-dream endpoint for explicit memory cleanup and consolidation. Auto-dream reviews existing memories, merges duplicates, resolves stale/conflicting entries where possible, and writes the result back through the memory tools.
REST endpoint:
POST /memory/auto_dream?user_id=demo-user
Content-Type: application/json
{
"mode": "experience",
"dry_run": false
}
Supported mode values:
| Mode | Memory component(s) reviewed |
|---|---|
core | Core memory blocks |
episodic | Episodic memories |
semantic | Semantic memories |
resource | Resource memories |
procedural | Procedural memories |
knowledge | Knowledge Vault memories |
experience | Episodic, Semantic, and Knowledge Vault memories together |
Use dry_run: true to fetch counts and inspect what would be processed without applying updates. The optional model field can override the auto-dream agent model for that request. For procedural mode, pass the target meta_agent_id and optionally last_n_sessions to distill recent session experiences.
Python client example:
result = client.auto_dream(
user_id="demo-user",
mode="procedural",
meta_agent_id=meta_agent.id,
last_n_sessions=3,
dry_run=False,
)
print(result)
Fresh databases get their full schema automatically at startup. Existing databases require manual migrations when upgrading to a version that alters tables — startup creates missing tables but never adds columns to existing ones. If migrations are pending, the server refuses to start and names the exact scripts to run.
For the skill-based procedural memory release, run against your database (in this order):
psql "$MIRIX_PG_URI" -f scripts/migrate_procedural_to_skill.sql
psql "$MIRIX_PG_URI" -f scripts/migrate_add_message_session_id.sql
psql "$MIRIX_PG_URI" -f scripts/migrate_add_message_session_id_phase2.sql # outside a transaction (CREATE INDEX CONCURRENTLY)
psql "$MIRIX_PG_URI" -f scripts/migrate_add_conversation_message.sql
psql "$MIRIX_PG_URI" -f scripts/migrate_add_conversation_message_phase2.sql # outside a transaction
psql "$MIRIX_PG_URI" -f scripts/migrate_add_skill_experience.sql
psql "$MIRIX_PG_URI" -f scripts/migrate_add_agent_trigger_state.sql
psql "$MIRIX_PG_URI" -f scripts/migrate_backfill_procedural_scope.sql # backfill filter_tags['scope'] from each skill's owning client
Each script is idempotent where possible and documents its own preconditions in its header. Run them once, then restart the server.
Mirix is released under the Apache License 2.0. See the LICENSE file for more details.
For questions, suggestions, or issues, please open an issue on the GitHub repository or contact us at [email protected]
Connect with other Mirix users, share your thoughts, and get support:
Join our Discord server for real-time discussions, support, and community updates: https://discord.gg/S6CeHNrJ
We host weekly discussion sessions where you can:
📅 Schedule: Friday nights, 8-9 PM PST 🔗 Zoom Link: https://ucsd.zoom.us/j/96278791276
You can add the account ari_asm so that I can add you to the group chat.
We would like to thank Letta for open-sourcing their framework, which served as the foundation for the memory system in this project.