github Python analyzed 73d491d

keepwhatworks/trinity

github

Ask all three. Keep what works. A local-first cross-provider council layer for Claude, Codex, and Gemini — one prompt, all three answer, a chairman synthesizes the verdict. No new app, no API key; your transcripts never leave your machine.

maintainer
keepwhatworks
licence
MIT
first seen
2026-06-16
last seen
2026-09-13
releases · 30d
0
short id

Drift inferred · capture-to-capture

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

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

tools

  • run_council
  • verify
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 73d491d · analyzer v33 · 4d ago

skills & prompt files 5

danger signals4

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

code files: 1063

filesystem 381

  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/adapters.py :13 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/agent_emit.py :45 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/ask.py :161 with (d / "exploration_routes.jsonl").open("a", encoding="utf-8") as f:
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/capture_host.py :27 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/cold_start.py :29 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/config_cmd.py :25 import shutil
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/council.py :7 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/dream.py :327 for line in path.open(encoding="utf-8"):
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/eval.py :561 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/eval_import.py :21 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/extension_repair.py :36 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/helpers.py :5 from pathlib import Path
show 28 more
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/import_export.py :32 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/install.py :7 import shutil
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/lens_import.py :28 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/me_card.py :14 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/portal.py :17 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/provider_import.py :20 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/update.py :35 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/verify.py :13 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/config.py :6 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/core_gate.py :65 import pathlib
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/council_review.py :5 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/council_runner.py :7 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/council_runtime.py :4 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/council_status.py :91 return False # can't tell when it last updated → fail open (keep running)
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/disagreement_ledger.py :36 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/dispatch_health.py :101 with path.open("r", encoding="utf-8") as f:
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/dispatch_ledger.py :38 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/dissent_outcome.py :47 import pathlib
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/distill.py :23 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/drift.py :19 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/embedder_wizard.py :38 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/embeddings/backend_mlx.py :26 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/embeddings/backend_mlx_native.py :23 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/evals/baseline_floor.py :34 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/evals/builder.py :51 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/evals/judge_alignment.py :37 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/evals/public_datasets.py :44 from pathlib import Path
  • fs keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/evals/runner.py :17 from pathlib import Path

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

shell / exec 124

  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/adapters.py :11 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/capture_host.py :499 dirs. Bare ``subprocess.run(["trinity-local", ...])`` PATH lookup
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/update.py :33 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/council_runner.py :75 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/embedder_wizard.py :35 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/health_checks.py :248 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/local_models.py :27 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/notifications.py :17 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/providers.py :6 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/runtime_env.py :4 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/skill_loop.py :54 import subprocess
  • shell keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/verify.py :36 import subprocess
show 28 more
  • shell (weak) keepwhatworks-trinity-73d491d/scripts/_runtime.py :46 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/scripts/browser_smoke.py :119 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/scripts/check_generated_js.py :30 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/scripts/coverage_disclosure.py :24 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/scripts/inject_ga4_credentials.py :30 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/scripts/render_docs.py :29 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/adapters.py :11 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/capture_host.py :499 dirs. Bare ``subprocess.run(["trinity-local", ...])`` PATH lookup
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/commands/update.py :33 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/council_runner.py :75 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/embedder_wizard.py :35 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/health_checks.py :248 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/local_models.py :27 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/notifications.py :17 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/providers.py :6 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/runtime_env.py :4 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/skill_loop.py :54 import subprocess
  • shell keepwhatworks-trinity-73d491d/src/trinity_local/verify.py :36 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_antigravity_model_pinned.py :14 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_background_capture_store.py :18 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_background_provider_thread_url.py :25 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_background_sender_gate.py :31 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_browser_extension_chatgpt_adapter.py :18 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_browser_extension_claude_adapter.py :18 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_browser_extension_gemini_adapter.py :23 import subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_capture_host_dispatch_argv_safe.py :10 `["--<arg>", str(value)]` per allowlisted field, then `subprocess.Popen(argv)` /
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_capture_host_error_no_leak_browser.py :88 import subprocess as real_subprocess
  • shell (weak) keepwhatworks-trinity-73d491d/tests/test_capture_host_stdio.py :20 import subprocess

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

