github Python analyzed 4257979

peterwang998/pkm-brain

github

Local-first personal knowledge management and agent memory for MCP-aware coding agents

maintainer
peterwang998
licence
MIT
first seen
2026-06-23
last seen
2026-08-08
releases · 30d
0
short id

Drift inferred · capture-to-capture

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

capabilities 9 tools
transport stdio counts 9 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • get_mail_thread
  • get_memories
  • get_project_context
  • propose_memory
  • record_context_feedback
  • retrieve_context
  • search_knowledge
  • search_mail
  • write_agent_session
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 4257979 · analyzer v33 · 2w ago

skills & prompt files 4

danger signals8

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

code files: 407

filesystem 245

  • fs (weak) peterwang998-pkm-brain-4257979/app/Tests/Fixtures/fake_brain_daemon.py :9 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/audit_gmail_temporal_frontier.py :18 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/audit_gmail_temporal_holdout.py :25 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/audit_gmail_temporal_public_gold.py :29 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/audit_gmail_temporal_runner.py :17 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/audit_gmail_temporal_shadow_canary.py :32 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/audit_v12_runtime.py :10 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/author_gmail_temporal_retrieval_queries.py :26 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_fact_parity_cohort.py :25 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_candidate_run_manifest.py :20 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_holdout.py :18 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_public_challenge_v3.py :23 from pathlib import Path
show 28 more
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_public_scale_fixture.py :17 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_retrieval_source_authority.py :24 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_synthetic_benchmark.py :9 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/diagnose_gmail_temporal_event_identity.py :11 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_fact_parity.py :25 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_temporal_candidate_ensemble.py :21 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_temporal_candidate_gold.py :11 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_temporal_retrieval_holdout.py :39 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_temporal_synthetic_benchmark.py :6 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/export_gmail_fact_parity_admissions.py :29 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/finalize_gmail_temporal_holdout_labels.py :19 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/freeze_gmail_temporal_development_baseline.py :27 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/gmail_brain_benchmark.py :22 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/gmail_fact_parity_production_adapter.py :17 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/prepare_gmail_fact_parity_evaluation.py :19 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/prepare_gmail_temporal_holdout_candidate_gold.py :21 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_fact_parity.py :30 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_temporal_holdout_external.py :38 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_temporal_public_challenge.py :30 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_temporal_retrieval.py :21 import shutil
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/score_gmail_temporal_holdout.py :25 from pathlib import Path
  • fs (weak) peterwang998-pkm-brain-4257979/scripts/smoke_gmail_temporal_ledger_public.py :27 from pathlib import Path
  • fs peterwang998-pkm-brain-4257979/src/pkm_brain/app_migration.py :5 import shutil
  • fs peterwang998-pkm-brain-4257979/src/pkm_brain/automation.py :9 import shutil
  • fs peterwang998-pkm-brain-4257979/src/pkm_brain/capture.py :7 import shutil
  • fs peterwang998-pkm-brain-4257979/src/pkm_brain/cli.py :4 import shutil
  • fs peterwang998-pkm-brain-4257979/src/pkm_brain/connector_auth.py :16 from pathlib import Path
  • fs peterwang998-pkm-brain-4257979/src/pkm_brain/connectors.py :5 from pathlib import Path

205 more not shown — this panel samples each group; the count above is the real total.

