Who it is for: the products that consume AgileV (nis2, lg231, trpg, taxai, aiepod, the core when it moves over). Where you run it: on your box, not on agilev-01.
From the AgileV box we can see that the service answers and how long it takes. What we cannot see is whether from your box, with your key, across your network, the vectors you receive today are still the ones you built your index with. This is that test, in one command.
curl -s https://artefatti.agile.software/agilev-prova-dal-posto.html \
| sed -n 's/^#B64 //p' | tr -d '\n' | base64 -d > agilev-prova-dal-posto.sh
sha256sum agilev-prova-dal-posto.sh # expected: adb7eeafd59e6e2d608c6d2b5f12ed997afafa0b839c8cffabcf10fc8b707dad
# the key in a file, never on the command line (it would end up in `ps` and in the shell history)
umask 077; printf '%s' "$AGILEV_API_KEY" > /tmp/agilev.key # or paste it into the file yourself
bash agilev-prova-dal-posto.sh --chiave /tmp/agilev.key ; rm -f /tmp/agilev.key
The same line works on https://agilev.agile.software/prova-dal-posto.html and on the
copy in the artefacts store, which is identical byte for byte. The script itself is in Italian, and so are its
options: it is the same file everyone else runs, and translating the flags would make two scripts out of one.
All you need is bash, curl and python3: no library to install.
To test the configuration without consuming anything (no requests, no invoice):
--niente-consumo. If all you need is the line to send back: --riga.
| Check | Why |
|---|---|
| name resolution, TCP, TLS, certificate expiry | the network and the edge, as seen by you |
/health, /v1/models | models loaded, contract online, bge-m3 at 1024 |
| 401 KEY_MISSING and 401 KEY_INVALID | the errors are the documented ones: your client can trust them |
/v1/usage | who you are, your scopes, your per-minute limit, your usage for the month (reading it is free) |
| cosine against the frozen vector | the check that counts: if it drops below 0.9999 the vectors are no longer the ones in your index. It is the most silent fault AgileV can have and it is only visible from here |
| repeatability and cache | the same sentence gives the same vector bit for bit, and the second time it is nearly free |
historical /embed, /v1/rerank | the two formats some of you already use |
X-RateLimit-* headers | with contract 1.2; with 1.1 online the check is «skipped», not an alarm |
| timings from here | median and maximum from your own box, round trip included |
| the counters move by what you spent | the invoice counts what you really sent |
ps (it travels in a 0600 headers file).The last line, the one starting with RIGA:. Nothing else — and never the key. For example:
dico agilev "RIGA: agilev-prova-dal-posto trpg 2026-09-28T19:00Z contratto=1.1 controlli=17 KO=0 coseno=1.000000 mediana=0.214s"
If a check comes out KO, send us that line as well (it prints no data of yours). If the failure is
VETTORI CAMBIATI («vectors changed»): stop and tell us at once, do not reindex.
After every AgileV deploy announced on agilev.agile.software/en/novita.html — the first one is the
move to contract 1.2 — and before any large reindexing.
This page is generated by server/agilev-prova-pagina.py on the AgileV box, from the same
bytes as the Italian one: the script and its fingerprint cannot differ between the two languages. The script is in the
repository at server/agilev-prova-dal-posto.sh and also at
https://agilev.agile.software/esempi/agilev-prova-dal-posto.sh.