network 16

  • net keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/portal.py :18 from urllib.parse import quote
  • net keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/core_gate.py :382 import urllib.request as _url
  • net keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/telemetry.py :696 import urllib.error
  • net (weak) keepwhatworks-trinity-73d491d/scripts/browser_smoke.py :123 import urllib.error
  • net keepwhatworks-trinity-73d491d/src/trinity_local/commands/portal.py :18 from urllib.parse import quote
  • net keepwhatworks-trinity-73d491d/src/trinity_local/core_gate.py :382 import urllib.request as _url
  • net keepwhatworks-trinity-73d491d/src/trinity_local/telemetry.py :696 import urllib.error
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_browser_extension_gemini_adapter.py :268 import urllib.parse
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_capture_host_no_network.py :5 If anyone adds ``requests``/``httpx``/``urllib.request`` etc. to that
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_council_live_heading_outline_browser.py :36 import urllib.parse
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_gstack_patterns.py :404 "urllib.request.urlopen",
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_launchpad_evidence_chip_opens_council_browser.py :37 from urllib.parse import urljoin
show 4 more
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_live_council_320px_token_overflow_browser.py :361 from urllib.parse import quote
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_live_council_task_no_double_render_browser.py :35 from urllib.parse import quote
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_memory_viewer_degraded_trust_label_contrast_browser.py :172 from urllib.parse import unquote, urlparse
  • net (weak) keepwhatworks-trinity-73d491d/tests/test_serve_no_cache_html.py :14 import socket

secrets 3

  • secrets keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/telemetry.py :639 api_secret = os.environ.get("TRINITY_GA4_API_SECRET", "").strip()
  • secrets (weak) keepwhatworks-trinity-73d491d/scripts/inject_ga4_credentials.py :63 sec = os.environ.get("TRINITY_GA4_API_SECRET", "").strip()
  • secrets keepwhatworks-trinity-73d491d/src/trinity_local/telemetry.py :639 api_secret = os.environ.get("TRINITY_GA4_API_SECRET", "").strip()

tool registrations 4

  • run_council keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/mcp_server.py :144
  • verify keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/mcp_server.py :330
  • run_council keepwhatworks-trinity-73d491d/src/trinity_local/mcp_server.py :144
  • verify keepwhatworks-trinity-73d491d/src/trinity_local/mcp_server.py :330

declared dependencies 9

  • mcp@>=1.0
  • numpy@>=1.26
  • pytest@>=7
  • pyflakes@>=3
  • Pillow@>=10
  • mlx@>=0.20; platform_system ==
  • and@platform_machine ==
  • Darwin@*
  • arm64@*

clipboard 7

  • clipboard shell call keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/eval_import.py :60 "`eval-prompt | pbcopy` lands a clean paste."
  • clipboard shell call keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/commands/lens_import.py :77 "common `lens-prompt | pbcopy` flow lands a clean paste."
  • clipboard shell call keepwhatworks-trinity-73d491d/plugins/trinity-local/engine/trinity_local/launchpad_template.py :2409 @click.stop="copyText('trinity-local lens-prompt | pbcopy', 'lens-prompt-copy')">
  • clipboard shell call keepwhatworks-trinity-73d491d/src/trinity_local/commands/eval_import.py :60 "`eval-prompt | pbcopy` lands a clean paste."
  • clipboard shell call keepwhatworks-trinity-73d491d/src/trinity_local/commands/lens_import.py :77 "common `lens-prompt | pbcopy` flow lands a clean paste."
  • clipboard shell call keepwhatworks-trinity-73d491d/src/trinity_local/launchpad_template.py :2409 @click.stop="copyText('trinity-local lens-prompt | pbcopy', 'lens-prompt-copy')">
  • clipboard shell call keepwhatworks-trinity-73d491d/tests/test_launchpad_lens_empty_state.py :29 assert "trinity-local lens-prompt | pbcopy" in html