Skip to main content

Nitelos

Verify the outcome, not the attempt.

Nitelos is a Python SDK that checks whether an agent's success criteria are supported by evidence you supply — normalized observations, screenshots, actions and host-authorized external reads. It never acts on the agent's behalf: no clicks, no network fetches, no retries. A result is a time-scoped judgment over explicit criteria, not a transaction guarantee.

What "verified" means here

Verification is scope-relative. A criterion says exactly what final condition must hold, for which subject, at which checkpoint — and Nitelos reports success/failure/abstained for those criteria against that evidence:

  • A deterministic assertion (JSON pointer + equals/in/exists over a normalized observation) is fully checked by the SDK: supported, refuted or unknown, with the exact evidence references that decided it.
  • An external criterion additionally requires a host-constructed TrustBinding — imported JSON can never authorize its own external claims.
  • A visual criterion (optional, experimental) is decided by a local image model only when you explicitly opt in; every such result is labeled model_inferred and carries the VISUAL_GROUNDING_UNVERIFIED limitation.

Missing evidence abstains. Contradictions become unknown. A tool reporting "completed" never proves an outcome.

Quickstart (deterministic, offline)

import hashlib, json
from nitelos import Verifier, canonical_json, parse_request

observation = {
    "id": "obs-form",
    "kind": "observation",
    "sequence": 0,
    "captured_at": "2026-10-20T10:00:00Z",
    "checkpoint_id": "cp-final",
    "source_id": "my-agent-runner",
    "subject": {"form": "registration-1"},
    "phase": "final",
    "channel": "dom",
    "data": {"validation_error": False, "email_filled": True},
}
observation["sha256"] = hashlib.sha256(canonical_json(observation["data"]).encode("utf-8")).hexdigest()

request = parse_request(
    json.dumps(
        {
            "schema_version": "1",
            "request_id": "quickstart-1",
            "objective": "Complete the registration form",
            "checkpoint_id": "cp-final",
            "as_of": "2026-10-20T10:01:00Z",
            "criteria": [
                {
                    "id": "no-errors",
                    "description": "No validation error remains on the form",
                    "kind": "assertion",
                    "scope": "observed_state",
                    "evidence_ids": ["obs-form"],
                    "subject": {"form": "registration-1"},
                    "pointer": "/validation_error",
                    "operator": "equals",
                    "expected": False,
                }
            ],
            "evidence": [observation],
        }
    )
)

result = Verifier().verify(request)
print(result.decision)  # success | failure | abstained (or None on execution errors)

The default is a plain Verifier() with the strict VerificationPolicy (model inference disallowed); screenshots arrive via Evidence.screenshot(...) plus a raw-bytes mapping, and ArtifactStore/TrustBinding cover the image-store and external-trust cases in the guides below. Field names follow the schema-1 VerificationRequest contract.

See examples/quickstart.py for the runnable script and docs/quickstart.md for the walkthrough. The agent-summary demo — a claim of success refuted by a validation_error observation — is examples/demo_incomplete_form.py; the pending-external abstention is examples/demo_external_pending.py.

Deterministic vs experimental

Everything in the quickstart is deterministic and offline: assertions, eligibility (subject/checkpoint/freshness/phase), trust bindings, aggregation and every error code. The optional local visual backend (SmolVLM) is experimental; its executability gate is under review, and it is disallowed by the default policy. No benchmark numbers are published yet — evaluation runs have not been executed.

Documentation

Apache-2.0. Python 3.12/3.13.

Metadata

Release files for nitelos 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nitelos 0.1.0
File Size Uploaded
nitelos-0.1.0.tar.gz 460.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nitelos 0.1.0
File Interpreter ABI Platform
nitelos-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 550.9 kB

Release files / nitelos-0.1.0.tar.gz

Download URL nitelos-0.1.0.tar.gz
Size 460.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6a050303a2cc055d759375133bfbdc29c924dad5e3d73e0b5aa5d16ba7383ef4
BLAKE2b-256 checksum
How to use checksums
c728ceaca8a974746160a827c039bec42810296a772c440a739766bae1a2adb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / nitelos-0.1.0-py3-none-any.whl

Download URL nitelos-0.1.0-py3-none-any.whl
Size 90.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8966b653e24ab5bb6c4a481fc3285c46471349678736b8a4d0cec7812574c94
BLAKE2b-256 checksum
How to use checksums
8d59c9b259b725271ee92d255beed84da741db869516f39e6105b913f464f5e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page