github Python analyzed cb7dd56

sammyjdev/axon

github

Agent-agnostic context engine that gives AI coding agents continuous memory across sessions, tools, and machines.

maintainer
sammyjdev
licence
Apache-2.0
first seen
2026-07-07
last seen
2026-09-16
releases · 30d
0
short id

Drift inferred · capture-to-capture

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

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

tools

  • ask
  • axon_capture
  • axon_capture_event
  • axon_export_now
  • axon_get_context
  • axon_handoff
  • axon_health
  • axon_mark_done
  • axon_record_lesson
  • axon_record_outcome
  • axon_search
  • axon_search_lessons
  • axon_session_end
  • axon_session_start
  • axon_validation_stats
  • get_adrs
  • get_dependencies
  • get_graph_context
  • get_graph_neighbors
  • get_graph_path
  • get_session_memory
  • restore_context
  • save_adr
  • search_code
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit cb7dd56 · analyzer v33 · 2h ago

skills & prompt files 1

danger signals8

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

code files: 699

filesystem 284

  • fs (weak) sammyjdev-axon-cb7dd56/benchmarks/phase0_gpu.py :13 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/benchmarks/phase0_gpu_diag.py :7 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/benchmarks/phase0_heavy.py :14 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/benchmarks/phase0_probe.py :17 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/benchmarks/visualize.py :12 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/conftest.py :2 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/contrib/claude-code/axon-search-first.py :22 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/doc/scripts/checks/ci_status.py :4 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/doc/scripts/checks/coupling.py :4 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/doc/scripts/checks/drift.py :3 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/doc/scripts/checks/versioning.py :4 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/doc/scripts/health-check.py :6 from pathlib import Path
show 28 more
  • fs (weak) sammyjdev-axon-cb7dd56/doc/tests/test_health_check.py :4 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/analysis/delivery_baseline.py :46 with open(path, errors="replace") as fh:
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/analyze_retrieval_telemetry.py :41 recs = [json.loads(line) for line in open(path, encoding="utf-8") if line.strip()]
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/build_ablation_index.py :8 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/check_onboarding_drift.py :21 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/eval_exact_terms.py :14 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/eval_nl_code_recall.py :18 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/eval_pack_quality.py :31 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/export_recall_savings_snapshot.py :15 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/gen_pack_quality_fixture.py :21 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/index_once.py :9 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/populate_recall_baseline.py :18 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/purge_test_artifacts.py :21 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/recall_savings_report.py :6 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/recall_usage_report.py :9 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/rekey_embeddings_project.py :26 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/rekey_sessions.py :21 from pathlib import Path
  • fs (weak) sammyjdev-axon-cb7dd56/scripts/run_adr_model_grid.py :18 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/__main__.py :20 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/activity/adapters/claude_code.py :4 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/activity/adapters/codex.py :4 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/activity/agy_runner.py :9 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/activity/models.py :5 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/activity/spool.py :6 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/adr/audit.py :17 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/adr/commit_context.py :12 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/adr/draft_pool.py :17 from pathlib import Path
  • fs sammyjdev-axon-cb7dd56/src/axon/adr/gates/__init__.py :16 from pathlib import Path

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

shell / exec 75

  • shell (weak) sammyjdev-axon-cb7dd56/benchmarks/phase0_probe.py :14 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/doc/scripts/checks/ci_status.py :3 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/scripts/run_adr_model_grid.py :16 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/__main__.py :16 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/activity/agy_runner.py :5 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/adr/commit_context.py :10 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/adr/gates/l1.py :22 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/adr/inference.py :23 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/cli/pb.py :8 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/cli/setup.py :3 import subprocess as _sp
  • shell sammyjdev-axon-cb7dd56/src/axon/code/diff_symbols.py :11 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/config/platform.py :2 import subprocess
show 28 more
  • shell sammyjdev-axon-cb7dd56/src/axon/context/rtk.py :5 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/core/repo_identity.py :6 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/doctor/checks/capture_path.py :17 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/doctor/checks/install_branch.py :3 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/hooks/git_event.py :16 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1102 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/repo/file_walk.py :4 import subprocess
  • shell sammyjdev-axon-cb7dd56/src/axon/triggers/scope_detector.py :14 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/activity/test_agy_adapter.py :2 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/activity/test_claude_code_adapter.py :2 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/activity/test_codex_adapter.py :2 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/adr/gates/test_l1.py :5 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/adr/test_adr_provenance.py :7 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/adr/test_infer_commit_signal_gate.py :5 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/adr/test_inference.py :5 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_embedder_lazy_import.py :19 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_hook_spool.py :36 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_pb_cli.py :5 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_rekey_repo_cli.py :6 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_search_strategy_lazy_import.py :4 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_search_strategy_profile_parity.py :5 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_seed_lessons_shutdown.py :25 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_session_memory_repo_key.py :14 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_session_memory_repo_key_gaps.py :16 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_session_note_repo_key.py :12 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_spool_not_committable.py :29 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_spool_quarantine_ignore.py :25 import subprocess
  • shell (weak) sammyjdev-axon-cb7dd56/tests/cli/test_spool_recover_ignore.py :28 import subprocess

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

