Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.
51 of your 95 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 25.63s · analysis 7.93s · 32.6 MB · GitHub API rate-limit (preflight)

meilisearch/meilisearch

https://github.com/meilisearch/meilisearch · scanned 2026-06-05 09:55 UTC (5 days, 14 hours ago) · 10 languages

281 raw signals (89 security + 192 graph) 11/13 scanners ran 84th percentile · Rust · large (100-500K LoC) System graph score 66 (higher by 14)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 5 days, 14 hours ago · v2 · 64 actionable findings from 2 signal sources. 120 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 60.0 0.15 9.00
security_score 100.0 0.25 25.00
testing_score 71.0 0.20 14.20
documentation_score 80.0 0.15 12.00
practices_score 87.0 0.15 13.05
code_quality 70.0 0.10 7.00
Overall 1.00 80.2
security_score may be inflated — optional security scanners were skipped on this fast scan
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Quality grade A- (80/100). Dimensions: security 100, maintainability 60. 89 findings (31 security). 246,734 lines analyzed.

Showing 48 of 64 actionable findings. 184 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

critical Security checks security secrets conf 1.00 [SEC019] Raw Authorization Token in Example: A real-looking API token appears in an Authorization-style header or service-key example. Use placeholders in docs and CI snippets; never paste live tokens into source, comments, or README files.
Replace the value with a placeholder, revoke or rotate the exposed token, and store live values only in a masked secret store.
crates/meilisearch/src/routes/open_api_utils.rs:17
critical System graph security Secrets conf 1.00 Possible secret in crates/meilisearch/src/routes/open_api_utils.rs
Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager.
crates/meilisearch/src/routes/open_api_utils.rs:17
high Security checks software dependencies conf 0.90 ✓ Repobility 2 occurrences [MINED118] Dockerfile FROM `rust:1.89-alpine3.22` not pinned by digest: `FROM rust:1.89-alpine3.22` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM rust:1.89-alpine3.22@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
lines 2, 21
Dockerfile:2, 21 (2 hits)
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED126] Workflow container/services image `ubuntu:22.04` unpinned: `container/services image: ubuntu:22.04` without `@sha256:...` pulls a mutable tag at workflow-run time. Treat workflow container references with the same supply-chain discipline as Dockerfile FROM lines.
Replace with `ubuntu:22.04@sha256:<digest>`. Re-pin via Dependabot Docker scope.
.github/workflows/publish-apt-brew-pkg.yml:22
medium Security checks cicd CI/CD security conf 0.90 ✓ Repobility 61 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `dtolnay/rust-toolchain` pinned to mutable ref `@1.91.1`: `uses: dtolnay/[email protected]` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-…
9 files, 61 locations
.github/workflows/test-suite.yml:37, 39, 43, 48, 65, 66, 68, 73, +13 more (30 hits)
.github/workflows/publish-docker-images.yml:46, 51, 58, 72, 166, 172, 176, 214, +1 more (9 hits)
.github/workflows/sdks-tests.yml:171, 201, 233, 257, 329, 367, 372, 396 (8 hits)
.github/workflows/check-openapi-file.yml:26, 29 (4 hits)
.github/workflows/publish-release-assets.yml:100, 115, 126 (3 hits)
.github/workflows/update-cargo-toml-version.yml:27, 38 (3 hits)
.github/workflows/publish-apt-brew-pkg.yml:41, 56 (2 hits)
.github/workflows/bench-manual.yml:21
CI/CD securitySupply chainGitHub Actions
low Security checks cicd CI/CD security conf 0.90 ✓ Repobility 21 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lo…
9 files, 21 locations
.github/workflows/sdks-tests.yml:57, 109, 143, 173, 231, 331 (6 hits)
.github/workflows/check-openapi-file.yml:23, 32 (3 hits)
.github/workflows/test-suite.yml:25, 63, 88 (3 hits)
.github/workflows/db-change-comments.yml:47 (2 hits)
.github/workflows/db-change-missing.yml:12 (2 hits)
.github/workflows/publish-docker-images.yml:92, 159 (2 hits)
.github/workflows/bench-manual.yml:20
.github/workflows/publish-release-assets.yml:113
CI/CD securitySupply chainGitHub Actions
high System graph security security conf 1.00 Insecure pattern 'eval_used' in crates/filter-parser/src/error.rs:170
Found a known-risky pattern (eval_used). Review and replace if possible.
crates/filter-parser/src/error.rs:170 Eval used
high System graph security security conf 1.00 Insecure pattern 'eval_used' in crates/milli/src/error.rs:734
Found a known-risky pattern (eval_used). Review and replace if possible.
crates/milli/src/error.rs:734 Eval used
high System graph security security conf 1.00 Insecure pattern 'eval_used' in crates/milli/src/vector/error.rs:634
Found a known-risky pattern (eval_used). Review and replace if possible.
crates/milli/src/vector/error.rs:634 Eval used
medium Security checks cicd CI/CD security conf 0.86 Database dump or local database file is included in Docker build context
Move database dumps outside the Docker build context or exclude them with .dockerignore. Keep backup and restore artifacts in private object storage or a dedicated backup workflow.
.dockerignore CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.82 Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
Dockerfile:21 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.76 Dockerfile copies broad context with incomplete .dockerignore
Tighten .dockerignore or replace COPY . with explicit COPY statements.
Dockerfile:15 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.90 Dockerfile installs dependencies after copying the full source tree
Copy dependency manifests first, install dependencies in a cached layer, then copy the rest of the source tree.
Dockerfile:16 CI/CD securitycontainers
medium System graph hardware Security conf 1.00 Dockerfile runs as root: Dockerfile
No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image.
Container
medium System graph cicd CI/CD security conf 1.00 GitHub Actions workflow grants broad write permissions
CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions.
.github/workflows/publish-docker-images.yml CI/CD securitySupply chainGithub actions
medium System graph network Security conf 1.00 Privileged port 11 in use
Port 11 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
.github/workflows/publish-docker-images.yml Ports
low Security checks cicd CI/CD security conf 0.72 .dockerignore misses sensitive defaults
Add missing patterns such as .env, .git, private keys, certificates, dependency folders, and local databases.
.dockerignore CI/CD securitycontainers
low Security checks quality Quality conf 0.60 30 occurrences Duplicated implementation block across source files
Duplicate implementation blocks are maintenance debt. Keep them visible, but they are not a high-severity defect unless the duplicated logic is security-sensitive or drifting.
12 files, 26 locations
crates/dump/src/reader/mod.rs:224, 424, 550, 749 (4 hits)
crates/dump/src/reader/v5/mod.rs:82, 85, 160, 230 (4 hits)
crates/dump/src/reader/v3/mod.rs:121, 230, 237 (3 hits)
crates/dump/src/reader/v4/mod.rs:81, 156, 225 (3 hits)
crates/dump/src/reader/compat/v5_to_v6.rs:465, 468 (2 hits)
crates/dump/src/reader/v2/mod.rs:191, 196 (2 hits)
crates/dump/src/reader/v4/settings.rs:1, 4 (2 hits)
crates/dump/src/reader/v5/errors.rs:6, 28 (2 hits)
duplicationquality
low System graph quality Maintenance conf 1.00 128 TODO/FIXME markers
High count of TODO/FIXME/HACK markers — track them as issues so they're not forgotten.
low System graph hardware Coverage conf 1.00 Containers defined but no K8s/orchestration manifest found
Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo.
Deployment
low System graph hardware Supply chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: alpine:3.22
Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter.
Dockerfile:21 containersPinned dependencies
low System graph hardware Supply chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: rust:1.89-alpine3.22
Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter.
Dockerfile:2 containersPinned dependencies
low System graph quality Tests conf 1.00 Low test-to-source ratio
135 tests / 552 src (ratio 0.24).
low System graph quality Complexity conf 1.00 Very large file: crates/filter-parser/src/lib.rs (1669 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/index-scheduler/src/lib.rs (1412 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/index-scheduler/src/scheduler/process_batch.rs (1188 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch-types/src/settings.rs (1344 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/src/option.rs (1449 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/src/routes/indexes/documents.rs (1946 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/src/search/federated/perform.rs (1865 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/src/search/mod.rs (3069 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/auth/api_keys.rs (1813 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/documents/add_documents.rs (3004 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/dumps/mod.rs (2564 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/search/errors.rs (1421 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/search/mod.rs (2362 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/search/multi/mod.rs (6181 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/search/multi/proxy.rs (6736 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/vector/fragments.rs (2125 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/vector/openai.rs (1979 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/meilisearch/tests/vector/rest.rs (2234 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/milli/src/index.rs (2186 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/milli/src/update/index_documents/extract/extract_vector_points.rs (1312 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/milli/src/update/index_documents/mod.rs (3695 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/milli/src/update/settings.rs (2803 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/milli/src/vector/settings.rs (2231 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: crates/milli/src/vector/store.rs (1447 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: external-crates/async-openai/src/types/chat.rs (1176 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/41836e51-854e-4c25-b159-006a07dffed0/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/41836e51-854e-4c25-b159-006a07dffed0/

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.