https://github.com/hi-godot/godot-ai
· scanned 2026-05-16 13:30 UTC (1 day, 6 hours ago)
· 10 languages
48 findings (1 legacy + 47 scanner) 99th percentile · Python · medium (20-100K LoC) Scanner says 91 (lower by 4)
Last scanned 2 days, 5 hours ago · v1 · 48 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
100.0 | 0.15 | 15.00 |
security_score |
99.0 | 0.25 | 24.75 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
73.0 | 0.15 | 10.95 |
practices_score |
65.0 | 0.15 | 9.75 |
code_quality |
69.0 | 0.10 | 6.90 |
| Overall | 1.00 | 87.3 |
agent: 1.1
All 1910 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 |
|---|---|---|---|
recv_command |
software | healthy | tests/conftest.py:41 |
send_response |
software | healthy | tests/conftest.py:45 |
send_error |
software | healthy | tests/conftest.py:60 |
send_event |
software | healthy | tests/conftest.py:78 |
close |
software | healthy | tests/conftest.py:82 |
connect_plugin |
software | healthy | tests/conftest.py:95 |
mcp_stack |
software | healthy | tests/conftest.py:136 |
harness |
software | healthy | tests/conftest.py:169 |
test_handshake_registers_session |
software | healthy | tests/integration/test_websocket.py:23 |
test_handshake_populates_session_fields |
software | healthy | tests/integration/test_websocket.py:29 |
test_handshake_sets_readiness_from_plugin |
software | healthy | tests/integration/test_websocket.py:40 |
test_disconnect_unregisters_session |
software | healthy | tests/integration/test_websocket.py:49 |
test_handshake_captures_editor_pid |
software | healthy | tests/integration/test_websocket.py:55 |
test_handshake_missing_editor_pid_defaults_to_zero |
software | healthy | tests/integration/test_websocket.py:61 |
test_server_sends_handshake_ack_with_version |
software | healthy | tests/integration/test_websocket.py:68 |
test_inbound_message_updates_last_seen |
software | healthy | tests/integration/test_websocket.py:98 |
test_send_command_and_receive_response |
software | healthy | tests/integration/test_websocket.py:117 |
mock_handler |
software | healthy | tests/integration/test_websocket.py:726 |
test_command_with_params |
software | healthy | tests/integration/test_websocket.py:133 |
test_request_id_correlation |
software | healthy | tests/integration/test_websocket.py:150 |
test_concurrent_commands_route_to_explicit_sessions |
software | healthy | tests/integration/test_websocket.py:173 |
respond_a |
software | healthy | tests/integration/test_websocket.py:179 |
respond_b |
software | healthy | tests/integration/test_websocket.py:187 |
test_plugin_error_raises_godot_command_error |
software | healthy | tests/integration/test_websocket.py:219 |
test_plugin_error_preserves_structured_data |
software | healthy | tests/integration/test_websocket.py:236 |
test_send_to_no_active_session_raises |
software | healthy | tests/integration/test_websocket.py:259 |
test_send_to_unknown_session_raises |
software | healthy | tests/integration/test_websocket.py:264 |
test_timeout_raises |
software | healthy | tests/integration/test_websocket.py:269 |
test_deferred_timeout_error_reaches_client |
software | healthy | tests/integration/test_websocket.py:279 |
test_timeout_removes_pending_request_and_ignores_late_reply |
software | healthy | tests/integration/test_websocket.py:306 |
test_scene_changed_event |
software | healthy | tests/integration/test_websocket.py:329 |
test_play_state_changed_event |
software | healthy | tests/integration/test_websocket.py:338 |
test_readiness_changed_event |
software | healthy | tests/integration/test_websocket.py:347 |
test_scene_changed_with_non_string_payload_is_dropped |
software | healthy | tests/integration/test_websocket.py:373 |
test_play_state_changed_with_non_string_payload_is_dropped |
software | healthy | tests/integration/test_websocket.py:390 |
test_readiness_changed_with_non_string_payload_is_dropped |
software | healthy | tests/integration/test_websocket.py:403 |
test_unknown_event_type_is_silently_ignored |
software | healthy | tests/integration/test_websocket.py:416 |
test_valid_event_after_malformed_one_still_applies |
software | healthy | tests/integration/test_websocket.py:430 |
test_two_sessions_independent |
software | healthy | tests/integration/test_websocket.py:453 |
mock_b |
software | healthy | tests/integration/test_websocket.py:461 |
test_disconnect_one_keeps_other |
software | healthy | tests/integration/test_websocket.py:473 |
test_active_disconnect_with_one_survivor_auto_promotes |
software | healthy | tests/integration/test_websocket.py:484 |
test_disconnect_reconnect_handshake_then_first_command |
software | healthy | tests/integration/test_websocket.py:510 |
respond_new |
software | healthy | tests/integration/test_websocket.py:526 |
test_loopback_host_no_origin_succeeds |
software | healthy | tests/integration/test_websocket.py:556 |
test_non_loopback_host_rejected_at_upgrade |
software | healthy | tests/integration/test_websocket.py:563 |
test_browser_origin_rejected_at_upgrade |
software | healthy | tests/integration/test_websocket.py:574 |
test_loopback_origin_accepted |
software | healthy | tests/integration/test_websocket.py:584 |
test_origin_null_rejected_at_upgrade |
software | healthy | tests/integration/test_websocket.py:612 |
test_browser_cross_origin_subresource_rejected |
software | healthy | tests/integration/test_websocket.py:622 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
MockGodotPlugin |
software | healthy | tests/conftest.py:35 |
ServerHarness |
software | healthy | tests/conftest.py:87 |
TestHandshake |
software | healthy | tests/integration/test_websocket.py:22 |
TestCommandRoundTrip |
software | healthy | tests/integration/test_websocket.py:116 |
TestErrors |
software | healthy | tests/integration/test_websocket.py:218 |
TestEvents |
software | healthy | tests/integration/test_websocket.py:328 |
TestEventValidation |
software | healthy | tests/integration/test_websocket.py:367 |
TestMultipleSessions |
software | healthy | tests/integration/test_websocket.py:452 |
TestDnsRebindingGuard |
software | healthy | tests/integration/test_websocket.py:547 |
TestDuplicateHandshake |
software | healthy | tests/integration/test_websocket.py:680 |
TestPendingFutureCleanup |
software | healthy | tests/integration/test_websocket.py:757 |
TestEditorStateSelfHeal |
software | healthy | tests/integration/test_websocket.py:799 |
TestResponseEnvelopeReadinessSelfHeal |
software | healthy | tests/integration/test_websocket.py:881 |
TestProjectSettingsGet |
software | healthy | tests/integration/test_project_tools.py:12 |
TestProjectSettingsSet |
software | healthy | tests/integration/test_project_tools.py:54 |
TestFilesystemSearch |
software | healthy | tests/integration/test_project_tools.py:90 |
TestSessionsResource |
software | healthy | tests/integration/test_mcp_resources.py:19 |
TestSceneCurrentResource |
software | healthy | tests/integration/test_mcp_resources.py:36 |
TestSceneHierarchyResource |
software | healthy | tests/integration/test_mcp_resources.py:67 |
TestSelectionCurrentResource |
software | healthy | tests/integration/test_mcp_resources.py:95 |
TestProjectInfoResource |
software | healthy | tests/integration/test_mcp_resources.py:121 |
TestProjectSettingsResource |
software | healthy | tests/integration/test_mcp_resources.py:138 |
TestLogsRecentResource |
software | healthy | tests/integration/test_mcp_resources.py:164 |
TestNodeResourceTemplates |
software | healthy | tests/integration/test_mcp_resources.py:188 |
TestScriptResourceTemplate |
software | healthy | tests/integration/test_mcp_resources.py:253 |
TestLibraryResources |
software | healthy | tests/integration/test_mcp_resources.py:282 |
TestResourceErrorPath |
software | healthy | tests/integration/test_mcp_resources.py:394 |
TestSceneHierarchyPagination |
software | healthy | tests/integration/test_pagination.py:18 |
TestNodeFindPagination |
software | healthy | tests/integration/test_pagination.py:40 |
TestFilesystemSearchPagination |
software | healthy | tests/integration/test_pagination.py:59 |
TestLogsPagination |
software | healthy | tests/integration/test_pagination.py:81 |
TestSceneGetHierarchyTool |
software | healthy | tests/integration/test_mcp_tools.py:16 |
TestSceneGetRootsTool |
software | healthy | tests/integration/test_mcp_tools.py:63 |
TestSceneCreateTool |
software | healthy | tests/integration/test_mcp_tools.py:87 |
TestSceneOpenTool |
software | healthy | tests/integration/test_mcp_tools.py:173 |
TestSceneSaveTool |
software | healthy | tests/integration/test_mcp_tools.py:199 |
TestSceneSaveAsTool |
software | healthy | tests/integration/test_mcp_tools.py:223 |
TestEditorStateTool |
software | healthy | tests/integration/test_mcp_tools.py:251 |
TestEditorSelectionGetTool |
software | healthy | tests/integration/test_mcp_tools.py:281 |
TestLogsReadTool |
software | healthy | tests/integration/test_mcp_tools.py:302 |
TestNodeFindTool |
software | healthy | tests/integration/test_mcp_tools.py:451 |
TestNodeReadTools |
software | healthy | tests/integration/test_mcp_tools.py:482 |
TestNodeCreateTool |
software | healthy | tests/integration/test_mcp_tools.py:542 |
TestNodeDeleteTool |
software | healthy | tests/integration/test_mcp_tools.py:570 |
TestNodeReparentTool |
software | healthy | tests/integration/test_mcp_tools.py:598 |
TestNodeSetPropertyTool |
software | healthy | tests/integration/test_mcp_tools.py:633 |
TestNodeRenameTool |
software | healthy | tests/integration/test_mcp_tools.py:671 |
TestNodeDuplicateTool |
software | healthy | tests/integration/test_mcp_tools.py:707 |
TestNodeMoveTool |
software | healthy | tests/integration/test_mcp_tools.py:742 |
TestNodeGroupTools |
software | healthy | tests/integration/test_mcp_tools.py:776 |
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 |
pyproject.toml |
software | healthy | pyproject.toml |
__init__.py |
software | healthy | tests/__init__.py |
conftest.py |
software | healthy | tests/conftest.py |
test_websocket.py |
software | healthy | tests/integration/test_websocket.py |
__init__.py |
software | healthy | tests/integration/__init__.py |
test_project_tools.py |
software | healthy | tests/integration/test_project_tools.py |
test_mcp_resources.py |
software | healthy | tests/integration/test_mcp_resources.py |
test_self_update_historical_constraint.py |
software | healthy | tests/integration/test_self_update_historical_constraint.py |
test_self_update_upgrade_paths.py |
software | healthy | tests/integration/test_self_update_upgrade_paths.py |
test_pagination.py |
software | healthy | tests/integration/test_pagination.py |
test_mcp_tools.py |
software | healthy | tests/integration/test_mcp_tools.py |
_self_update_fixture.py |
software | healthy | tests/integration/_self_update_fixture.py |
test_gdscript_text_helper.py |
software | healthy | tests/unit/test_gdscript_text_helper.py |
test_script_create_import_settle.py |
software | healthy | tests/unit/test_script_create_import_settle.py |
test_read_text_encoding.py |
software | healthy | tests/unit/test_read_text_encoding.py |
test_websocket_port_in_use.py |
software | healthy | tests/unit/test_websocket_port_in_use.py |
test_resource_form_lint.py |
software | healthy | tests/unit/test_resource_form_lint.py |
__init__.py |
software | healthy | tests/unit/__init__.py |
test_server_middleware_order.py |
software | healthy | tests/unit/test_server_middleware_order.py |
conftest.py |
software | healthy | tests/unit/conftest.py |
test_runtime_info.py |
software | healthy | tests/unit/test_runtime_info.py |
test_error_code_distribution.py |
software | healthy | tests/unit/test_error_code_distribution.py |
test_middleware_parse_stringified_params.py |
software | healthy | tests/unit/test_middleware_parse_stringified_params.py |
test_telemetry_integration.py |
software | healthy | tests/unit/test_telemetry_integration.py |
test_camera_current_contract.py |
software | healthy | tests/unit/test_camera_current_contract.py |
test_plugin_self_update_safety.py |
software | healthy | tests/unit/test_plugin_self_update_safety.py |
test_editor_focus_refocus.py |
software | healthy | tests/unit/test_editor_focus_refocus.py |
test_self_update_rescue_contract.py |
software | healthy | tests/unit/test_self_update_rescue_contract.py |
test_self_update_fixture_extract.py |
software | healthy | tests/unit/test_self_update_fixture_extract.py |
test_version.py |
software | healthy | tests/unit/test_version.py |
test_self_update_orphan_recovery.py |
software | healthy | tests/unit/test_self_update_orphan_recovery.py |
_gdscript_text.py |
software | healthy | tests/unit/_gdscript_text.py |
test_resources.py |
software | healthy | tests/unit/test_resources.py |
test_middleware_client_wrapper_kwargs.py |
software | healthy | tests/unit/test_middleware_client_wrapper_kwargs.py |
test_editor_state_mixed_state.py |
software | healthy | tests/unit/test_editor_state_mixed_state.py |
test_gdscript_no_adjacent_string_concat.py |
software | healthy | tests/unit/test_gdscript_no_adjacent_string_concat.py |
test_readiness.py |
software | healthy | tests/unit/test_readiness.py |
test_middleware_op_typo_hint.py |
software | healthy | tests/unit/test_middleware_op_typo_hint.py |
test_protocol.py |
software | healthy | tests/unit/test_protocol.py |
test_dock_cli_timeout.py |
software | healthy | tests/unit/test_dock_cli_timeout.py |
test_telemetry_decorator.py |
software | healthy | tests/unit/test_telemetry_decorator.py |
test_cli_reload.py |
software | healthy | tests/unit/test_cli_reload.py |
test_resource_save_pause_processing.py |
software | healthy | tests/unit/test_resource_save_pause_processing.py |
test_server_status.py |
software | healthy | tests/unit/test_server_status.py |
test_tool_domains.py |
software | healthy | tests/unit/test_tool_domains.py |
test_audit_data_loss_safeguards.py |
software | healthy | tests/unit/test_audit_data_loss_safeguards.py |
test_session_registry.py |
software | healthy | tests/unit/test_session_registry.py |
test_pagination.py |
software | healthy | tests/unit/test_pagination.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
integration |
software | healthy | tests/integration |
unit |
software | healthy | tests/unit |
plugin |
software | healthy | plugin |
addons |
software | healthy | plugin/addons |
godot_ai |
software | healthy | plugin/addons/godot_ai |
docs |
software | healthy | docs |
script |
software | healthy | script |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
godot_ai |
software | healthy | src/godot_ai |
middleware |
software | healthy | src/godot_ai/middleware |
resources |
software | healthy | src/godot_ai/resources |
sessions |
software | healthy | src/godot_ai/sessions |
godot_client |
software | healthy | src/godot_ai/godot_client |
transport |
software | healthy | src/godot_ai/transport |
runtime |
software | healthy | src/godot_ai/runtime |
tools |
software | healthy | src/godot_ai/tools |
protocol |
software | healthy | src/godot_ai/protocol |
handlers |
software | healthy | src/godot_ai/handlers |
| Label | Layer | Status | Path |
|---|---|---|---|
python-tests |
cicd | healthy | .github/workflows/ci.yml |
release-smoke |
cicd | healthy | .github/workflows/ci.yml |
godot-tests |
cicd | healthy | .github/workflows/ci.yml |
game-capture-smoke |
cicd | healthy | .github/workflows/ci.yml |
publish-pypi |
cicd | healthy | .github/workflows/release.yml |
build-plugin-zip |
cicd | healthy | .github/workflows/release.yml |
close-linked-issues |
cicd | healthy | .github/workflows/close-issues-on-beta-merge.yml |
bump |
cicd | healthy | .github/workflows/bump-and-release.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:19502 |
network | healthy | tests/conftest.py |
port:19500 |
network | healthy | tests/conftest.py |
port:19999 |
network | healthy | tests/unit/test_websocket_port_in_use.py |
port:8123 |
network | healthy | tests/unit/test_cli_reload.py |
port:8000 |
network | healthy | tests/unit/test_cli_reload.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::release |
cicd | healthy | .github/workflows/release.yml |
gha::close-issues-on-beta-merge |
cicd | healthy | .github/workflows/close-issues-on-beta-merge.yml |
gha::bump-and-release |
cicd | healthy | .github/workflows/bump-and-release.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | tests/conftest.py |
192.168.1.50 |
network | healthy | tests/unit/test_origin_guard.py |
10.0.0.1 |
network | healthy | tests/unit/test_origin_guard.py |
| Label | Layer | Status | Path |
|---|---|---|---|
GITHUB_TOKEN |
cicd | healthy | — |
CODECOV_TOKEN |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-x5i5sp8i |
software | healthy | /tmp/repobility-clone-x5i5sp8i |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | tests/unit/test_runtime_handlers.py |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.github/workflows/release.yml |
security | healthy | .github/workflows/release.yml |
This page is publicly accessible at:
https://repobility.com/scan/9524e016-8ff7-4315-a52d-06ff947101d1/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/9524e016-8ff7-4315-a52d-06ff947101d1/
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.