shell / exec 32

  • shell (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_fact_parity.py :21 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/scripts/evaluate_gmail_temporal_retrieval_holdout.py :41 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/scripts/gmail_brain_benchmark.py :26 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/scripts/gmail_fact_parity_production_adapter.py :434 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_fact_parity.py :26 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_temporal_holdout_external.py :31 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/scripts/smoke_gmail_temporal_ledger_public.py :24 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/app_migration.py :7 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/automation.py :10 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/connector_auth.py :9 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/daemon.py :10 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/gmail_archive.py :13 import subprocess
show 20 more
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/gmail_llm.py :8 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/llm.py :6 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/maintenance.py :4 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :5 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/scheduler/launchd.py :5 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/scheduler_worker.py :7 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/sync_connection.py :5 import subprocess
  • shell peterwang998-pkm-brain-4257979/src/pkm_brain/sync_ssh.py :3 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_app_migration.py :6 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_daemon.py :8 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_archive.py :8 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_fact_parity_production_adapter_script.py :8 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_fact_parity_script.py :8 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_contextual_lifecycle_public_script.py :5 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_event_identity_diagnostic_script.py :5 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_ledger_public_smoke_script.py :6 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_owner_audit_script.py :9 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_public_v20_script.py :5 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_retrieval_holdout_script.py :7 import subprocess
  • shell (weak) peterwang998-pkm-brain-4257979/tests/test_sync_ssh.py :4 import subprocess

network 15

  • net (weak) peterwang998-pkm-brain-4257979/scripts/gmail_brain_benchmark.py :24 import socket
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/connector_auth.py :18 from urllib.error import HTTPError, URLError
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/gmail_archive_source.py :6 import urllib.parse
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/google_api.py :7 import urllib.error
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/google_routes.py :4 import urllib.parse
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/google_sources.py :5 import urllib.parse
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/llm.py :9 import urllib.error
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :6 import urllib.error
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/operational_briefing.py :8 from urllib.parse import urlencode
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/paths.py :4 import socket
  • net peterwang998-pkm-brain-4257979/src/pkm_brain/ui_server.py :15 from urllib.parse import parse_qs, urlparse
  • net (weak) peterwang998-pkm-brain-4257979/tests/test_connectors.py :12 from urllib.parse import parse_qs, urlparse
show 3 more
  • net (weak) peterwang998-pkm-brain-4257979/tests/test_google_api.py :4 import urllib.parse
  • net (weak) peterwang998-pkm-brain-4257979/tests/test_mcp_proxy.py :6 import urllib.error
  • net (weak) peterwang998-pkm-brain-4257979/tests/test_shadow_trial.py :7 from urllib.parse import parse_qs, urlsplit

secrets 2

  • secrets peterwang998-pkm-brain-4257979/src/pkm_brain/llm.py :105 self.api_key = os.environ.get("OPENAI_API_KEY")
  • secrets (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_archive.py :197 "import getpass,sys; "

database 39

  • db (weak) peterwang998-pkm-brain-4257979/scripts/audit_v12_runtime.py :8 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/scripts/author_gmail_temporal_retrieval_queries.py :27 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/scripts/build_gmail_temporal_retrieval_source_authority.py :25 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/scripts/freeze_gmail_temporal_development_baseline.py :23 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/scripts/gmail_brain_benchmark.py :23 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/scripts/run_gmail_temporal_retrieval.py :22 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/capture.py :8 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/db.py :4 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/gmail_archive.py :11 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/gmail_mirror.py :6 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/gmail_temporal_persistence.py :6 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_tools.py :7 import sqlite3
show 27 more
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/migrations.py :5 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/operational_db.py :4 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/operational_migrations.py :3 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/operational_shadow.py :5 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/operational_state.py :6 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/recovery.py :7 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/regeneration.py :5 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/retrieval_telemetry.py :3 import sqlite3
  • db peterwang998-pkm-brain-4257979/src/pkm_brain/sync_acceptance.py :3 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_capture.py :7 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_connectors.py :6 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_core.py :4 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_cos.py :5164 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_db.py :3 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_archive.py :7 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_knowledge.py :4 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_mirror.py :4 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_persistence.py :5 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_retrieval_query_authoring_script.py :8 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_gmail_temporal_retrieval_runner_script.py :7 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_migrations.py :4 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_operational_db.py :4 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_operational_state.py :5 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_policy_reconciliation.py :5 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_recovery.py :5 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_regeneration.py :5 import sqlite3
  • db (weak) peterwang998-pkm-brain-4257979/tests/test_ui_endpoints.py :5 import sqlite3

tool registrations 16

  • search_knowledge peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :148
  • retrieve_context peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :153
  • record_context_feedback peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :177
  • get_memories peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :194
  • propose_memory peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :205
  • write_agent_session peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :224
  • get_project_context peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :243
  • search_mail peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :248
  • get_mail_thread peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_proxy.py :279
  • search_knowledge peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :16
  • retrieve_context peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :23
  • record_context_feedback peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :48
show 4 more
  • get_memories peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :66
  • propose_memory peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :78
  • write_agent_session peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :98
  • get_project_context peterwang998-pkm-brain-4257979/src/pkm_brain/mcp_server.py :118

declared dependencies 8

  • mcp@>=1.27.0
  • cryptography@>=48.0.0
  • lancedb@>=0.30.2
  • pyyaml@>=6.0.3
  • rich@>=15.0.0
  • typer@>=0.25.1
  • sentence-transformers@>=5.4.1
  • github.com/swiftlang/swift-markdown@0.8.0