← Documentation index Architecture guide › observability

Metnos

Operational observability
Seeing system state without mistaking a view for a source of authority.

Use Settings, the administration area in the web chat, to inspect a running installation. Metnos can also produce an HTML report that opens as a local file. It is a technical snapshot of the moment when it was generated, not a second version of Settings.

Contents

  1. Where to start
  2. The two tools
  3. Settings in the chat
  4. The static HTML snapshot
  5. Data collected by the snapshot
  6. Access, users, and confidentiality
  7. Generation and lifetime
  8. Verification and canonical sources

1. Where to start

You can ask Metnos directly:

Show me where I can check the latest turns and service status.

The simplest route starts in the web chat: Settings > Activity > Turns for recent requests and Settings > System > Services for configured services. If you are talking to Metnos through Telegram, you must still open these pages in a browser because Telegram does not contain the administration area.

APIs, logs, and files are useful for technical diagnosis. The static report described below belongs to this second case and is not the ordinary route for chat users.

2. The two tools

ToolRefresh behaviourAccessPurpose
Settings (/admin)Reads data again whenever a page is opened or refreshed.Requires a session with the administrator role.Inspect and control the installation while it is running.
Static report (runtime.observability)Remains fixed at the moment when it was generated.It is a local file; protection depends on the file and computer permissions.Inspect six local sources offline.

These are not two views of the same facility. Settings uses its own pages and data, while the static generator runs only from the command line and is not used by the HTTP server.

3. Settings in the chat

The Settings landing page summarises version and uptime, turns over the last 24 hours, proposals, executors, scheduler activity, Safety signatures, and users. Detail pages keep different operational questions separate:

Route in the chatMain information
Settings > Activity > TurnsIdentifier, time, channel, actor, steps, outcome, duration, and request.
Settings > Activity > SchedulerTask runs, outcome, and duration.
Settings > System > ServicesServices in the canonical registry, status, and admitted controls.
Settings > System > ModelsEffective redacted LLM, embedding, and VLM configuration: LLM and VLM can be edited and restored; embedding is view-only.
Settings > System > DevicesPaired devices, presence, and revocation.
Settings > System > UsersUsers, roles, channels, and administrable preferences.

runtime/ui_surfaces.py is the canonical description of visible pages and their navigation routes. Tutor uses the same registry, so a structural interface change also requires an updated navigation guide and a rebuilt Tutor index.

4. The static HTML snapshot

The generator reads local sources and composes one document with embedded styles, no JavaScript, and no live connection to the server. Sections are ordered as follows: tests, Mnestoma, pairings, recent turns, Vaglio decisions, and scheduler.

Each collector handles an unavailable source separately. The page can therefore be produced when one section is empty or reports an error. This makes a partial snapshot readable; it does not make missing data evidence that the corresponding component is healthy.

The generated document currently uses Italian labels and lang="it". It is not a localised chat surface and must not be presented as one.

5. Data collected by the snapshot

SourceData shownConfigured location
MnestomaCounts, active and proto edges, recent events.Mnestoma's database, normally below PATH_WORKSPACE/.mnestoma.
PairingsChannel, sender identifier, level, timestamps, pairing author, and revoked count.DB_PAIRINGS below PATH_USER_STATE.
TurnsLatest fifteen turns: request, outcome, step count, and beginning of the answer.PATH_TURNS below PATH_USER_DATA.
VaglioLatest twenty decisions: executor, score, outcome, and abbreviated reason.PATH_USER_DATA/vaglio.
SchedulerEnabled tasks, schedule, latest run, and outcome.PATH_USER_STATE/scheduler_v2.sqlite.
Registered testsModules, enabled cases, latest status, and largest modules.PATH_RUNTIME/testing/tests.db.

Limits are fixed in the generator and cannot be changed from the command line: at most five turn files, three Vaglio files, and a bounded number of rows or events per section. The report helps direct a diagnosis; it is not a source for complete totals.

6. Access, users, and confidentiality

7. Generation and lifetime

From the installation root, using the Metnos Python environment:

PYTHONPATH=runtime ./.venv/bin/python -m observability render
PYTHONPATH=runtime ./.venv/bin/python -m observability render --out /chosen/path/dashboard.html

The default destination is PATH_WORKSPACE/dashboard/index.html. The command reports the written path and exits. There is no built-in periodic refresh: generation time and content remain unchanged until the command runs again.

The file is derived output. It can be removed by deleting only the selected output path after confirming that no process uses it; removing it does not delete any operational source.

8. Verification and canonical sources

Focused tests for the static generator live in tests/runtime/runtime/test_observability.py. They verify, among other things, that executor names, requests, and responses cannot introduce active markup into the file. HTTP and end-to-end tests cover administration pages separately; this guide does not freeze a test count that would become stale.