https://github.com/vrennat/earworm
· scanned 2026-06-16 00:53 UTC (2 months, 1 week ago)
22 raw signals (0 security + 22 graph)
Last scanned 2 months, 1 week ago · v1 · 21 actionable findings from 1 signal source. 1 repeated signal grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 326 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 |
|---|---|---|---|
test_is_url |
software | healthy | tests/test_ingest.py:31 |
test_derive_title_prefers_frontmatter |
software | healthy | tests/test_ingest.py:39 |
test_derive_title_from_first_heading |
software | healthy | tests/test_ingest.py:45 |
test_derive_title_from_first_line_when_no_heading |
software | healthy | tests/test_ingest.py:50 |
test_derive_title_falls_back |
software | healthy | tests/test_ingest.py:55 |
test_markdown_to_prose_strips_reading_artifacts |
software | healthy | tests/test_ingest.py:59 |
test_markdown_to_prose_preserves_paragraphs |
software | healthy | tests/test_ingest.py:77 |
test_summary_line_takes_first_sentence |
software | healthy | tests/test_ingest.py:83 |
test_build_script_has_frontmatter_and_body |
software | healthy | tests/test_ingest.py:88 |
test_build_script_includes_author |
software | healthy | tests/test_ingest.py:102 |
test_build_script_omits_author_when_absent |
software | healthy | tests/test_ingest.py:110 |
test_build_script_includes_named_feed |
software | healthy | tests/test_ingest.py:116 |
test_build_script_omits_feed_for_default |
software | healthy | tests/test_ingest.py:124 |
test_build_script_omits_feed_when_absent |
software | healthy | tests/test_ingest.py:133 |
test_raw_author_prepends_byline_and_drops_dup_title |
software | healthy | tests/test_ingest.py:139 |
test_build_report_is_shownotes_parseable |
software | healthy | tests/test_ingest.py:158 |
test_build_report_without_source_has_no_sources |
software | healthy | tests/test_ingest.py:170 |
test_adapted_too_short_guard |
software | healthy | tests/test_ingest.py:177 |
_paths |
software | healthy | tests/test_ingest.py:188 |
_write_tmp |
software | healthy | tests/test_ingest.py:194 |
test_ingest_stdin_raw_writes_inbox_script |
software | healthy | tests/test_ingest.py:201 |
no_adapt |
software | healthy | tests/test_ingest.py:206 |
test_ingest_file_runs_adapt_pass |
software | healthy | tests/test_ingest.py:228 |
fake_adapt |
software | healthy | tests/test_ingest.py:263 |
test_ingest_url_fetches_then_adapts |
software | healthy | tests/test_ingest.py:252 |
fake_fetch |
software | healthy | tests/test_ingest.py:257 |
test_ingest_archives_source_and_report_in_run_dir |
software | healthy | tests/test_ingest.py:284 |
test_ingest_source_url_override_sets_shownote_source |
software | healthy | tests/test_ingest.py:303 |
test_ingest_feed_slugified_into_frontmatter |
software | healthy | tests/test_ingest.py:321 |
test_ingest_defaults_feed_when_absent |
software | healthy | tests/test_ingest.py:334 |
test_ingest_warns_when_adapt_overcondenses |
software | healthy | tests/test_ingest.py:345 |
shrinking_adapt |
software | healthy | tests/test_ingest.py:351 |
main |
software | healthy | tests/test_ingest.py:359 |
_home |
software | healthy | tests/test_config.py:18 |
test_prompts_uses_local_dir_when_present |
software | healthy | tests/test_config.py:24 |
test_prompts_falls_back_to_bundled_when_absent |
software | healthy | tests/test_config.py:31 |
main |
software | healthy | tests/test_config.py:37 |
check |
software | healthy | tests/test_normalize.py:13 |
main |
software | healthy | tests/test_normalize.py:18 |
_fresh_db |
software | healthy | tests/test_idempotency.py:21 |
test_new_episode_uses_content_hash_as_guid |
software | healthy | tests/test_idempotency.py:30 |
test_rerender_same_slug_reuses_guid_and_replaces |
software | healthy | tests/test_idempotency.py:41 |
test_upsert_episode_stores_feed |
software | healthy | tests/test_idempotency.py:64 |
test_upsert_episode_defaults_feed |
software | healthy | tests/test_idempotency.py:73 |
test_set_episode_feed_retags_and_unpublishes |
software | healthy | tests/test_idempotency.py:82 |
test_distinct_slugs_get_distinct_rows |
software | healthy | tests/test_idempotency.py:97 |
test_unique_slug_index_blocks_raw_duplicate_insert |
software | healthy | tests/test_idempotency.py:105 |
test_reset_stale_running_requeues_crashed_topics |
software | healthy | tests/test_idempotency.py:122 |
test_r2_key_is_stable_per_guid |
software | healthy | tests/test_idempotency.py:134 |
main |
software | healthy | tests/test_idempotency.py:150 |
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 |
interests.example.md |
software | healthy | interests.example.md |
Dockerfile |
software | healthy | Dockerfile |
.env.example |
software | healthy | .env.example |
pyproject.toml |
software | healthy | pyproject.toml |
LICENSE |
software | healthy | LICENSE |
install.sh |
software | healthy | launchd/install.sh |
uninstall.sh |
software | healthy | launchd/uninstall.sh |
daily.sh |
software | healthy | launchd/daily.sh |
voice.example.toml |
software | healthy | config/voice.example.toml |
show.example.toml |
software | healthy | config/show.example.toml |
feed.example.toml |
software | healthy | config/feed.example.toml |
earworm.example.toml |
software | healthy | config/earworm.example.toml |
pipeline.example.toml |
software | healthy | config/pipeline.example.toml |
lexicon.example.toml |
software | healthy | config/lexicon.example.toml |
secrets.example.toml |
software | healthy | config/secrets.example.toml |
test_ingest.py |
software | healthy | tests/test_ingest.py |
test_config.py |
software | healthy | tests/test_config.py |
test_normalize.py |
software | healthy | tests/test_normalize.py |
test_idempotency.py |
software | healthy | tests/test_idempotency.py |
test_pipeline.py |
software | healthy | tests/test_pipeline.py |
render_all.py |
software | healthy | scripts/render_all.py |
voice_sampler.py |
software | healthy | scripts/voice_sampler.py |
rerender_canonical.py |
software | healthy | scripts/rerender_canonical.py |
make_cover.py |
software | healthy | scripts/make_cover.py |
regen_script.py |
software | healthy | scripts/regen_script.py |
bun.lock |
software | healthy | worker/bun.lock |
package.json |
software | healthy | worker/package.json |
schema.sql |
software | healthy | worker/schema.sql |
tsconfig.json |
software | healthy | worker/tsconfig.json |
0001_add_feed.sql |
software | healthy | worker/migrations/0001_add_feed.sql |
rss.ts |
software | healthy | worker/src/rss.ts |
index.ts |
software | healthy | worker/src/index.ts |
ingest.md |
software | healthy | prompts/ingest.md |
autogen.md |
software | healthy | prompts/autogen.md |
script_revise.md |
software | healthy | prompts/script_revise.md |
script_review.md |
software | healthy | prompts/script_review.md |
script.md |
software | healthy | prompts/script.md |
ingest_fetch.md |
software | healthy | prompts/ingest_fetch.md |
research.md |
software | healthy | prompts/research.md |
review.md |
software | healthy | prompts/review.md |
ci.yml |
software | healthy | .github/workflows/ci.yml |
__init__.py |
software | healthy | src/earworm/__init__.py |
db.py |
software | healthy | src/earworm/db.py |
config.py |
software | healthy | src/earworm/config.py |
render.py |
software | healthy | src/earworm/render.py |
frontmatter.py |
software | healthy | src/earworm/frontmatter.py |
shownotes.py |
software | healthy | src/earworm/shownotes.py |
feed.py |
software | healthy | src/earworm/feed.py |
normalize.py |
software | healthy | src/earworm/normalize.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
launchd |
software | healthy | launchd |
config |
software | healthy | config |
tests |
software | healthy | tests |
scripts |
software | healthy | scripts |
worker |
software | healthy | worker |
migrations |
software | healthy | worker/migrations |
src |
software | healthy | worker/src |
prompts |
software | healthy | prompts |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
earworm |
software | healthy | src/earworm |
tts |
software | healthy | src/earworm/tts |
| Label | Layer | Status | Path |
|---|---|---|---|
Paths |
software | healthy | src/earworm/config.py:34 |
PublishError |
software | healthy | src/earworm/feed.py:30 |
StageError |
software | healthy | src/earworm/pipeline.py:27 |
StageConfig |
software | healthy | src/earworm/pipeline.py:40 |
PipelineConfig |
software | healthy | src/earworm/pipeline.py:52 |
RunContext |
software | healthy | src/earworm/pipeline.py:125 |
Stage |
software | healthy | src/earworm/pipeline.py:178 |
ClaudeError |
software | healthy | src/earworm/claude.py:16 |
KokoroEngine |
software | healthy | src/earworm/tts/kokoro_engine.py:26 |
TTSEngine |
software | healthy | src/earworm/tts/base.py:7 |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | README.md |
postgres |
data | healthy | tests/test_normalize.py |
| Label | Layer | Status | Path |
|---|---|---|---|
episodes |
data | healthy | worker/schema.sql |
topics |
data | healthy | src/earworm/db.py |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::config/lexicon.example.toml |
security | healthy | config/lexicon.example.toml |
auth::src/earworm/feed.py |
security | healthy | src/earworm/feed.py |
| Label | Layer | Status | Path |
|---|---|---|---|
python |
cicd | healthy | .github/workflows/ci.yml |
worker |
cicd | healthy | .github/workflows/ci.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-5gzm_tiy |
software | healthy | /tmp/repobility-clone-5gzm_tiy |
| Label | Layer | Status | Path |
|---|---|---|---|
0001_add_feed.sql |
data | healthy | worker/migrations/0001_add_feed.sql |
| Label | Layer | Status | Path |
|---|---|---|---|
port:07 |
network | healthy | launchd/install.sh |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | tests/test_normalize.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
This page is publicly accessible at:
https://repobility.com/scan/a392ae53-1975-4d80-81aa-494256dfcbdc/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/a392ae53-1975-4d80-81aa-494256dfcbdc/
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.