https://github.com/smabe/end-of-line
· scanned 2026-06-16 00:16 UTC (2 months, 2 weeks ago)
79 raw signals (0 security + 79 graph)
Last scanned 2 months, 2 weeks ago · v1 · 70 actionable findings from 1 signal source. 9 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 4184 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 |
|---|---|---|---|
summarize_plan |
software | healthy | end_of_line/fleet.py:24 |
humanize_age |
software | healthy | end_of_line/fleet.py:61 |
render |
software | healthy | end_of_line/fleet.py:75 |
_pid_alive |
software | healthy | end_of_line/heartbeat_daemon.py:46 |
_ping |
software | healthy | end_of_line/heartbeat_daemon.py:57 |
_notify_failure |
software | healthy | end_of_line/heartbeat_daemon.py:63 |
tick_once |
software | healthy | end_of_line/heartbeat_daemon.py:86 |
run_loop |
software | healthy | end_of_line/heartbeat_daemon.py:110 |
_daemonize |
software | healthy | end_of_line/heartbeat_daemon.py:153 |
run |
software | healthy | end_of_line/heartbeat_daemon.py:179 |
_truncate_at_word |
software | healthy | end_of_line/state_blocker.py:30 |
process_answered_blockers |
software | healthy | end_of_line/state_blocker.py:39 |
stuck_blocker_repings |
software | healthy | end_of_line/state_blocker.py:58 |
render_blocker |
software | healthy | end_of_line/state_blocker.py:105 |
render_stalled |
software | healthy | end_of_line/state_blocker.py:137 |
render_halted |
software | healthy | end_of_line/state_blocker.py:142 |
render_worker_dead |
software | healthy | end_of_line/state_blocker.py:149 |
render_stuck_blocker |
software | healthy | end_of_line/state_blocker.py:156 |
__init__ |
software | healthy | end_of_line/notify_discord_inbound.py:33 |
poll |
software | healthy | end_of_line/notify_discord_inbound.py:55 |
_ensure_dm_channel |
software | healthy | end_of_line/notify_discord_inbound.py:79 |
_load_dm_cache |
software | healthy | end_of_line/notify_discord_inbound.py:93 |
_save_dm_cache |
software | healthy | end_of_line/notify_discord_inbound.py:99 |
_get_messages |
software | healthy | end_of_line/notify_discord_inbound.py:113 |
_route_message |
software | healthy | end_of_line/notify_discord_inbound.py:129 |
_find_blocker_by_discord_message_id |
software | healthy | end_of_line/notify_discord_inbound.py:157 |
_read_cursor |
software | healthy | end_of_line/notify_discord_inbound.py:178 |
_write_cursor |
software | healthy | end_of_line/notify_discord_inbound.py:184 |
_request |
software | healthy | end_of_line/notify_discord_inbound.py:194 |
__post_init__ |
software | healthy | end_of_line/webserver.py:84 |
host_allowlist_for |
software | healthy | end_of_line/webserver.py:89 |
_is_loopback |
software | healthy | end_of_line/webserver.py:94 |
detect_lan_ip |
software | healthy | end_of_line/webserver.py:105 |
token_path |
software | healthy | end_of_line/webserver.py:120 |
load_or_create_token |
software | healthy | end_of_line/webserver.py:124 |
_write_secret |
software | healthy | end_of_line/webserver.py:138 |
cert_paths |
software | healthy | end_of_line/webserver.py:156 |
_san_for |
software | healthy | end_of_line/webserver.py:161 |
ensure_self_signed |
software | healthy | end_of_line/webserver.py:178 |
_lock_down |
software | healthy | end_of_line/webserver.py:198 |
_openssl_addext |
software | healthy | end_of_line/webserver.py:209 |
_openssl_config |
software | healthy | end_of_line/webserver.py:232 |
build_tls_context |
software | healthy | end_of_line/webserver.py:264 |
build_config |
software | healthy | end_of_line/webserver.py:273 |
load_index_html |
software | healthy | end_of_line/webserver.py:334 |
load_apple_icon |
software | healthy | end_of_line/webserver.py:344 |
workers_json |
software | healthy | end_of_line/webserver.py:354 |
read_feed_window |
software | healthy | end_of_line/webserver.py:376 |
_truncate |
software | healthy | end_of_line/webserver.py:420 |
_result_text |
software | healthy | end_of_line/webserver.py:424 |
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 |
CONTEXT.md |
software | healthy | CONTEXT.md |
pyproject.toml |
software | healthy | pyproject.toml |
.jscpd.json |
software | healthy | .jscpd.json |
fleet.py |
software | healthy | end_of_line/fleet.py |
heartbeat_daemon.py |
software | healthy | end_of_line/heartbeat_daemon.py |
worker-settings.template.json |
software | healthy | end_of_line/worker-settings.template.json |
__init__.py |
software | healthy | end_of_line/__init__.py |
state_blocker.py |
software | healthy | end_of_line/state_blocker.py |
notify_discord_inbound.py |
software | healthy | end_of_line/notify_discord_inbound.py |
webserver.py |
software | healthy | end_of_line/webserver.py |
top_render.py |
software | healthy | end_of_line/top_render.py |
activity_hook.py |
software | healthy | end_of_line/activity_hook.py |
registry.py |
software | healthy | end_of_line/registry.py |
_xdg_guard.py |
software | healthy | end_of_line/_xdg_guard.py |
monitor.py |
software | healthy | end_of_line/monitor.py |
notify_base.py |
software | healthy | end_of_line/notify_base.py |
notify_imessage.py |
software | healthy | end_of_line/notify_imessage.py |
watch.py |
software | healthy | end_of_line/watch.py |
config.py |
software | healthy | end_of_line/config.py |
demo.py |
software | healthy | end_of_line/demo.py |
state_locator.py |
software | healthy | end_of_line/state_locator.py |
quota.py |
software | healthy | end_of_line/quota.py |
demo_worker.py |
software | healthy | end_of_line/demo_worker.py |
_pty_spawn_shim.py |
software | healthy | end_of_line/_pty_spawn_shim.py |
queue.py |
software | healthy | end_of_line/queue.py |
cross_plan_rules.py |
software | healthy | end_of_line/cross_plan_rules.py |
notify_inbound.py |
software | healthy | end_of_line/notify_inbound.py |
inbox.py |
software | healthy | end_of_line/inbox.py |
cli.py |
software | healthy | end_of_line/cli.py |
notify_discord.py |
software | healthy | end_of_line/notify_discord.py |
notify_imessage_inbound.py |
software | healthy | end_of_line/notify_imessage_inbound.py |
top.py |
software | healthy | end_of_line/top.py |
top_registry.py |
software | healthy | end_of_line/top_registry.py |
plan_parser.py |
software | healthy | end_of_line/plan_parser.py |
notify_discord_http.py |
software | healthy | end_of_line/notify_discord_http.py |
dispatch.py |
software | healthy | end_of_line/dispatch.py |
notify.py |
software | healthy | end_of_line/notify.py |
state.py |
software | healthy | end_of_line/state.py |
top_layout.py |
software | healthy | end_of_line/top_layout.py |
dry_merge.py |
software | healthy | end_of_line/dry_merge.py |
coolant.py |
software | healthy | end_of_line/coolant.py |
supervisor.py |
software | healthy | end_of_line/supervisor.py |
index.html |
software | healthy | end_of_line/web/index.html |
__init__.py |
software | healthy | end_of_line/hooks/__init__.py |
clu_session_start.py |
software | healthy | end_of_line/hooks/clu_session_start.py |
clu_inbox_surface.py |
software | healthy | end_of_line/hooks/clu_inbox_surface.py |
SKILL.md |
software | healthy | end_of_line/skills/clu-plan/SKILL.md |
SKILL.md |
software | healthy | end_of_line/skills/clu-phase/SKILL.md |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
PlanSummary |
software | healthy | end_of_line/fleet.py:14 |
DiscordInboundPoller |
software | healthy | end_of_line/notify_discord_inbound.py:30 |
ConfigError |
software | healthy | end_of_line/webserver.py:63 |
ServeConfig |
software | healthy | end_of_line/webserver.py:72 |
_AddextUnsupported |
software | healthy | end_of_line/webserver.py:174 |
_Handler |
software | healthy | end_of_line/webserver.py:567 |
_Server |
software | healthy | end_of_line/webserver.py:719 |
Rect |
software | healthy | end_of_line/top_render.py:29 |
Surface |
software | healthy | end_of_line/top_render.py:38 |
CursesSurface |
software | healthy | end_of_line/top_render.py:59 |
BufferSurface |
software | healthy | end_of_line/top_render.py:98 |
PlanEntry |
software | healthy | end_of_line/registry.py:25 |
OpenBlocker |
software | healthy | end_of_line/notify_base.py:22 |
Reply |
software | healthy | end_of_line/notify_base.py:30 |
Notifier |
software | healthy | end_of_line/notify_base.py:36 |
InboundPoller |
software | healthy | end_of_line/notify_base.py:50 |
BlockerDetail |
software | healthy | end_of_line/notify_base.py:84 |
IMessageNotifier |
software | healthy | end_of_line/notify_imessage.py:73 |
ConfigError |
software | healthy | end_of_line/config.py:24 |
ChannelSpec |
software | healthy | end_of_line/config.py:29 |
DispatchSpec |
software | healthy | end_of_line/config.py:37 |
NotifySpec |
software | healthy | end_of_line/config.py:54 |
CoolantSpec |
software | healthy | end_of_line/config.py:76 |
QualitySpec |
software | healthy | end_of_line/config.py:103 |
ProjectConfig |
software | healthy | end_of_line/config.py:115 |
DemoPlan |
software | healthy | end_of_line/demo.py:58 |
LocatorResult |
software | healthy | end_of_line/state_locator.py:27 |
QuotaMatch |
software | healthy | end_of_line/quota.py:80 |
GateDecision |
software | healthy | end_of_line/quota.py:202 |
ValidationResult |
software | healthy | end_of_line/queue.py:107 |
ProjectPlan |
software | healthy | end_of_line/cross_plan_rules.py:28 |
RuleResult |
software | healthy | end_of_line/cross_plan_rules.py:35 |
ExitCode |
software | healthy | end_of_line/cli.py:256 |
DiscordNotifier |
software | healthy | end_of_line/notify_discord.py:26 |
SelfChatLookupError |
software | healthy | end_of_line/notify_imessage_inbound.py:65 |
IMessageInboundPoller |
software | healthy | end_of_line/notify_imessage_inbound.py:474 |
Snapshot |
software | healthy | end_of_line/top_registry.py:51 |
Metric |
software | healthy | end_of_line/top_registry.py:75 |
Pane |
software | healthy | end_of_line/top_registry.py:374 |
Phase |
software | healthy | end_of_line/plan_parser.py:29 |
InvalidSlug |
software | healthy | end_of_line/state.py:42 |
SchemaVersionMismatch |
software | healthy | end_of_line/state.py:99 |
ReapResult |
software | healthy | end_of_line/state.py:285 |
LockTimeout |
software | healthy | end_of_line/state.py:497 |
ClaimMismatch |
software | healthy | end_of_line/state.py:739 |
Leaf |
software | healthy | end_of_line/top_layout.py:78 |
Split |
software | healthy | end_of_line/top_layout.py:85 |
Layout |
software | healthy | end_of_line/top_layout.py:142 |
LayoutEngine |
software | healthy | end_of_line/top_layout.py:149 |
AppState |
software | healthy | end_of_line/top_layout.py:192 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
end_of_line |
software | healthy | end_of_line |
web |
software | healthy | end_of_line/web |
hooks |
software | healthy | end_of_line/hooks |
skills |
software | healthy | end_of_line/skills |
clu-plan |
software | healthy | end_of_line/skills/clu-plan |
clu-phase |
software | healthy | end_of_line/skills/clu-phase |
audit-skill |
software | healthy | end_of_line/skills/audit-skill |
clu-monitor |
software | healthy | end_of_line/skills/clu-monitor |
brainstorm |
software | healthy | end_of_line/skills/brainstorm |
plan |
software | healthy | end_of_line/skills/plan |
clu-reply |
software | healthy | end_of_line/skills/clu-reply |
tests |
software | healthy | tests |
docs |
software | healthy | docs |
triage |
software | healthy | docs/triage |
design-briefs |
software | healthy | docs/design-briefs |
research |
software | healthy | docs/research |
adr |
software | healthy | docs/adr |
history |
software | healthy | docs/history |
brainstorm |
software | healthy | docs/history/brainstorm |
plans |
software | healthy | docs/history/plans |
bundle-operator-subcommands |
software | healthy | docs/history/plans/bundle-operator-subcommands |
clu-docs |
software | healthy | docs/history/plans/clu-docs |
clu-selftest |
software | healthy | docs/history/plans/clu-selftest |
clu-worktrees |
software | healthy | docs/history/plans/clu-worktrees |
bundle-plan-skill |
software | healthy | docs/history/plans/bundle-plan-skill |
bundle-inbound |
software | healthy | docs/history/plans/bundle-inbound |
smoke-tests |
software | healthy | docs/history/plans/smoke-tests |
clu-tick-default-dispatch |
software | healthy | docs/history/plans/clu-tick-default-dispatch |
triage-issues |
software | healthy | docs/history/plans/triage-issues |
bundle-standalone-skill |
software | healthy | docs/history/plans/bundle-standalone-skill |
worktree-blocker-followups |
software | healthy | docs/history/plans/worktree-blocker-followups |
clu-monitor |
software | healthy | docs/history/plans/clu-monitor |
clu-queue |
software | healthy | docs/history/plans/clu-queue |
worker-path-config |
software | healthy | docs/history/plans/worker-path-config |
bundle-recovery |
software | healthy | docs/history/plans/bundle-recovery |
queue-ux-hardening |
software | healthy | docs/history/plans/queue-ux-hardening |
bundle-brainstorm-skill |
software | healthy | docs/history/plans/bundle-brainstorm-skill |
clu-inbox |
software | healthy | docs/history/plans/clu-inbox |
green-batch |
software | healthy | docs/history/plans/green-batch |
halt-bypass |
software | healthy | docs/history/plans/halt-bypass |
scripts |
software | healthy | scripts |
examples |
software | healthy | examples |
plans |
software | healthy | plans |
archive |
software | healthy | plans/archive |
clu-phase-progress |
software | healthy | plans/archive/clu-phase-progress |
clu-serve |
software | healthy | plans/archive/clu-serve |
delete-remote-branches-on-archive |
software | healthy | plans/archive/delete-remote-branches-on-archive |
line-buffer-worker-output |
software | healthy | plans/archive/line-buffer-worker-output |
clu-ship |
software | healthy | plans/archive/clu-ship |
coolant-lifecycle-events |
software | healthy | plans/archive/coolant-lifecycle-events |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | end_of_line/webserver.py |
127.0.0.0 |
network | healthy | end_of_line/webserver.py |
127.0.0.2 |
network | healthy | end_of_line/webserver.py |
8.8.8.8 |
network | healthy | end_of_line/webserver.py |
192.168.1.5 |
network | healthy | tests/test_webserver.py |
192.168.7.7 |
network | healthy | tests/test_webserver.py |
192.168.4.4 |
network | healthy | tests/test_webserver.py |
192.168.9.9 |
network | healthy | tests/test_webserver.py |
10.0.0.5 |
network | healthy | tests/test_webserver.py |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | end_of_line/notify_imessage_inbound.py |
postgresql |
data | healthy | tests/test_inbox_hook.py |
postgres |
data | healthy | tests/test_watch_project_event.py |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8787 |
network | healthy | end_of_line/cli.py |
port:9000 |
network | healthy | tests/test_webserver.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-2x6w14cd |
software | healthy | /tmp/repobility-clone-2x6w14cd |
| Label | Layer | Status | Path |
|---|---|---|---|
test_monitor_migration.py |
data | healthy | tests/test_monitor_migration.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | tests/test_webserver.py |
This page is publicly accessible at:
https://repobility.com/scan/2b1d35ba-a2be-4570-9043-5c7cf8521ebe/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/2b1d35ba-a2be-4570-9043-5c7cf8521ebe/
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.