m5/org/openalice-ner

openalice-ner

Zero-shot **Named Entity Recognition** as a small HTTP service — pass any entity labels at request time, get back spans + scores. Powered by [gline-rs](https://crates.io/crates/gline-rs) (the Rust port of [GLiNER](https://github.com/urchade/GLiNER)) running multilingual ONNX models.

Features
4
Status
·unknown
Last activity
1mo ago
Branch
mvp

Architecture rating

D1mo ago
consistencyB-

Strong substrate adoption — manifest present+valid (100/100), 4 @feature annotations, AGENTS.md + README, drift 90, zero circular deps and zero dead imports; only blemish is one god module and 3 format issues.

docsB-

Valid manifest (100/100) with clear summary, descriptive README excerpt, AGENTS.md, and 4 @feature annotations; held back by 12 missing docstrings and a declared-but-unused PORT env var (drift).

reliabilityD

Clean Rust code (avg complexity 5, max 14, no cycles, 0 bare excepts) and a GET /health endpoint, but no evidence of SIGTERM graceful shutdown, request timeouts, retries, or idempotency on the ONNX inference path — graded conservatively as unverified.

securityD

Internal-only inference service (consumed by ml-gateway) with a small attack surface — no DB/shell/URL-fetch so injection/SSRF risk is low, but signals show NO authn/authz, rate-limit, or security headers on POST /v1/ner; graded conservatively as unproven.

data layerD

Stateless by design — manifest_owns_tables=[] and runtime_deps_count=0, so no schema/migrations/RLS/FK/GDPR surface exists; appropriate for an ONNX inference service but nothing to credit on this axis.

observabilityD

Only a GET /health probe is declared and it is not actually reachable (latest_health: 'no https endpoint in manifest exposes', up=false); no metrics, tracing, or structured-log signals present.

testingF

No tests detected — migrations/tests presence section is empty and inspector reports no test suite; the manifest's weakest axis (features 52/100) corroborates absent coverage of the /v1/ner critical path.

source · auto-grader-2026-06-16

Ecosystem manifest

.atlas-deps.yml

Zero-shot Named Entity Recognition service — gline-rs (GLiNER ONNX) over HTTP, consumed by openalice-ml-gateway.

Consumed env
  • MODELS_DIR
  • MODEL_NAME
  • PORT
Exposes
  • docker_image: openalice-ner
  • http_endpoint: POST /v1/ner
  • http_endpoint: GET /v1/models
  • http_endpoint: GET /health
Env drift · manifest ⇄ code

Atlas grepped the repo's source for env reads (rust env::var · ts process.env · py os.environ · shell $VAR) and diffed against the manifest's consumes_env. Two lists below: stale declarations and undeclared reads.

Manifest declares, code unused
  • PORT
Observed reads: 2 · declared: 3

Roadmap · what's planned next

2% avg4 goals

Code composition

tokei · loc
260loc
  • Rust94.6%
  • TOML5.4%
  • Rust94.6%· 246
  • TOML5.4%· 14
Language% codecodecommentsblanksfiles
Rust94.6%24619431
TOML5.4%14331
Markdown0.0%068262

Telemetry ribbon · last 90 days

1 event
MAYJUNJUL2026-06-10 · lifecycle · first scan — repo indexedNOW
commitmanifestlifecyclekind

ner/api

3 features
  • ner.api.extract
    src/main.rs:155
    POST /v1/ner — extract named entities from up-to-4000-char text with caller-supplied labels. Zero-shot via GLiNER ONNX. Body capped at 64 KiB.
    route:POST /v1/ner
    since 0.1.0
  • ner.api.health
    src/main.rs:113
    GET /health — liveness probe + model status + uptime seconds. 200 once the GLiNER model is loaded; 503 before.
    route:GET /health
    since 0.1.0
  • ner.api.models
    src/main.rs:138
    GET /v1/models — list the ONNX models loaded at startup.
    route:GET /v1/models
    since 0.1.0

ner/service

1 feature
  • ner.service.crate
    src/main.rs:11
    Zero-shot Named Entity Recognition over HTTP — gline-rs + multilingual ONNX. Caller supplies labels at request time; no per-domain training.
    bin:openalice-nerroute:POST /v1/nerroute:GET /v1/modelsroute:GET /health
    since 0.1.0