AgileV — the on-site test

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.

How to fetch it and run it

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.

What it checks

CheckWhy
name resolution, TCP, TLS, certificate expirythe network and the edge, as seen by you
/health, /v1/modelsmodels loaded, contract online, bge-m3 at 1024
401 KEY_MISSING and 401 KEY_INVALIDthe errors are the documented ones: your client can trust them
/v1/usagewho you are, your scopes, your per-minute limit, your usage for the month (reading it is free)
cosine against the frozen vectorthe 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 cachethe same sentence gives the same vector bit for bit, and the second time it is nearly free
historical /embed, /v1/rerankthe two formats some of you already use
X-RateLimit-* headerswith contract 1.2; with 1.1 online the check is «skipped», not an alarm
timings from heremedian and maximum from your own box, round trip included
the counters move by what you spentthe invoice counts what you really sent

What it does NOT do

What to send back to AgileV

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.

When to redo it

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.

questa pagina in italiano