network 11

  • net (weak) sammyjdev-axon-cb7dd56/scripts/pg_redact.py :5 import urllib.parse
  • net sammyjdev-axon-cb7dd56/src/axon/context/rtk_bootstrap.py :17 import urllib.request
  • net sammyjdev-axon-cb7dd56/src/axon/embedder/providers.py :51 import httpx
  • net sammyjdev-axon-cb7dd56/src/axon/expansion/extractors.py :11 from urllib.parse import urljoin
  • net sammyjdev-axon-cb7dd56/src/axon/expansion/transport.py :5 from urllib.request import Request
  • net sammyjdev-axon-cb7dd56/src/axon/expansion/url_safety.py :6 import socket
  • net sammyjdev-axon-cb7dd56/src/axon/router/engine.py :97 import httpx
  • net (weak) sammyjdev-axon-cb7dd56/tests/expansion/test_guarded_opener_proxy.py :3 from urllib.request import ProxyHandler
  • net (weak) sammyjdev-axon-cb7dd56/tests/expansion/test_origin_header_scoping.py :15 from urllib.request import Request
  • net (weak) sammyjdev-axon-cb7dd56/tests/expansion/test_url_safety.py :3 import socket
  • net (weak) sammyjdev-axon-cb7dd56/tests/expansion/test_url_safety_pinning.py :4 import socket

secrets 2

  • secrets sammyjdev-axon-cb7dd56/src/axon/__main__.py :201 token = os.environ.get("AXON_HTTP_TOKEN", "")
  • secrets sammyjdev-axon-cb7dd56/src/axon/http/app.py :135 expected = os.environ.get("AXON_HTTP_TOKEN", "")

database 54

  • db (weak) sammyjdev-axon-cb7dd56/scripts/analysis/lesson_replay.py :30 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/scripts/gen_pack_quality_fixture.py :67 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/scripts/purge_test_artifacts.py :23 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/scripts/rekey_embeddings_project.py :29 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/scripts/rekey_sessions.py :23 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/activity/repository.py :4 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/activity/service.py :6 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/doctor/checks/index_composition.py :12 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/failure_store.py :14 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/lessons.py :30 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/outcome_store.py :11 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_decision_repository.py :13 import asyncpg
show 28 more
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_file_cache.py :12 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_graph_repository.py :13 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_migrations.py :20 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_session_repository.py :10 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_symbol_deps.py :15 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/pg_vector_store.py :7 import asyncpg
  • db sammyjdev-axon-cb7dd56/src/axon/store/session_store.py :314 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/activity/test_provenance.py :4 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/activity/test_repository.py :3 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/activity/test_service.py :3 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/cli/test_activity_commands.py :18 import asyncpg # noqa: E402
  • db (weak) sammyjdev-axon-cb7dd56/tests/cli/test_session_note_repo_key.py :15 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/conftest.py :202 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/embedder/fixtures/python/adr_manager.py :3 import sqlite3
  • db (weak) sammyjdev-axon-cb7dd56/tests/embedder/fixtures/python/graph_service.py :13 import redis
  • db (weak) sammyjdev-axon-cb7dd56/tests/embedder/fixtures/python/session_store.py :1 import sqlite3
  • db (weak) sammyjdev-axon-cb7dd56/tests/http/test_activity_api.py :29 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/integration/test_activity_history_restore.py :5 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/mcp/test_repo_resolution.py :13 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/mcp/test_search_code_project_scope.py :19 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/observability/test_traced_tool_failure_persists.py :20 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/scripts/test_purge_test_artifacts.py :490 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/scripts/test_rekey_embeddings_project.py :20 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/scripts/test_rekey_sessions.py :18 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/store/test_adr_provenance_column.py :8 import asyncpg # noqa: E402
  • db (weak) sammyjdev-axon-cb7dd56/tests/store/test_graph_listing.py :7 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/store/test_graph_methods.py :33 import asyncpg
  • db (weak) sammyjdev-axon-cb7dd56/tests/store/test_lesson_catalog_does_not_credit.py :18 import asyncpg

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

tool registrations 24

  • search_code sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :663
  • get_session_memory sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :711
  • get_dependencies sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :752
  • get_adrs sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :777
  • save_adr sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :811
  • ask sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :845
  • get_graph_neighbors sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1026
  • get_graph_path sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1042
  • get_graph_context sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1054
  • restore_context sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1078
  • axon_session_start sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1164
  • axon_session_end sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1207
show 12 more
  • axon_capture_event sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1229
  • axon_record_outcome sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1270
  • axon_record_lesson sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1302
  • axon_search_lessons sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1340
  • axon_get_context sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1375
  • axon_capture sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1385
  • axon_search sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1413
  • axon_handoff sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1428
  • axon_export_now sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1493
  • axon_mark_done sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1502
  • axon_validation_stats sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1513
  • axon_health sammyjdev-axon-cb7dd56/src/axon/mcp/server.py :1547

declared dependencies 32

  • mcp@>=2.0.0,<3
  • defusedxml@>=0.7.1,<1.0
  • fastembed@>=0.4.0,<1.0
  • watchdog@>=4.0.0,<7
  • tree-sitter@>=0.23.0,<1.0
  • tree-sitter-java@>=0.23.0,<1.0
  • tree-sitter-python@>=0.23.0,<1.0
  • tree-sitter-typescript@>=0.23.0,<1.0
  • litellm@>=1.40.0,<2
  • typer@>=0.12.0,<1.0
  • click@>=8.2,<9
  • ollama@>=0.2.0,<1.0
show 20 more
  • python-dotenv@>=1.0.0,<2
  • pydantic@>=2.0,<3
  • structlog@>=24.0,<27
  • pyyaml@>=6.0,<7
  • asyncpg@>=0.29,<1.0
  • pgvector@>=0.3,<1.0
  • pymupdf@>=1.24.0,<2
  • fastapi@>=0.111.0,<1.0
  • uvicorn@>=0.29.0,<1.0
  • boto3@>=1.34
  • pytest@>=8.0.0
  • pytest-asyncio@>=0.23.0
  • pytest-cov@>=5.0.0
  • ruff@>=0.4.0
  • pre-commit@>=3.5.0
  • testcontainers@>=4.0.0
  • hypothesis@>=6.0
  • httpx@>=0.27.0
  • pip-audit@>=2.7.0
  • matplotlib@>=3.8