https://github.com/thewoolleyman/livespec-dev-tooling
· scanned 2026-06-16 00:35 UTC (2 months, 2 weeks ago)
145 raw signals (0 security + 145 graph)
Last scanned 2 months, 2 weeks ago · v1 · 87 actionable findings from 1 signal source. 58 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 2304 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 |
|---|---|---|---|
_imported_roots |
software | healthy | tests/consumer/test_no_network_io.py:62 |
_network_imports |
software | healthy | tests/consumer/test_no_network_io.py:75 |
test_no_shipped_check_imports_a_network_library |
software | healthy | tests/consumer/test_no_network_io.py:79 |
test_gate_detects_a_network_touching_fixture_check |
software | healthy | tests/consumer/test_no_network_io.py:101 |
_declared_version |
software | healthy | tests/consumer/test_semver_and_bump_shape.py:50 |
test_declared_version_is_a_wellformed_three_part_semver |
software | healthy | tests/consumer/test_semver_and_bump_shape.py:57 |
test_existing_check_argv_and_exit_code_contract_is_stable |
software | healthy | tests/consumer/test_semver_and_bump_shape.py:77 |
_write_clean_consumer_fixture |
software | healthy | tests/consumer/test_package_consumption.py:61 |
_run_check_as_consumer |
software | healthy | tests/consumer/test_package_consumption.py:68 |
test_livespec_consumes_check_via_python_m_on_clean_tree |
software | healthy | tests/consumer/test_package_consumption.py:84 |
test_impl_plugin_consumes_check_without_local_copy |
software | healthy | tests/consumer/test_package_consumption.py:101 |
test_package_entrypoint_importable_via_documented_path |
software | healthy | tests/consumer/test_package_consumption.py:124 |
_slug_to_module_name |
software | healthy | tests/consumer/test_reusable_check_matrix.py:45 |
_canonical_slugs |
software | healthy | tests/consumer/test_reusable_check_matrix.py:49 |
test_canonical_checks_emits_a_nonempty_matrix_array |
software | healthy | tests/consumer/test_reusable_check_matrix.py:68 |
test_every_matrix_slug_resolves_to_a_runnable_check_module |
software | healthy | tests/consumer/test_reusable_check_matrix.py:80 |
_write_consumer_fixture |
software | healthy | tests/consumer/test_self_application_regression.py:64 |
_run_no_inheritance |
software | healthy | tests/consumer/test_self_application_regression.py:71 |
test_self_application_surfaces_injected_regression |
software | healthy | tests/consumer/test_self_application_regression.py:81 |
test_self_application_passes_clean_tree |
software | healthy | tests/consumer/test_self_application_regression.py:103 |
_write_check_module |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:51 |
_make_fixture_package |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:63 |
_import_canonical_checks |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:80 |
test_discover_slugs_returns_alphabetical_order |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:94 |
test_discover_slugs_excludes_underscore_prefixed_modules |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:116 |
test_discover_slugs_excludes_init_py |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:136 |
test_discover_slugs_maps_snake_case_to_kebab_case |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:160 |
test_discover_slugs_handles_empty_package |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:179 |
test_canonical_check_slugs_returns_tuple_of_strings |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:196 |
test_canonical_check_slugs_excludes_helper_module |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:228 |
test_json_thin_transport_emits_slugs_array |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:247 |
test_canonical_checks_module_importable_without_running_main |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py:287 |
_write_pyproject |
software | healthy | tests/livespec_dev_tooling/test_config.py:43 |
test_livespec_core_fallback_when_no_pyproject |
software | healthy | tests/livespec_dev_tooling/test_config.py:47 |
test_livespec_core_fallback_when_pyproject_has_no_tool_table |
software | healthy | tests/livespec_dev_tooling/test_config.py:92 |
test_livespec_core_fallback_when_no_livespec_block |
software | healthy | tests/livespec_dev_tooling/test_config.py:98 |
test_present_block_omitting_keys_yields_flat_baseline |
software | healthy | tests/livespec_dev_tooling/test_config.py:104 |
test_full_override |
software | healthy | tests/livespec_dev_tooling/test_config.py:129 |
test_malformed_toml_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:164 |
test_source_trees_not_a_list_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:171 |
test_source_trees_non_string_element_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:181 |
test_dataclasses_tree_non_string_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:191 |
test_tests_tree_prefix_non_string_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:201 |
test_mirror_pairings_not_a_list_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:211 |
test_mirror_pairings_non_table_entry_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:221 |
test_mirror_pairings_entry_missing_keys_raises |
software | healthy | tests/livespec_dev_tooling/test_config.py:231 |
test_iter_py_files_skips_vendor_and_pycache |
software | healthy | tests/livespec_dev_tooling/test_config.py:241 |
test_iter_py_files_missing_root_yields_nothing |
software | healthy | tests/livespec_dev_tooling/test_config.py:253 |
test_bare_config_is_flat_baseline |
software | healthy | tests/livespec_dev_tooling/test_config.py:258 |
test_scenario_tiers_none_when_no_pyproject |
software | healthy | tests/livespec_dev_tooling/test_config.py:266 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
.mutmut-baseline.json |
software | healthy | .mutmut-baseline.json |
release-please-config.json |
software | healthy | release-please-config.json |
README.md |
software | healthy | README.md |
lefthook.yml |
software | healthy | lefthook.yml |
pyproject.toml |
software | healthy | pyproject.toml |
.release-please-manifest.json |
software | healthy | .release-please-manifest.json |
AGENTS.md |
software | healthy | AGENTS.md |
CHANGELOG.md |
software | healthy | CHANGELOG.md |
.mise.toml |
software | healthy | .mise.toml |
livespec-commit-refuse-hook.sh |
software | healthy | dev-tooling/livespec-commit-refuse-hook.sh |
CLAUDE.md |
software | healthy | dev-tooling/CLAUDE.md |
Dockerfile |
software | healthy | docker/fabro-sandbox/Dockerfile |
README.md |
software | healthy | archive/README.md |
heading-coverage.json |
software | healthy | tests/heading-coverage.json |
CLAUDE.md |
software | healthy | tests/CLAUDE.md |
test_no_network_io.py |
software | healthy | tests/consumer/test_no_network_io.py |
test_semver_and_bump_shape.py |
software | healthy | tests/consumer/test_semver_and_bump_shape.py |
test_package_consumption.py |
software | healthy | tests/consumer/test_package_consumption.py |
CLAUDE.md |
software | healthy | tests/consumer/CLAUDE.md |
test_reusable_check_matrix.py |
software | healthy | tests/consumer/test_reusable_check_matrix.py |
test_self_application_regression.py |
software | healthy | tests/consumer/test_self_application_regression.py |
test_canonical_checks.py |
software | healthy | tests/livespec_dev_tooling/test_canonical_checks.py |
CLAUDE.md |
software | healthy | tests/livespec_dev_tooling/CLAUDE.md |
test_config.py |
software | healthy | tests/livespec_dev_tooling/test_config.py |
test_parallel_check_dispatcher.py |
software | healthy | tests/livespec_dev_tooling/test_parallel_check_dispatcher.py |
test_red_leg_scope.py |
software | healthy | tests/livespec_dev_tooling/test_red_leg_scope.py |
test_green_token.py |
software | healthy | tests/livespec_dev_tooling/test_green_token.py |
test_fabro_image_pin_lockstep.py |
software | healthy | tests/livespec_dev_tooling/test_fabro_image_pin_lockstep.py |
test_tdd_commit.py |
software | healthy | tests/livespec_dev_tooling/test_tdd_commit.py |
test_rows_files.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_rows_files.py |
CLAUDE.md |
software | healthy | tests/livespec_dev_tooling/fleet/CLAUDE.md |
test_context.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_context.py |
test_wire_fleet_member.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_wire_fleet_member.py |
test_reconcile.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_reconcile.py |
test__init__.py |
software | healthy | tests/livespec_dev_tooling/fleet/test__init__.py |
test_contract.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_contract.py |
test_rows_github.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_rows_github.py |
test_fleet_conformance.py |
software | healthy | tests/livespec_dev_tooling/fleet/test_fleet_conformance.py |
CLAUDE.md |
software | healthy | tests/livespec_dev_tooling/testing/CLAUDE.md |
test_cli_e2e.py |
software | healthy | tests/livespec_dev_tooling/testing/test_cli_e2e.py |
plugin.json |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
prompt.md |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
SKILL.md |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
test__init__.py |
software | healthy | tests/livespec_dev_tooling/workflow_checks/test__init__.py |
test_no_stale_revise_branches.py |
software | healthy | tests/livespec_dev_tooling/workflow_checks/test_no_stale_re… |
test_bump_pin_rewrite_composite_action.py |
software | healthy | tests/livespec_dev_tooling/cross_repo/test_bump_pin_rewrite… |
CLAUDE.md |
software | healthy | tests/livespec_dev_tooling/cross_repo/CLAUDE.md |
test_pin_autodiscovery.py |
software | healthy | tests/livespec_dev_tooling/cross_repo/test_pin_autodiscover… |
test_main_guard.py |
software | healthy | tests/livespec_dev_tooling/checks/test_main_guard.py |
test_assert_never_exhaustiveness.py |
software | healthy | tests/livespec_dev_tooling/checks/test_assert_never_exhaust… |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
_FakeCliRunner |
software | healthy | tests/livespec_dev_tooling/testing/test_cli_e2e.py:80 |
_CheckRun |
software | healthy | tests/livespec_dev_tooling/checks/test_main_guard.py:62 |
_CheckRun |
software | healthy | tests/livespec_dev_tooling/checks/test_no_inheritance.py:56 |
_CheckRun |
software | healthy | tests/livespec_dev_tooling/checks/test_global_writes.py:57 |
_CheckRun |
software | healthy | tests/livespec_dev_tooling/checks/test_no_lloc_soft_warning… |
_CheckRun |
software | healthy | tests/livespec_dev_tooling/checks/test_no_todo_registry.py:… |
_CheckRun |
software | healthy | tests/livespec_dev_tooling/checks/test_file_lloc.py:49 |
TargetResult |
software | healthy | livespec_dev_tooling/parallel_check_dispatcher.py:126 |
ConfigParseError |
software | healthy | livespec_dev_tooling/config.py:68 |
MirrorPairing |
software | healthy | livespec_dev_tooling/config.py:78 |
Config |
software | healthy | livespec_dev_tooling/config.py:86 |
RowFn |
software | healthy | livespec_dev_tooling/fleet/contract.py:74 |
ObligationRow |
software | healthy | livespec_dev_tooling/fleet/contract.py:81 |
Manifest |
software | healthy | livespec_dev_tooling/fleet/contract.py:188 |
GhResult |
software | healthy | livespec_dev_tooling/fleet/_context.py:39 |
GhRunner |
software | healthy | livespec_dev_tooling/fleet/_context.py:47 |
FleetMember |
software | healthy | livespec_dev_tooling/fleet/_context.py:54 |
RowPass |
software | healthy | livespec_dev_tooling/fleet/_context.py:62 |
RowFinding |
software | healthy | livespec_dev_tooling/fleet/_context.py:69 |
RowSkip |
software | healthy | livespec_dev_tooling/fleet/_context.py:77 |
TreeState |
software | healthy | livespec_dev_tooling/fleet/_context.py:87 |
FleetContext |
software | healthy | livespec_dev_tooling/fleet/_context.py:170 |
Frame |
software | healthy | livespec_dev_tooling/_vendor/structlog/tracebacks.py:57 |
SyntaxError_ |
software | healthy | livespec_dev_tooling/_vendor/structlog/tracebacks.py:69 |
Stack |
software | healthy | livespec_dev_tooling/_vendor/structlog/tracebacks.py:82 |
Trace |
software | healthy | livespec_dev_tooling/_vendor/structlog/tracebacks.py:104 |
ExceptionDictTransformer |
software | healthy | livespec_dev_tooling/_vendor/structlog/tracebacks.py:366 |
BoundLoggerBase |
software | healthy | livespec_dev_tooling/_vendor/structlog/_base.py:27 |
_FixedFindCallerLogger |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:117 |
BoundLogger |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:147 |
AsyncBoundLogger |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:525 |
LoggerFactory |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:683 |
PositionalArgumentsFormatter |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:731 |
ExtraAdder |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:849 |
ProcessorFormatter |
software | healthy | livespec_dev_tooling/_vendor/structlog/stdlib.py:974 |
LogCapture |
software | healthy | livespec_dev_tooling/_vendor/structlog/testing.py:36 |
ReturnLogger |
software | healthy | livespec_dev_tooling/_vendor/structlog/testing.py:102 |
ReturnLoggerFactory |
software | healthy | livespec_dev_tooling/_vendor/structlog/testing.py:130 |
CapturedCall |
software | healthy | livespec_dev_tooling/_vendor/structlog/testing.py:148 |
CapturingLogger |
software | healthy | livespec_dev_tooling/_vendor/structlog/testing.py:169 |
CapturingLoggerFactory |
software | healthy | livespec_dev_tooling/_vendor/structlog/testing.py:200 |
BoundLogger |
software | healthy | livespec_dev_tooling/_vendor/structlog/_generic.py:18 |
ColumnStyles |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:153 |
ColumnFormatter |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:219 |
Column |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:241 |
KeyValueColumnFormatter |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:262 |
LogLevelColumnFormatter |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:321 |
RichTracebackFormatter |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:394 |
ConsoleRenderer |
software | healthy | livespec_dev_tooling/_vendor/structlog/dev.py:510 |
DropEvent |
software | healthy | livespec_dev_tooling/_vendor/structlog/exceptions.py:13 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
dev-tooling |
software | healthy | dev-tooling |
docker |
software | healthy | docker |
fabro-sandbox |
software | healthy | docker/fabro-sandbox |
archive |
software | healthy | archive |
tests |
software | healthy | tests |
consumer |
software | healthy | tests/consumer |
livespec_dev_tooling |
software | healthy | tests/livespec_dev_tooling |
fleet |
software | healthy | tests/livespec_dev_tooling/fleet |
testing |
software | healthy | tests/livespec_dev_tooling/testing |
fixtures |
software | healthy | tests/livespec_dev_tooling/testing/fixtures |
single_skill_plugin |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
e2e-cli-fixtures |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
hello |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
skills |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
hello |
software | healthy | tests/livespec_dev_tooling/testing/fixtures/single_skill_pl… |
workflow_checks |
software | healthy | tests/livespec_dev_tooling/workflow_checks |
cross_repo |
software | healthy | tests/livespec_dev_tooling/cross_repo |
checks |
software | healthy | tests/livespec_dev_tooling/checks |
agent_hooks |
software | healthy | tests/livespec_dev_tooling/agent_hooks |
research |
software | healthy | research |
justcheck-performance |
software | healthy | research/justcheck-performance |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
actions |
software | healthy | .github/actions |
run-check |
software | healthy | .github/actions/run-check |
bump-pin-rewrite |
software | healthy | .github/actions/bump-pin-rewrite |
setup |
software | healthy | .github/actions/setup |
SPECIFICATION |
software | healthy | SPECIFICATION |
history |
software | healthy | SPECIFICATION/history |
v011 |
software | healthy | SPECIFICATION/history/v011 |
proposed_changes |
software | healthy | SPECIFICATION/history/v011/proposed_changes |
v007 |
software | healthy | SPECIFICATION/history/v007 |
proposed_changes |
software | healthy | SPECIFICATION/history/v007/proposed_changes |
v001 |
software | healthy | SPECIFICATION/history/v001 |
proposed_changes |
software | healthy | SPECIFICATION/history/v001/proposed_changes |
v005 |
software | healthy | SPECIFICATION/history/v005 |
proposed_changes |
software | healthy | SPECIFICATION/history/v005/proposed_changes |
v004 |
software | healthy | SPECIFICATION/history/v004 |
proposed_changes |
software | healthy | SPECIFICATION/history/v004/proposed_changes |
v012 |
software | healthy | SPECIFICATION/history/v012 |
proposed_changes |
software | healthy | SPECIFICATION/history/v012/proposed_changes |
v013 |
software | healthy | SPECIFICATION/history/v013 |
proposed_changes |
software | healthy | SPECIFICATION/history/v013/proposed_changes |
v006 |
software | healthy | SPECIFICATION/history/v006 |
proposed_changes |
software | healthy | SPECIFICATION/history/v006/proposed_changes |
v003 |
software | healthy | SPECIFICATION/history/v003 |
proposed_changes |
software | healthy | SPECIFICATION/history/v003/proposed_changes |
v009 |
software | healthy | SPECIFICATION/history/v009 |
proposed_changes |
software | healthy | SPECIFICATION/history/v009/proposed_changes |
v010 |
software | healthy | SPECIFICATION/history/v010 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
dispatch |
cicd | healthy | .github/workflows/release-dispatch.yml |
release-please |
cicd | healthy | .github/workflows/release-please.yml |
build |
cicd | healthy | .github/workflows/fabro-sandbox-image.yml |
update-branches |
cicd | healthy | .github/workflows/auto-update-branches.yml |
bump |
cicd | healthy | .github/workflows/bump-pin-from-dispatch.yml |
bump-pin |
cicd | healthy | .github/workflows/reusable-bump-pin-from-dispatch.yml |
scan |
cicd | healthy | .github/workflows/reusable-pin-freshness.yml |
open-bump-pr |
cicd | healthy | .github/workflows/reusable-pin-freshness.yml |
setup |
cicd | healthy | .github/workflows/ci.yml |
check-python |
cicd | healthy | .github/workflows/ci.yml |
check-fleet-conformance |
cicd | healthy | .github/workflows/ci.yml |
check-metadata |
cicd | healthy | .github/workflows/ci.yml |
discover-siblings |
cicd | healthy | .github/workflows/reusable-release-dispatch.yml |
fleet-preflight |
cicd | healthy | .github/workflows/reusable-release-dispatch.yml |
dispatch |
cicd | healthy | .github/workflows/reusable-release-dispatch.yml |
fleet-conformance |
cicd | healthy | .github/workflows/fleet-conformance.yml |
enable-auto-merge |
cicd | healthy | .github/workflows/auto-enable-merge.yml |
freshness |
cicd | healthy | .github/workflows/pin-freshness.yml |
check |
cicd | healthy | .github/workflows/reusable-check-matrix.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::release-dispatch |
cicd | healthy | .github/workflows/release-dispatch.yml |
gha::release-please |
cicd | healthy | .github/workflows/release-please.yml |
gha::fabro-sandbox-image |
cicd | healthy | .github/workflows/fabro-sandbox-image.yml |
gha::auto-update-branches |
cicd | healthy | .github/workflows/auto-update-branches.yml |
gha::bump-pin-from-dispatch |
cicd | healthy | .github/workflows/bump-pin-from-dispatch.yml |
gha::reusable-bump-pin-from-dispatch |
cicd | healthy | .github/workflows/reusable-bump-pin-from-dispatch.yml |
gha::reusable-pin-freshness |
cicd | healthy | .github/workflows/reusable-pin-freshness.yml |
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::reusable-release-dispatch |
cicd | healthy | .github/workflows/reusable-release-dispatch.yml |
gha::fleet-conformance |
cicd | healthy | .github/workflows/fleet-conformance.yml |
gha::auto-enable-merge |
cicd | healthy | .github/workflows/auto-enable-merge.yml |
gha::pin-freshness |
cicd | healthy | .github/workflows/pin-freshness.yml |
gha::reusable-check-matrix |
cicd | healthy | .github/workflows/reusable-check-matrix.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
GITHUB_TOKEN |
cicd | healthy | — |
APP_PRIVATE_KEY |
cicd | healthy | — |
APP_ID |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-9gf5oe_f |
software | healthy | /tmp/repobility-clone-9gf5oe_f |
| Label | Layer | Status | Path |
|---|---|---|---|
port:13 |
network | healthy | .github/workflows/reusable-pin-freshness.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
image::docker/fabro-sandbox/Dockerfile |
hardware | healthy | docker/fabro-sandbox/Dockerfile |
This page is publicly accessible at:
https://repobility.com/scan/67bfc7b7-b1c9-4344-97ef-5420d01dd278/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/67bfc7b7-b1c9-4344-97ef-5420d01dd278/
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.