github Python analyzed 0c82a3d

tlemmons/junto-memory

github

Persistent shared memory and coordination MCP server for multi-agent AI workflows. The memory component of the Junto system. MongoDB + ChromaDB. Production-tested with 6+ agents over 500+ sessions.

maintainer
tlemmons
license
MIT
first seen
2026-06-04
last seen
2026-08-26
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 58 tools
transport stdio · streamable-http · http counts 58 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • memory_ack_directive
  • memory_acknowledge_message
  • memory_add_backlog_item
  • memory_admin
  • memory_archive_by_tag
  • memory_batch_backlog
  • memory_become_librarian
  • memory_cancel_reminder
  • memory_change_status
  • memory_checklist
  • memory_claim_message
  • memory_complete_backlog_item
  • memory_confirm_skill
  • memory_db
  • memory_define_spec
  • memory_end_session
  • memory_enrich_function
  • memory_export_skills
  • memory_find_function
  • memory_get_active_work
  • memory_get_agent_status
  • memory_get_by_id
  • memory_get_emission_stats
  • memory_get_enrichment_queue
  • memory_get_locks
  • memory_get_messages
  • memory_get_skill
  • memory_get_spec
  • memory_guidelines
  • memory_health
  • memory_heartbeat
  • memory_list_agents
  • memory_list_alerts
  • memory_list_backlog
  • memory_list_projects
  • memory_list_reminders
  • memory_list_skills
  • memory_list_specs
  • memory_lock_files
  • memory_pin_skill
  • memory_project
  • memory_query
  • memory_record_learning
  • memory_register_function
  • memory_register_skill
  • memory_restore_by_tag
  • memory_search_global
  • memory_send_message
  • memory_set_reminder
  • memory_standup
  • memory_start_session
  • memory_store
  • memory_sync_pull
  • memory_sync_push
  • memory_unlock_files
  • memory_update_backlog_item
  • memory_update_message_status
  • memory_update_work
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 0c82a3d · analyzer v33 · 1w ago

skills & prompt files 1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 150

