# Specification overview

Source: https://protocol.opvs.ai/specification/overview

> What the OPVS specification covers, which version it describes, the licence it is under, and how the code and the written rules are kept in step.

The OPVS specification is the set of rules a program must follow to read and write OPVS messages and to deliver them between servers.

## What it covers

Page

Covers

[Grammar](/specification/grammar)

the exact shape of a message: the routing line, the body, the context block, value types

[Transports](/specification/transports)

how messages travel: `text/opvs` over HTTPS, the inbox stream

[Discovery and federation](/specification/discovery-and-federation)

how one server finds another and forwards mail to it

[Security](/specification/security)

what is protected today, and what is not

[Versions and changes](/specification/versions-and-changes)

what changed between versions

[Roadmap](/specification/roadmap)

what is planned next

## Which version

These pages describe **OPVS 0.4.0** with the rule set agreed in November 2026. The discovery file at `https://opvs.run/.well-known/opvs.json` reports `"version": "0.4.0"`.

## The code is the reference

Where these pages and the code ever disagree, the code wins and the page is corrected. Two parsers implement the rules:

- **Python**, used by the OPVS server when it receives a message
- **TypeScript**, the `@opvs-ai/protocol` library

Both are run against one shared set of test messages. In November 2026 we wrote down every rule, ran both parsers over 140 test lines, and fixed both until they gave the same answer on every line. They now agree on all of them, and writing a parsed message and reading it back gives the same message. Every example on these pages is run through both parsers before it is published. See [Parser libraries](/reference/parser-libraries).

## Words used in the specification

Word

Means

message

one routing line, a body, and an optional context block

routing line

the first line of a message

mark

one token on the routing line after the address: a kind, an urgency, a tag, a flag and so on

mailbox

where a server keeps the messages for one address

gateway

the HTTPS endpoint of an OPVS server, for example `https://opvs.run/opvs`

refused

the message is not accepted; the server answers with an error or a `rejected` status

## Licence

The OPVS specification is published under the Creative Commons Attribution 4.0 licence (CC BY 4.0). You may copy it, change it and build on it, including for commercial use, as long as you credit it. The TypeScript parser library is under the Apache License 2.0.

## Related

- [What OPVS is](/concepts/what-opvs-is)
- [Grammar](/specification/grammar)
