https://github.com/recinall/EchosMonitor
· scanned 2026-06-15 23:48 UTC (2 months, 3 weeks ago)
122 raw signals (0 security + 122 graph)
Last scanned 2 months, 3 weeks ago · v1 · 106 actionable findings from 1 signal source. 16 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 3742 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
qapp_args |
software | healthy | tests/conftest.py:19 |
_redirect_platformdirs |
software | healthy | tests/conftest.py:25 |
_fake_user_data_dir |
software | healthy | tests/conftest.py:41 |
_redirect_qsettings |
software | healthy | tests/conftest.py:48 |
capture_structlog |
software | healthy | tests/conftest.py:70 |
test_archive_config_defaults |
software | healthy | tests/config/test_schema_archive.py:25 |
test_archive_config_accepts_overrides |
software | healthy | tests/config/test_schema_archive.py:37 |
test_archive_config_rejects_out_of_range |
software | healthy | tests/config/test_schema_archive.py:71 |
test_archive_config_is_frozen |
software | healthy | tests/config/test_schema_archive.py:76 |
test_app_config_archive_root_default |
software | healthy | tests/config/test_schema_archive.py:83 |
test_app_config_archive_root_accepts_path |
software | healthy | tests/config/test_schema_archive.py:89 |
test_device_config_archive_default_factory |
software | healthy | tests/config/test_schema_archive.py:94 |
test_device_config_archive_override |
software | healthy | tests/config/test_schema_archive.py:101 |
test_root_config_propagates_archive_root_default |
software | healthy | tests/config/test_schema_archive.py:114 |
test_root_config_rejects_devices_colliding_on_archive_dir |
software | healthy | tests/config/test_schema_archive.py:123 |
test_root_config_rejects_separator_variants_colliding |
software | healthy | tests/config/test_schema_archive.py:139 |
test_root_config_allows_devices_with_distinct_archive_dirs |
software | healthy | tests/config/test_schema_archive.py:150 |
test_device_without_echos_section_is_generic_seedlink |
software | healthy | tests/config/test_schema_echos.py:35 |
test_echos_section_defaults |
software | healthy | tests/config/test_schema_echos.py:40 |
test_position_override_roundtrip |
software | healthy | tests/config/test_schema_echos.py:48 |
test_echos_bounds_rejected |
software | healthy | tests/config/test_schema_echos.py:64 |
test_position_override_bounds_rejected |
software | healthy | tests/config/test_schema_echos.py:77 |
test_echos_section_is_strict |
software | healthy | tests/config/test_schema_echos.py:82 |
test_default_yaml_echos_example_block_parses |
software | healthy | tests/config/test_schema_echos.py:89 |
test_bundled_default_yaml_contains_echos_example |
software | healthy | tests/config/test_schema_echos.py:100 |
test_loads_bundled_defaults_when_no_path |
software | healthy | tests/config/test_loader.py:16 |
test_explicit_path_returned |
software | healthy | tests/config/test_loader.py:35 |
test_missing_explicit_file |
software | healthy | tests/config/test_loader.py:45 |
test_malformed_yaml |
software | healthy | tests/config/test_loader.py:50 |
test_schema_violation_raises |
software | healthy | tests/config/test_loader.py:57 |
test_deep_merge_preserves_unset_keys |
software | healthy | tests/config/test_loader.py:64 |
test_lists_replace_rather_than_merge |
software | healthy | tests/config/test_loader.py:74 |
test_root_must_be_mapping |
software | healthy | tests/config/test_loader.py:91 |
test_xdg_fallback |
software | healthy | tests/config/test_loader.py:98 |
test_legacy_ai_key_is_stripped_with_warning |
software | healthy | tests/config/test_loader.py:107 |
test_legacy_ai_key_stripped_on_platformdirs_path |
software | healthy | tests/config/test_loader.py:133 |
test_no_strip_warning_without_legacy_ai_key |
software | healthy | tests/config/test_loader.py:151 |
test_legacy_platformdirs_config_ignored_with_warning |
software | healthy | tests/config/test_loader.py:165 |
test_no_legacy_warning_when_legacy_config_absent |
software | healthy | tests/config/test_loader.py:199 |
test_bundled_default_matches_repo_root |
software | healthy | tests/config/test_loader.py:216 |
test_fallback_path_is_writable_user_path_not_bundle |
software | healthy | tests/config/test_loader.py:230 |
test_docs_bandpass_anmo_yaml_validates_against_schema |
software | healthy | tests/config/test_docs_yaml_contract.py:81 |
test_docs_bandpass_anmo_yaml_builds_concrete_chain |
software | healthy | tests/config/test_docs_yaml_contract.py:110 |
test_default_yaml_iris_example_block_parses_and_builds |
software | healthy | tests/config/test_docs_yaml_contract.py:133 |
test_default_yaml_gfz_example_block_parses_and_builds |
software | healthy | tests/config/test_docs_yaml_contract.py:154 |
test_bundled_default_yaml_contains_both_example_blocks |
software | healthy | tests/config/test_docs_yaml_contract.py:186 |
__init__ |
software | healthy | tests/config/test_credentials.py:28 |
get_password |
software | healthy | tests/config/test_credentials.py:46 |
set_password |
software | healthy | tests/config/test_credentials.py:49 |
delete_password |
software | healthy | tests/config/test_credentials.py:52 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
FakeKeyring |
software | healthy | tests/config/test_credentials.py:25 |
BrokenKeyring |
software | healthy | tests/config/test_credentials.py:43 |
_FakeDiscovery |
software | healthy | tests/gui/test_first_run_wizard.py:29 |
_FakeDeviceWorker |
software | healthy | tests/gui/test_first_run_wizard.py:52 |
_FakeEngine |
software | healthy | tests/gui/test_hvsr_array_widget.py:31 |
_FakeArrayEngine |
software | healthy | tests/gui/test_hvsr_array_widget.py:45 |
_FakeEngine |
software | healthy | tests/gui/test_archive_handoff.py:38 |
_FakeHvsrEngine |
software | healthy | tests/gui/test_archive_handoff.py:59 |
_StubEngine |
software | healthy | tests/gui/test_chain_editor_dialog.py:28 |
_BigEngine |
software | healthy | tests/gui/test_chain_editor_dialog.py:288 |
StubConfigStore |
software | healthy | tests/gui/test_device_dialog.py:26 |
_Root |
software | healthy | tests/gui/test_device_dialog.py:47 |
_StubEngine |
software | healthy | tests/gui/test_device_dialog.py:323 |
_StubFetcher |
software | healthy | tests/gui/test_map_widget.py:261 |
_Clock |
software | healthy | tests/gui/test_detection_table.py:23 |
_FakeWorker |
software | healthy | tests/gui/test_discovery_dialog.py:15 |
_StubStore |
software | healthy | tests/gui/test_discovery_dialog.py:35 |
_Root |
software | healthy | tests/gui/test_discovery_dialog.py:41 |
_FakeEngine |
software | healthy | tests/gui/test_psd_widget.py:21 |
StubInfoWorker |
software | healthy | tests/gui/test_station_browser_subscribe.py:34 |
StubEngine |
software | healthy | tests/gui/test_station_browser_subscribe.py:72 |
StubConfigStore |
software | healthy | tests/gui/test_station_browser_subscribe.py:84 |
_Root |
software | healthy | tests/gui/test_station_browser_subscribe.py:97 |
_AutoAccept |
software | healthy | tests/gui/test_station_browser_subscribe.py:252 |
_AutoAcceptNew |
software | healthy | tests/gui/test_station_browser_subscribe.py:289 |
_FakeEngine |
software | healthy | tests/gui/test_hvsr_widget.py:25 |
_FakeHvsrEngine |
software | healthy | tests/gui/test_hvsr_widget.py:39 |
StubInfoWorker |
software | healthy | tests/gui/test_station_browser.py:35 |
StubEngine |
software | healthy | tests/gui/test_station_browser.py:92 |
_Trigger |
software | healthy | tests/core/test_echos_status.py:34 |
_HangingTransport |
software | healthy | tests/core/test_echos_status.py:41 |
_EngineSpy |
software | healthy | tests/core/test_streaming_engine.py:37 |
_FakeSens |
software | healthy | tests/core/test_hvsr.py:394 |
_FakeResp |
software | healthy | tests/core/test_hvsr.py:401 |
_FakeInv |
software | healthy | tests/core/test_hvsr.py:407 |
_FakeRemover |
software | healthy | tests/core/test_hvsr.py:418 |
_FakeProvider |
software | healthy | tests/core/test_hvsr.py:431 |
_Collector |
software | healthy | tests/core/test_archive_detail_loader.py:105 |
_LiveFeeder |
software | healthy | tests/core/test_archive_detail_loader.py:326 |
_SessionSpy |
software | healthy | tests/core/test_engine_sessions.py:106 |
_FakeRingEngine |
software | healthy | tests/core/test_hvsr_array.py:53 |
_RootedReader |
software | healthy | tests/core/test_hvsr_array.py:474 |
FakeEchosFirmware |
software | healthy | tests/core/echos_fake.py:107 |
_Session |
software | healthy | tests/core/fakes.py:49 |
FakeStation |
software | healthy | tests/core/fakes.py:59 |
FakeStream |
software | healthy | tests/core/fakes.py:72 |
FakeSeedLinkServerConfig |
software | healthy | tests/core/fakes.py:86 |
FakeSeedLinkServer |
software | healthy | tests/core/fakes.py:129 |
_Feeder |
software | healthy | tests/core/test_high_rate_load.py:177 |
_LoadResult |
software | healthy | tests/core/test_high_rate_load.py:216 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
CLAUDE.md |
software | healthy | CLAUDE.md |
ROADMAP.md |
software | healthy | ROADMAP.md |
pyproject.toml |
software | healthy | pyproject.toml |
default.yaml |
software | healthy | config/default.yaml |
__init__.py |
software | healthy | tests/__init__.py |
conftest.py |
software | healthy | tests/conftest.py |
__init__.py |
software | healthy | tests/config/__init__.py |
test_schema_archive.py |
software | healthy | tests/config/test_schema_archive.py |
test_schema_echos.py |
software | healthy | tests/config/test_schema_echos.py |
test_loader.py |
software | healthy | tests/config/test_loader.py |
test_docs_yaml_contract.py |
software | healthy | tests/config/test_docs_yaml_contract.py |
test_credentials.py |
software | healthy | tests/config/test_credentials.py |
test_archive_tab_view.py |
software | healthy | tests/gui/test_archive_tab_view.py |
test_live_stack_spectrogram.py |
software | healthy | tests/gui/test_live_stack_spectrogram.py |
test_first_run_wizard.py |
software | healthy | tests/gui/test_first_run_wizard.py |
test_live_tabs.py |
software | healthy | tests/gui/test_live_tabs.py |
__init__.py |
software | healthy | tests/gui/__init__.py |
test_trace_plot_decimation.py |
software | healthy | tests/gui/test_trace_plot_decimation.py |
test_session_toolbar.py |
software | healthy | tests/gui/test_session_toolbar.py |
test_hvsr_array_widget.py |
software | healthy | tests/gui/test_hvsr_array_widget.py |
test_detection_markers.py |
software | healthy | tests/gui/test_detection_markers.py |
test_live_stack.py |
software | healthy | tests/gui/test_live_stack.py |
test_first_run_wizard_integration.py |
software | healthy | tests/gui/test_first_run_wizard_integration.py |
test_recent_on_startup.py |
software | healthy | tests/gui/test_recent_on_startup.py |
test_main_window.py |
software | healthy | tests/gui/test_main_window.py |
test_dock_detach.py |
software | healthy | tests/gui/test_dock_detach.py |
test_archive_handoff.py |
software | healthy | tests/gui/test_archive_handoff.py |
test_device_dialog_echos.py |
software | healthy | tests/gui/test_device_dialog_echos.py |
test_chain_editor_dialog.py |
software | healthy | tests/gui/test_chain_editor_dialog.py |
test_device_dialog.py |
software | healthy | tests/gui/test_device_dialog.py |
test_archive_measure.py |
software | healthy | tests/gui/test_archive_measure.py |
test_detection_detail_archive.py |
software | healthy | tests/gui/test_detection_detail_archive.py |
test_map_widget.py |
software | healthy | tests/gui/test_map_widget.py |
test_detection_table.py |
software | healthy | tests/gui/test_detection_table.py |
test_settings_dialog.py |
software | healthy | tests/gui/test_settings_dialog.py |
test_device_panel_archive.py |
software | healthy | tests/gui/test_device_panel_archive.py |
test_menubar.py |
software | healthy | tests/gui/test_menubar.py |
test_archive_tab_reindex.py |
software | healthy | tests/gui/test_archive_tab_reindex.py |
test_first_run_no_trigger.py |
software | healthy | tests/gui/test_first_run_no_trigger.py |
test_discovery_dialog.py |
software | healthy | tests/gui/test_discovery_dialog.py |
test_trace_plot.py |
software | healthy | tests/gui/test_trace_plot.py |
test_psd_widget.py |
software | healthy | tests/gui/test_psd_widget.py |
test_archive_tab_browser.py |
software | healthy | tests/gui/test_archive_tab_browser.py |
test_focus_mode.py |
software | healthy | tests/gui/test_focus_mode.py |
test_stage_forms.py |
software | healthy | tests/gui/test_stage_forms.py |
test_archive_hvsr_e2e.py |
software | healthy | tests/gui/test_archive_hvsr_e2e.py |
test_station_browser_subscribe.py |
software | healthy | tests/gui/test_station_browser_subscribe.py |
test_spectrogram_dock.py |
software | healthy | tests/gui/test_spectrogram_dock.py |
test_device_panel_protocol.py |
software | healthy | tests/gui/test_device_panel_protocol.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
config |
software | healthy | config |
tests |
software | healthy | tests |
config |
software | healthy | tests/config |
gui |
software | healthy | tests/gui |
utils |
software | healthy | tests/utils |
core |
software | healthy | tests/core |
dsp |
software | healthy | tests/dsp |
storage |
software | healthy | tests/storage |
docs |
software | healthy | docs |
scripts |
software | healthy | scripts |
.claude |
software | healthy | .claude |
agents |
software | healthy | .claude/agents |
skills |
software | healthy | .claude/skills |
miniseed-sds |
software | healthy | .claude/skills/miniseed-sds |
hvsr-array |
software | healthy | .claude/skills/hvsr-array |
seismic-dsp |
software | healthy | .claude/skills/seismic-dsp |
qt-worker-threading |
software | healthy | .claude/skills/qt-worker-threading |
echos-rest-api |
software | healthy | .claude/skills/echos-rest-api |
src |
software | healthy | src |
echosmonitor |
software | healthy | src/echosmonitor |
config |
software | healthy | src/echosmonitor/config |
gui |
software | healthy | src/echosmonitor/gui |
widgets |
software | healthy | src/echosmonitor/gui/widgets |
dialogs |
software | healthy | src/echosmonitor/gui/dialogs |
utils |
software | healthy | src/echosmonitor/utils |
core |
software | healthy | src/echosmonitor/core |
dsp |
software | healthy | src/echosmonitor/dsp |
storage |
software | healthy | src/echosmonitor/storage |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | tests/gui/test_archive_tab_view.py |
192.0.2.10 |
network | healthy | tests/gui/test_first_run_wizard.py |
192.168.4.1 |
network | healthy | tests/gui/test_first_run_wizard.py |
10.0.0.9 |
network | healthy | tests/gui/test_first_run_wizard.py |
10.0.0.1 |
network | healthy | tests/gui/test_discovery_dialog.py |
10.255.255.1 |
network | healthy | tests/gui/test_device_panel_protocol.py |
192.0.2.1 |
network | healthy | tests/core/test_archive_detail_loader.py |
192.168.1.10 |
network | healthy | tests/core/echos_fake.py |
192.0.2.2 |
network | healthy | tests/core/test_streaming_engine_archive.py |
192.0.2.99 |
network | healthy | tests/core/test_discovery.py |
192.0.2.11 |
network | healthy | tests/core/test_discovery.py |
| Label | Layer | Status | Path |
|---|---|---|---|
_meta |
data | healthy | src/echosmonitor/storage/db.py |
sessions |
data | healthy | src/echosmonitor/storage/db.py |
session_devices |
data | healthy | src/echosmonitor/storage/db.py |
devices |
data | healthy | src/echosmonitor/storage/db.py |
streams |
data | healthy | src/echosmonitor/storage/db.py |
gaps |
data | healthy | src/echosmonitor/storage/db.py |
files |
data | healthy | src/echosmonitor/storage/db.py |
detections |
data | healthy | src/echosmonitor/storage/db.py |
| Label | Layer | Status | Path |
|---|---|---|---|
port:18000 |
network | healthy | config/default.yaml |
port:18001 |
network | healthy | tests/core/test_config_diff.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-apfhtpkw |
software | healthy | /tmp/repobility-clone-apfhtpkw |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | CLAUDE.md |
This page is publicly accessible at:
https://repobility.com/scan/07875b3e-2361-4afc-8db5-36a18d8843bb/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/07875b3e-2361-4afc-8db5-36a18d8843bb/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.