CLI toolbox for Observability-Driven Development (ODD): coding agents observe local runs on an OpenTelemetry/Grafana stack - or remote ones on any OpenTelemetry backend - and feed the next spec-driven improvement loop.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 10 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
get_order
-
get_product
-
odd_config_get
-
odd_config_set
-
odd_stack_down
-
odd_stack_reset
-
odd_stack_status
-
odd_stack_up
-
place_order
-
search_products
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit a5af1dc · analyzer v33 · 14h ago
skills & prompt files 30
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-config.prompt.md
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-instrument-bench.prompt.md
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-instrument-otel.prompt.md
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-instrument-stack.prompt.md
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-observe.prompt.md
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-status.prompt.md
- prompt-file using-system-oddyssey-a5af1dc/.apm/prompts/odd-verify.prompt.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/backend-configuration/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/get-status/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/k6-guides/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/odd-memory/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/otel-guides/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/package-layout/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/run-scenario/SKILL.md
- skill using-system-oddyssey-a5af1dc/.apm/skills/setup-local-stack/SKILL.md
- agent-rules using-system-oddyssey-a5af1dc/.claude/commands/launch-llms-benchmark.md
- agent-rules using-system-oddyssey-a5af1dc/.claude/commands/oddyssey-publish.md
- skill using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/SKILL.md
- agent-rules using-system-oddyssey-a5af1dc/AGENTS.md
- agent-rules using-system-oddyssey-a5af1dc/CLAUDE.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/backend-configuration/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/get-status/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/k6-guides/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/odd-memory/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/otel-guides/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/package-layout/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/run-scenario/SKILL.md
- skill using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/setup-local-stack/SKILL.md
danger signals1
- committed secret GitHub token using-system-oddyssey-a5af1dc/tests/skills/odd-memory/test_odd_report.py :1520
ghp_16…(40 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 146
filesystem 77
- fs (weak) using-system-oddyssey-a5af1dc/.apm/hooks/scripts/check_report_frontmatter.py :48
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/hooks/scripts/guard_append_only.py :71
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/hooks/scripts/guard_default_branch.py :99
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/hooks/scripts/scan_odd_identifiers.py :45
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/backend-configuration/scripts/preflight.py :28
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/get-status/scripts/odd_render.py :29
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/get-status/scripts/odd_status.py :28
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/k6-guides/scripts/replay_benchmark.py :42
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/azure-monitor-traces.py :543
with open(path, encoding="utf-8") as fh: - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/check_stack_reference.py :58
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/cloudwatch-metrics.py :562
os.unlink(f[len("file://") :]) - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/cloudwatch-traces.py :757
with open(path, encoding="utf-8") as fh:
show 28 more
- fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/grafana-context.py :36
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/grafana-traces.py :170
with open( - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/grafana_gcx.py :122
with open(spilled, encoding="utf-8") as fh: - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/odd-memory/scripts/odd_ledger.py :35
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/odd-memory/scripts/odd_recall.py :48
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/odd-memory/scripts/odd_report.py :56
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/package-layout/scripts/layout.py :26
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/run-scenario/scripts/drive_scenario.py :52
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/setup-local-stack/scripts/gcx_local.py :26
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.apm/skills/setup-local-stack/scripts/probe_services.py :26
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/scripts/analyze_run.py :42
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/scripts/measure_phase.py :43
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/scripts/run_samples.py :40
import shutil - fs (weak) using-system-oddyssey-a5af1dc/.odd/observability-stacks/seq/scripts/seq_cli.py :43
import shutil - fs using-system-oddyssey-a5af1dc/assets/videos/trailer/make_music.py :18
from pathlib import Path - fs using-system-oddyssey-a5af1dc/assets/videos/trailer/make_video.py :25
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/com.github.copilot/hooks/scripts/check_report_frontmatter.py :48
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/com.github.copilot/hooks/scripts/guard_append_only.py :71
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/com.github.copilot/hooks/scripts/guard_default_branch.py :99
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/com.github.copilot/hooks/scripts/scan_odd_identifiers.py :45
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/hooks/scripts/check_report_frontmatter.py :48
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/hooks/scripts/guard_append_only.py :71
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/hooks/scripts/guard_default_branch.py :99
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/hooks/scripts/scan_odd_identifiers.py :45
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/backend-configuration/scripts/preflight.py :28
import shutil - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/get-status/scripts/odd_render.py :29
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/get-status/scripts/odd_status.py :28
from pathlib import Path - fs (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/k6-guides/scripts/replay_benchmark.py :42
import shutil
37 more not shown — this panel samples each group; the count above is the real total.
shell / exec 58
- shell (weak) using-system-oddyssey-a5af1dc/.apm/hooks/scripts/guard_append_only.py :69
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/hooks/scripts/guard_default_branch.py :97
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/backend-configuration/scripts/preflight.py :29
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/k6-guides/scripts/replay_benchmark.py :43
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/azure_monitor_az.py :46
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/check_stack_reference.py :59
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/cloudwatch_aws.py :54
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/grafana-context.py :37
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/grafana_gcx.py :31
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/odd-memory/scripts/odd_ledger.py :32
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/odd-memory/scripts/odd_report.py :53
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/run-scenario/scripts/drive_scenario.py :53
import subprocess
show 28 more
- shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/setup-local-stack/scripts/gcx_local.py :27
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.apm/skills/setup-local-stack/scripts/probe_services.py :27
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/scripts/measure_phase.py :38
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/scripts/run_samples.py :41
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/.odd/observability-stacks/seq/scripts/seq_cli.py :44
import subprocess - shell using-system-oddyssey-a5af1dc/assets/videos/trailer/make_video.py :23
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/com.github.copilot/hooks/scripts/guard_append_only.py :69
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/com.github.copilot/hooks/scripts/guard_default_branch.py :97
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/hooks/scripts/guard_append_only.py :69
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/hooks/scripts/guard_default_branch.py :97
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/backend-configuration/scripts/preflight.py :29
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/k6-guides/scripts/replay_benchmark.py :43
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/scripts/azure_monitor_az.py :46
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/scripts/check_stack_reference.py :59
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/scripts/cloudwatch_aws.py :54
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/scripts/grafana-context.py :37
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/scripts/grafana_gcx.py :31
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/odd-memory/scripts/odd_ledger.py :32
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/odd-memory/scripts/odd_report.py :53
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/run-scenario/scripts/drive_scenario.py :53
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/setup-local-stack/scripts/gcx_local.py :27
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/setup-local-stack/scripts/probe_services.py :27
import subprocess - shell using-system-oddyssey-a5af1dc/src/mcp-server/app/stack.py :11
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/tests/hooks/test_check_report_frontmatter.py :28
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/tests/hooks/test_guard_append_only.py :22
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/tests/hooks/test_guard_default_branch.py :18
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/tests/hooks/test_scan_odd_identifiers.py :20
import subprocess - shell (weak) using-system-oddyssey-a5af1dc/tests/mcp-server/test_stack.py :4
import subprocess
18 more not shown — this panel samples each group; the count above is the real total.
network 9
- net (weak) using-system-oddyssey-a5af1dc/.apm/skills/observability-cli-guides/scripts/check_stack_reference.py :62
import urllib.request - net (weak) using-system-oddyssey-a5af1dc/.apm/skills/run-scenario/scripts/drive_scenario.py :59
from urllib.parse import urlsplit - net using-system-oddyssey-a5af1dc/.llms-benchmark/src/mcp/app/catalog.py :9
import httpx - net (weak) using-system-oddyssey-a5af1dc/.odd/observability-stacks/seq/scripts/seq-context.py :23
import urllib.error - net (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/observability-cli-guides/scripts/check_stack_reference.py :62
import urllib.request - net (weak) using-system-oddyssey-a5af1dc/marketplace/oddyssey/skills/run-scenario/scripts/drive_scenario.py :59
from urllib.parse import urlsplit - net using-system-oddyssey-a5af1dc/src/mcp-server/app/stack.py :25
import httpx - net (weak) using-system-oddyssey-a5af1dc/tests/mcp-server/test_stack.py :6
import httpx - net (weak) using-system-oddyssey-a5af1dc/tests/skills/run-scenario/test_drive_scenario.py :19
import socket
secrets 2
- secrets using-system-oddyssey-a5af1dc/.llms-benchmark/src/agent/app/assistant.py :39
api_key=os.environ.get("OPENAI_API_KEY", ""), - secrets (weak) using-system-oddyssey-a5af1dc/.odd/observability-stacks/seq/scripts/seq-context.py :64
if os.environ.get("SEQCLI_CONNECTION_APIKEY"):
database 3
- db (weak) using-system-oddyssey-a5af1dc/.claude/skills/test-plugin-harnessing/scripts/analyze_run.py :43
import sqlite3 - db using-system-oddyssey-a5af1dc/.llms-benchmark/src/api/app/db.py :12
import sqlite3 - db (weak) using-system-oddyssey-a5af1dc/tests/skills/test-plugin-harnessing/test_harness_kit.py :11
import sqlite3
tool registrations 10
- search_products using-system-oddyssey-a5af1dc/.llms-benchmark/src/mcp/app/server.py :40
- get_product using-system-oddyssey-a5af1dc/.llms-benchmark/src/mcp/app/server.py :79
- get_order using-system-oddyssey-a5af1dc/.llms-benchmark/src/mcp/app/server.py :87
- place_order using-system-oddyssey-a5af1dc/.llms-benchmark/src/mcp/app/server.py :100
- odd_stack_up using-system-oddyssey-a5af1dc/src/mcp-server/app/server.py :35
- odd_stack_down using-system-oddyssey-a5af1dc/src/mcp-server/app/server.py :59
- odd_stack_status using-system-oddyssey-a5af1dc/src/mcp-server/app/server.py :66
- odd_stack_reset using-system-oddyssey-a5af1dc/src/mcp-server/app/server.py :73
- odd_config_get using-system-oddyssey-a5af1dc/src/mcp-server/app/server.py :99
- odd_config_set using-system-oddyssey-a5af1dc/src/mcp-server/app/server.py :106
declared dependencies 6
- mcp@==2.2.0
- httpx@==0.28.1
- opentelemetry-api@==1.44.0
- opentelemetry-sdk@==1.44.0
- opentelemetry-exporter-otlp-proto-http@==1.44.0
- opentelemetry-instrumentation-httpx@==0.65b0
transport_posture 3
- network-listening, binds all interfaces, no auth detected using-system-oddyssey-a5af1dc/.llms-benchmark/src/agent/app/main.py :73
host="0.0.0.0", # a container port, published deliberately - network-listening, binds all interfaces, no auth detected using-system-oddyssey-a5af1dc/.llms-benchmark/src/api/app/main.py :215
host="0.0.0.0", # a container port, published deliberately - network-listening, binds all interfaces, no auth detected using-system-oddyssey-a5af1dc/.llms-benchmark/src/mcp/app/server.py :127
host="0.0.0.0", # a container port, published deliberately