mova-serve
The groupant beside models/mova-serve.groupant in the Mova repository: what the code computes, what it never does, how to go back from its outputs, its invariants, cost and checks.
Facts
Implementation material. A Mova code model describes this code at one source revision: partial models, finite checks and their stated scope. It is not a reviewed general exposition, and its labels are shown as written, never raised.
Components
| component | label | where |
|---|---|---|
| Approximant | partial source derived | Forward |
| Ast | not materialized | |
| Composition | partial source derived | Composition |
| Cost | partial source derived | Cost |
| Descriptant | partial source derived | Descriptant |
| Invariant | partial source derived | Invariant |
| Tests | finite evidence | Tests |
Obernants
The typed relations around the forward model: the behaviour complement (what the code never does), the reverse reconstruction (every input compatible with an output) and specialised views.
| relation | type | label | where |
|---|---|---|---|
| Behavior complement | behavior complement | partial source derived finite checks | Behavior complement |
| Reverse reconstruction | reverse reconstruction | partial source derived finite checks | Reverse reconstruction |
Model text
Descriptant
The public parse service: the parse pages with shareable addresses, the JSON API and the MCP server over
mova-parse (level 1 and the per-language models) and prag (frames, the speech-act perceptron, inferences), with a
W-TinyLFU cache, a fixed worker pool behind a bounded queue, word quotas by plan, accounts (Google sign-in, API keys,
terms acceptance), and a bounded request log.
Forward
request โ server::respond โ identity (auth: key or session; else the address) โ limits (quota words,
ratelimit burst, characters) โ cache or the pool running engine::analyse โ html page (with svg trees), JSON,
CoNLL-U or mcp result โ store log line, ring slot, usage count.
Invariant
The analysis is a function of (normalised text, language choice, model files); the cache key holds all three. Every parse answer carries the client's quota; every parse request is logged with its text; state lives under one directory with bounded sizes and ages.
Cost
A cache hit โ0.01โ0.06 ms through the route; a miss โ18 ms for 100 words, 0.66 s for 5 000 words; 821 MB resident after loading (2026-11-06).
Composition
Leaves are the file groupants beside tools/mova-serve/src/*.rs. The wiring is checked by server::tests (API schema
and cache, limits, quotas, busy queue with a control, MCP with a key, pages and log, the account flow) and by two
mova-serve bench processes giving the same digest; the leaves' own tests check each part alone.
Behavior complement
No TLS (the proxy's), no billing, no OAuth 2.1 authorization for MCP (API keys), no frames or pragmatics for French, no expression lens.
Reverse reconstruction
The request log recovers what was asked, when, through which endpoint, with which outcome; the versions in every answer recover which model files answered.
Tests
cargo test --release -p mova-serve: all module tests (2026-11-06); mova-serve bench twice; headless screenshots at
1280 and 390 px; the MCP stdio transport end to end against a local server.
Provenance
This page in Markdown โ https://md.groupants.elamur.ai/free/en/mova/models/mova-serve.groupant/