filesystem 13

  • fs tlemmons-junto-memory-0c82a3d/contrib/hooks/recall_prompt_hook.py :57 with open(tpath, errors="replace") as f:
  • fs tlemmons-junto-memory-0c82a3d/contrib/orchestrator/claude-spawn.py :22 from pathlib import Path
  • fs tlemmons-junto-memory-0c82a3d/contrib/ui/app.py :269 stdout=open("/tmp/dispatcher.log", "w"),
  • fs tlemmons-junto-memory-0c82a3d/data/wave_out_2026-07-24/bulk_011_commit.py :57 slice_ = json.load(open('data/wave_slices_2026-07-24/bulk_011.json'))
  • fs tlemmons-junto-memory-0c82a3d/librarian.py :25 from pathlib import Path
  • fs (weak) tlemmons-junto-memory-0c82a3d/scripts/check_usage.py :17 creds = json.load(open(CREDS))
  • fs (weak) tlemmons-junto-memory-0c82a3d/scripts/facets_backfill.py :30 from pathlib import Path
  • fs (weak) tlemmons-junto-memory-0c82a3d/scripts/facets_bulk_prep.py :27 from pathlib import Path
  • fs (weak) tlemmons-junto-memory-0c82a3d/scripts/guideline_trim_flip.py :20 from pathlib import Path
  • fs tlemmons-junto-memory-0c82a3d/src/shared_memory/__main__.py :9 from pathlib import Path
  • fs tlemmons-junto-memory-0c82a3d/src/shared_memory/sync_engine.py :78 from pathlib import Path
  • fs tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :364 pending_action_open — pending ACTION msgs with obligation open (or a
  • fs (weak) tlemmons-junto-memory-0c82a3d/tests/test_sync_engine.py :15 from pathlib import Path

shell / exec 8

  • shell tlemmons-junto-memory-0c82a3d/contrib/orchestrator/brain.py :18 import subprocess
  • shell tlemmons-junto-memory-0c82a3d/contrib/orchestrator/claude-spawn.py :18 import subprocess
  • shell tlemmons-junto-memory-0c82a3d/contrib/orchestrator/dispatcher.py :21 import subprocess
  • shell (weak) tlemmons-junto-memory-0c82a3d/contrib/test/auth_human_rule_smoke.py :197 import subprocess
  • shell (weak) tlemmons-junto-memory-0c82a3d/contrib/test/supervisor_pattern_validate.py :23 import subprocess
  • shell (weak) tlemmons-junto-memory-0c82a3d/contrib/test/transport_loss_repro.py :24 import subprocess
  • shell tlemmons-junto-memory-0c82a3d/contrib/ui/app.py :10 import subprocess
  • shell tlemmons-junto-memory-0c82a3d/contrib/ui/tmux-proxy.py :11 import subprocess

network 13

  • net tlemmons-junto-memory-0c82a3d/contrib/hooks/recall_prompt_hook.py :33 import urllib.request
  • net tlemmons-junto-memory-0c82a3d/contrib/orchestrator/dispatcher.py :26 import requests
  • net (weak) tlemmons-junto-memory-0c82a3d/contrib/test/inbox_resource_smoke.py :24 from urllib.parse import quote_plus
  • net (weak) tlemmons-junto-memory-0c82a3d/contrib/test/mcp_stress_harness.py :34 import httpx
  • net tlemmons-junto-memory-0c82a3d/librarian.py :28 import httpx
  • net (weak) tlemmons-junto-memory-0c82a3d/scripts/check_usage.py :11 import urllib.request
  • net tlemmons-junto-memory-0c82a3d/src/shared_memory/claim_gate.py :243 import httpx # lazy — only on the priors-found path
  • net tlemmons-junto-memory-0c82a3d/src/shared_memory/clients.py :6 from urllib.parse import quote_plus
  • net tlemmons-junto-memory-0c82a3d/src/shared_memory/facets.py :378 import httpx # lazy, mirrors the gate
  • net tlemmons-junto-memory-0c82a3d/src/shared_memory/push_control.py :1232 import httpx # lazy import — only needed on the rare hard-trip path
  • net tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/functions.py :41 import httpx
  • net (weak) tlemmons-junto-memory-0c82a3d/tests/test_claim_gate.py :35 """httpx.AsyncClient stand-in: pops canned completions in call order."""
  • net (weak) tlemmons-junto-memory-0c82a3d/tests/test_sync_push_integration.py :23 import socket

secrets 16

  • secrets tlemmons-junto-memory-0c82a3d/contrib/orchestrator/brain.py :30 MONGO_PASSWORD = os.getenv("MONGO_PASSWORD", "")
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/auth_human_rule_smoke.py :32 TOM_WEB_KEY = os.environ.get("TOM_WEB_KEY", "")
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/federated_writer.py :40 PEER_KEY = os.environ.get("JUNTO_PEER_KEY", "")
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/inbox_resource_smoke.py :389 pw = quote_plus(os.environ.get("MONGO_PASSWORD", "McpOrch2026!"))
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/mcp_stress_harness.py :310 pw = quote_plus(os.environ.get("MONGO_PASSWORD", "McpOrch2026!"))
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/supervisor_pattern_validate.py :35 PEER_KEY = os.environ["JUNTO_PEER_KEY"]
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/sync_engine_smoke.py :46 ADMIN_KEY = os.environ.get("JUNTO_SYNC_ADMIN_KEY", "")
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/sync_observer.py :42 PRIMARY_KEY = os.environ.get("JUNTO_PRIMARY_KEY", "")
  • secrets (weak) tlemmons-junto-memory-0c82a3d/contrib/test/transport_loss_repro.py :36 PEER_KEY = os.environ["JUNTO_PEER_KEY"]
  • secrets tlemmons-junto-memory-0c82a3d/contrib/ui/app.py :36 MONGO_PASSWORD = os.getenv("MONGO_PASSWORD", "")
  • secrets tlemmons-junto-memory-0c82a3d/librarian.py :36 ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "")
  • secrets (weak) tlemmons-junto-memory-0c82a3d/scripts/restore_oplog_backlog_20260807.py :53 pw = os.environ.get("MONGO_PASSWORD") or os.environ.get("MONGO_INITDB_ROOT_PASSWORD")
  • secrets tlemmons-junto-memory-0c82a3d/src/shared_memory/auth.py :99 TUNNEL_REQUIRES_KEY = os.getenv("JUNTO_TUNNEL_REQUIRES_KEY", "true").lower() in (
  • secrets tlemmons-junto-memory-0c82a3d/src/shared_memory/config.py :24 MONGO_PASSWORD = os.getenv("MONGO_PASSWORD", "")
  • secrets tlemmons-junto-memory-0c82a3d/src/shared_memory/sync_engine.py :548 p.add_argument("--primary-key", default=os.environ.get("JUNTO_SYNC_PRIMARY_KEY"))
  • secrets (weak) tlemmons-junto-memory-0c82a3d/tests/test_sync_push_integration.py :67 mongo_pass = os.environ.get("MONGO_PASSWORD", "")

database 16

  • db tlemmons-junto-memory-0c82a3d/contrib/migrate_normalize_projects.py :17 from pymongo import MongoClient
  • db tlemmons-junto-memory-0c82a3d/contrib/orchestrator/brain.py :23 from pymongo import MongoClient
  • db tlemmons-junto-memory-0c82a3d/contrib/orchestrator/dispatcher.py :30 from pymongo import MongoClient
  • db (weak) tlemmons-junto-memory-0c82a3d/contrib/test/inbox_resource_smoke.py :388 from pymongo import MongoClient
  • db (weak) tlemmons-junto-memory-0c82a3d/contrib/test/mcp_stress_harness.py :309 from pymongo import MongoClient
  • db tlemmons-junto-memory-0c82a3d/contrib/ui/app.py :19 from pymongo import MongoClient
  • db tlemmons-junto-memory-0c82a3d/data/wave_out_2026-07-24/bulk_011_commit.py :2 from pymongo import MongoClient
  • db (weak) tlemmons-junto-memory-0c82a3d/scripts/facets_backfill.py :70 from pymongo import MongoClient
  • db (weak) tlemmons-junto-memory-0c82a3d/scripts/facets_bulk_prep.py :39 from pymongo import MongoClient
  • db (weak) tlemmons-junto-memory-0c82a3d/scripts/guideline_trim_flip.py :47 from pymongo import MongoClient
  • db (weak) tlemmons-junto-memory-0c82a3d/scripts/restore_oplog_backlog_20260807.py :27 from pymongo import MongoClient
  • db tlemmons-junto-memory-0c82a3d/src/shared_memory/clients.py :10 from pymongo import MongoClient
  • db tlemmons-junto-memory-0c82a3d/src/shared_memory/op_log.py :27 from pymongo import ASCENDING, ReturnDocument
  • db tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :15 from pymongo import ReturnDocument
  • db tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/sync.py :43 from pymongo.errors import DuplicateKeyError
  • db (weak) tlemmons-junto-memory-0c82a3d/tests/test_sync_push_integration.py :62 from pymongo import MongoClient

tool registrations 58

  • memory_admin tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/admin.py :21
  • memory_add_backlog_item tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/backlog.py :25
  • memory_list_backlog tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/backlog.py :159
  • memory_update_backlog_item tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/backlog.py :329
  • memory_complete_backlog_item tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/backlog.py :510
  • memory_batch_backlog tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/backlog.py :602
  • memory_checklist tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/checklists.py :14
  • memory_db tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/database.py :175
  • memory_health tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/diagnostics.py :21
  • memory_ack_directive tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/directives.py :19
  • memory_register_function tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/functions.py :55
  • memory_find_function tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/functions.py :256
  • memory_get_enrichment_queue tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/functions.py :399
  • memory_become_librarian tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/functions.py :435
  • memory_enrich_function tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/functions.py :592
  • memory_guidelines tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/guidelines.py :98
  • memory_update_work tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/lifecycle.py :22
  • memory_change_status tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/lifecycle.py :139
  • memory_archive_by_tag tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/lifecycle.py :305
  • memory_restore_by_tag tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/lifecycle.py :426
  • memory_lock_files tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/locking.py :20
  • memory_unlock_files tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/locking.py :127
  • memory_get_locks tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/locking.py :183
  • memory_send_message tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :651
  • memory_get_messages tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1141
  • memory_update_message_status tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1433
  • memory_claim_message tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1527
  • memory_acknowledge_message tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1638
  • memory_heartbeat tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1656
  • memory_get_agent_status tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1712
  • memory_list_agents tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/messaging.py :1760
  • memory_project tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/projects.py :145
  • memory_list_alerts tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/push_control_api.py :24
  • memory_get_emission_stats tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/push_control_api.py :82
  • memory_query tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/query.py :51
  • memory_get_by_id tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/query.py :374
  • memory_get_active_work tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/query.py :606
  • memory_set_reminder tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/scheduler.py :72
  • memory_cancel_reminder tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/scheduler.py :205
  • memory_list_reminders tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/scheduler.py :247
  • memory_search_global tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/search.py :15
  • memory_list_projects tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/search.py :104
  • memory_start_session tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/sessions.py :106
  • memory_end_session tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/sessions.py :830
  • memory_register_skill tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/skills.py :122
  • memory_confirm_skill tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/skills.py :319
  • memory_get_skill tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/skills.py :393
  • memory_list_skills tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/skills.py :422
  • memory_pin_skill tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/skills.py :505
  • memory_export_skills tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/skills.py :727
  • memory_define_spec tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/specs.py :26
  • memory_get_spec tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/specs.py :353
  • memory_list_specs tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/specs.py :479
  • memory_standup tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/standup.py :49
  • memory_store tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/storage.py :35
  • memory_record_learning tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/storage.py :337
  • memory_sync_pull tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/sync.py :156
  • memory_sync_push tlemmons-junto-memory-0c82a3d/src/shared_memory/tools/sync.py :1124

declared dependencies 12

  • mcp@>=1.0.0,<2
  • chromadb@>=0.4.0
  • pydantic@>=2.0.0
  • uvicorn@>=0.30.0
  • starlette@>=0.38.0
  • pymongo@>=4.0.0
  • pymssql@>=2.2.0
  • anthropic@*
  • httpx@*
  • pytest@>=8.0
  • pytest-asyncio@>=0.23
  • ruff@>=0.4.0

transport_posture 2

  • binds all interfaces (0.0.0.0) tlemmons-junto-memory-0c82a3d/contrib/ui/app.py :867 uvicorn.run(app, host="0.0.0.0", port=8090)
  • network-listening, binds all interfaces, no auth detected tlemmons-junto-memory-0c82a3d/src/shared_memory/app.py :21 mcp = FastMCP("junto", lifespan=app_lifespan, host="0.0.0.0", stateless_http=False)