https://github.com/shihabshahrier/freelm
· scanned 2026-06-16 00:10 UTC (2 months, 2 weeks ago)
18 raw signals (0 security + 18 graph)
Last scanned 2 months, 2 weeks ago · v1 · 14 actionable findings from 1 signal source. 4 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 437 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 |
|---|---|---|---|
ok_payload |
software | healthy | tests/conftest.py:4 |
test_new_providers_construct |
software | healthy | tests/test_providers_extra.py:4 |
test_new_providers_have_discovery_enabled |
software | healthy | tests/test_providers_extra.py:13 |
test_from_env_includes_new_providers |
software | healthy | tests/test_providers_extra.py:20 |
test_stream_basic |
software | healthy | tests/test_streaming.py:20 |
test_stream_fails_over_before_first_token |
software | healthy | tests/test_streaming.py:30 |
test_astream_basic |
software | healthy | tests/test_streaming.py:38 |
run |
software | healthy | tests/test_streaming.py:40 |
test_openai_compat_shim |
software | healthy | tests/test_compat.py:13 |
test_openai_compat_accepts_sdk_ctor_kwargs |
software | healthy | tests/test_compat.py:26 |
test_openai_compat_stream_yields_chunks |
software | healthy | tests/test_compat.py:44 |
test_token_bucket_consume_and_refill |
software | healthy | tests/test_units.py:7 |
test_circuit_breaker_opens_and_half_opens |
software | healthy | tests/test_units.py:17 |
test_keystate_daily_quota_and_reset |
software | healthy | tests/test_units.py:31 |
test_keystate_cooldown_and_disable |
software | healthy | tests/test_units.py:41 |
test_registry_resolution |
software | healthy | tests/test_units.py:52 |
test_registry_passthrough_with_colon_suffix |
software | healthy | tests/test_units.py:64 |
test_modelspec_priority_orders_resolution |
software | healthy | tests/test_units.py:72 |
test_tag_aliases_route_to_tagged_models |
software | healthy | tests/test_units.py:82 |
test_provider_prefer_reorders_resolved_models |
software | healthy | tests/test_units.py:93 |
test_per_call_model_chain_resolves_in_order |
software | healthy | tests/test_units.py:112 |
test_provider_priority_breaks_ties_in_dynamic_strategies |
software | healthy | tests/test_units.py:128 |
mk |
software | healthy | tests/test_units.py:132 |
test_apply_success_zero_latency_keeps_ewma |
software | healthy | tests/test_units.py:142 |
_env |
software | healthy | tests/test_cli.py:23 |
test_version_flag |
software | healthy | tests/test_cli.py:29 |
test_no_command_prints_help |
software | healthy | tests/test_cli.py:36 |
test_no_keys_is_clean_config_error |
software | healthy | tests/test_cli.py:41 |
test_chat_prints_reply |
software | healthy | tests/test_cli.py:47 |
test_models_lists_fallback_catalog |
software | healthy | tests/test_cli.py:58 |
test_health_prints_rows |
software | healthy | tests/test_cli.py:68 |
test_success |
software | healthy | tests/test_router.py:15 |
test_rotate_key_on_429 |
software | healthy | tests/test_router.py:25 |
test_failover_across_providers |
software | healthy | tests/test_router.py:36 |
test_quota_402_disables_key_and_fails_over |
software | healthy | tests/test_router.py:46 |
test_auth_disables_key_then_exhausts |
software | healthy | tests/test_router.py:60 |
test_transient_then_recover_via_failover |
software | healthy | tests/test_router.py:70 |
test_bad_request_raises_immediately |
software | healthy | tests/test_router.py:82 |
test_model_scoped_429_tries_next_model_same_key |
software | healthy | tests/test_router.py:93 |
test_key_scoped_429_cools_the_key |
software | healthy | tests/test_router.py:113 |
test_interleave_reaches_second_provider_despite_many_models |
software | healthy | tests/test_router.py:123 |
test_wait_retries_recovered_key |
software | healthy | tests/test_router.py:139 |
test_health_report |
software | healthy | tests/test_router.py:155 |
test_free_guard_blocks_paid_passthrough |
software | healthy | tests/test_router.py:164 |
test_free_guard_opt_out_and_free_ids_pass |
software | healthy | tests/test_router.py:175 |
test_per_call_model_chain_fails_over_to_second_id |
software | healthy | tests/test_router.py:186 |
test_on_event_sees_failover_sequence_and_survives_bad_callb… |
software | healthy | tests/test_router.py:204 |
hook |
software | healthy | tests/test_router.py:210 |
test_tools_and_response_format_reach_request_body |
software | healthy | tests/test_router.py:222 |
_tmp_cache |
software | healthy | tests/test_state.py:16 |
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 |
.env.example |
software | healthy | .env.example |
pyproject.toml |
software | healthy | pyproject.toml |
LICENSE |
software | healthy | LICENSE |
AGENTS.md |
software | healthy | AGENTS.md |
CHANGELOG.md |
software | healthy | CHANGELOG.md |
conftest.py |
software | healthy | tests/conftest.py |
test_providers_extra.py |
software | healthy | tests/test_providers_extra.py |
test_streaming.py |
software | healthy | tests/test_streaming.py |
test_compat.py |
software | healthy | tests/test_compat.py |
test_units.py |
software | healthy | tests/test_units.py |
test_cli.py |
software | healthy | tests/test_cli.py |
test_router.py |
software | healthy | tests/test_router.py |
test_state.py |
software | healthy | tests/test_state.py |
test_async.py |
software | healthy | tests/test_async.py |
test_discovery.py |
software | healthy | tests/test_discovery.py |
README.md |
software | healthy | js/README.md |
package.json |
software | healthy | js/package.json |
package-lock.json |
software | healthy | js/package-lock.json |
tsup.config.ts |
software | healthy | js/tsup.config.ts |
tsconfig.json |
software | healthy | js/tsconfig.json |
LICENSE |
software | healthy | js/LICENSE |
vitest.config.ts |
software | healthy | js/vitest.config.ts |
compat.test.ts |
software | healthy | js/test/compat.test.ts |
router.test.ts |
software | healthy | js/test/router.test.ts |
streaming.test.ts |
software | healthy | js/test/streaming.test.ts |
discovery.test.ts |
software | healthy | js/test/discovery.test.ts |
units.test.ts |
software | healthy | js/test/units.test.ts |
providers.test.ts |
software | healthy | js/test/providers.test.ts |
state.test.ts |
software | healthy | js/test/state.test.ts |
cli.test.ts |
software | healthy | js/test/cli.test.ts |
e2e.mjs |
software | healthy | js/examples/e2e.mjs |
config.ts |
software | healthy | js/src/config.ts |
cache.ts |
software | healthy | js/src/cache.ts |
registry.ts |
software | healthy | js/src/registry.ts |
discovery.ts |
software | healthy | js/src/discovery.ts |
version.ts |
software | healthy | js/src/version.ts |
index.ts |
software | healthy | js/src/index.ts |
backoff.ts |
software | healthy | js/src/backoff.ts |
ratelimit.ts |
software | healthy | js/src/ratelimit.ts |
breaker.ts |
software | healthy | js/src/breaker.ts |
cli.ts |
software | healthy | js/src/cli.ts |
state.ts |
software | healthy | js/src/state.ts |
client.ts |
software | healthy | js/src/client.ts |
strategy.ts |
software | healthy | js/src/strategy.ts |
keys.ts |
software | healthy | js/src/keys.ts |
time.ts |
software | healthy | js/src/time.ts |
types.ts |
software | healthy | js/src/types.ts |
engine.ts |
software | healthy | js/src/engine.ts |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TokenBucket |
software | healthy | js/src/ratelimit.ts:TokenBucket |
CircuitBreaker |
software | healthy | js/src/breaker.ts:CircuitBreaker |
StateStore |
software | healthy | js/src/state.ts:StateStore |
FreeLLM |
software | healthy | js/src/client.ts:FreeLLM |
KeyState |
software | healthy | js/src/keys.ts:KeyState |
ChatResponse |
software | healthy | js/src/types.ts:ChatResponse |
FreeLLMError |
software | healthy | js/src/errors.ts:FreeLLMError |
ConfigError |
software | healthy | js/src/errors.ts:ConfigError |
ProviderError |
software | healthy | js/src/errors.ts:ProviderError |
AuthError |
software | healthy | js/src/errors.ts:AuthError |
RateLimited |
software | healthy | js/src/errors.ts:RateLimited |
Transient |
software | healthy | js/src/errors.ts:Transient |
ModelNotFound |
software | healthy | js/src/errors.ts:ModelNotFound |
QuotaExhausted |
software | healthy | js/src/errors.ts:QuotaExhausted |
NoProvidersAvailable |
software | healthy | js/src/errors.ts:NoProvidersAvailable |
Completions |
software | healthy | js/src/compat/openai.ts:Completions |
Chat |
software | healthy | js/src/compat/openai.ts:Chat |
OpenAI |
software | healthy | js/src/compat/openai.ts:OpenAI |
Cerebras |
software | healthy | js/src/providers/cerebras.ts:Cerebras |
Mistral |
software | healthy | js/src/providers/mistral.ts:Mistral |
Provider |
software | healthy | js/src/providers/base.ts:Provider |
OpenRouter |
software | healthy | js/src/providers/openrouter.ts:OpenRouter |
NIM |
software | healthy | js/src/providers/nim.ts:NIM |
Groq |
software | healthy | js/src/providers/groq.ts:Groq |
GoogleAIStudio |
software | healthy | js/src/providers/google.ts:GoogleAIStudio |
StateStore |
software | healthy | src/freelm/_state.py:29 |
_BaseClient |
software | healthy | src/freelm/client.py:39 |
FreeLLM |
software | healthy | src/freelm/client.py:129 |
AsyncFreeLLM |
software | healthy | src/freelm/client.py:316 |
ModelSpec |
software | healthy | src/freelm/registry.py:15 |
Candidate |
software | healthy | src/freelm/strategy.py:20 |
Message |
software | healthy | src/freelm/_types.py:9 |
Usage |
software | healthy | src/freelm/_types.py:46 |
Choice |
software | healthy | src/freelm/_types.py:62 |
ChatResponse |
software | healthy | src/freelm/_types.py:69 |
Event |
software | healthy | src/freelm/_types.py:96 |
ChatRequest |
software | healthy | src/freelm/_types.py:117 |
CompatMessage |
software | healthy | src/freelm/types_compat.py:11 |
CompatChoice |
software | healthy | src/freelm/types_compat.py:24 |
CompatUsage |
software | healthy | src/freelm/types_compat.py:34 |
CompatCompletion |
software | healthy | src/freelm/types_compat.py:48 |
CompatDelta |
software | healthy | src/freelm/types_compat.py:90 |
CompatChunkChoice |
software | healthy | src/freelm/types_compat.py:104 |
CompatChunk |
software | healthy | src/freelm/types_compat.py:114 |
CircuitBreaker |
software | healthy | src/freelm/_breaker.py:12 |
TokenBucket |
software | healthy | src/freelm/_ratelimit.py:10 |
KeyState |
software | healthy | src/freelm/_keys.py:16 |
FreeLLMError |
software | healthy | src/freelm/errors.py:7 |
ConfigError |
software | healthy | src/freelm/errors.py:11 |
ProviderError |
software | healthy | src/freelm/errors.py:15 |
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 |
js |
software | healthy | js |
test |
software | healthy | js/test |
examples |
software | healthy | js/examples |
src |
software | healthy | js/src |
compat |
software | healthy | js/src/compat |
providers |
software | healthy | js/src/providers |
examples |
software | healthy | examples |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
freelm |
software | healthy | src/freelm |
compat |
software | healthy | src/freelm/compat |
providers |
software | healthy | src/freelm/providers |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::js-ci |
cicd | healthy | .github/workflows/js-ci.yml |
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::npm-release |
cicd | healthy | .github/workflows/npm-release.yml |
gha::release |
cicd | healthy | .github/workflows/release.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
test |
cicd | healthy | .github/workflows/js-ci.yml |
test |
cicd | healthy | .github/workflows/ci.yml |
publish |
cicd | healthy | .github/workflows/npm-release.yml |
publish |
cicd | healthy | .github/workflows/release.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
PYPI_API_TOKEN |
cicd | healthy | — |
NPM_TOKEN |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-fli5rtej |
software | healthy | /tmp/repobility-clone-fli5rtej |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.github/workflows/npm-release.yml |
security | healthy | .github/workflows/npm-release.yml |
This page is publicly accessible at:
https://repobility.com/scan/a7a5a213-d3bd-44fa-ad29-c93b3e7205e5/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/a7a5a213-d3bd-44fa-ad29-c93b3e7205e5/
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.