OSMP -- Octid Semantic Mesh Protocol. Deterministic agentic instruction encoding.
Project description
OSMP Python SDK
Reference implementation of the Octid Semantic Mesh Protocol. Encodes, decodes, and validates agentic AI instructions using SAL (Semantic Assembly Language). 356 opcodes across 26 namespaces. Inference-free decode by table lookup.
Install
pip install osmp
Zero dependencies beyond Python standard library (optional zstandard for D:PACK).
Tier 1: Two Functions, Zero Setup
from osmp import encode, decode
sal = encode(["H:HR@NODE1>120", "H:CASREP", "M:EVA@*"])
# "H:HR@NODE1>120;H:CASREP;M:EVA@*"
text = decode("H:HR@NODE1>120;H:CASREP;M:EVA@*")
# "heart_rate at NODE1 priority 120; casualty_report; evacuation at broadcast"
Three lines. No instantiation. Module-level singleton, cached on first call.
Additional Tier 1 Functions
from osmp import validate, lookup, byte_size
result = validate("R:MOV@BOT1⚠")
print(result.valid) # False -- ⚠ requires I:§ precondition
definition = lookup("R:WPT")
# "waypoint"
print(byte_size("H:HR@NODE1>120"))
# 15
Tier 2: Class-Based Interface
For configuration beyond defaults (custom ASD floor, pre-loaded dependency rules, direct ASD access):
from osmp.core import OSMP
o = OSMP()
sal = o.encode(["H:HR@NODE1>120", "H:CASREP"])
text = o.decode(sal)
result = o.validate(sal)
definition = o.lookup("H", "HR")
Tier 3: Full Protocol Access
Direct access to encoder, decoder, ASD, and all protocol internals:
from osmp.protocol import SALEncoder, SALDecoder, AdaptiveSharedDictionary, validate_composition
asd = AdaptiveSharedDictionary()
enc = SALEncoder(asd)
dec = SALDecoder(asd)
sal = enc.encode_frame("R", "MOV", target="BOT1", cc="↺")
result = dec.decode_frame(sal)
# result.namespace = "R"
# result.opcode = "MOV"
# result.opcode_meaning = "move"
# result.consequence_class_name = "REVERSIBLE"
Composition Validation
Eight deterministic rules enforced before any instruction hits the wire:
- Hallucination check -- every opcode must exist in the ASD
- Namespace-as-target --
@must not be followed byNS:OPCODE - R namespace consequence class -- mandatory except
R:ESTOP - I:§ precondition -- ⚠ and ⊘ require
I:§in the chain - Byte check -- SAL bytes must not exceed NL bytes (exception: R safety chains)
- Slash rejection --
/is not a SAL operator - Mixed-mode check -- no natural language embedded in SAL frames
- Regulatory dependency -- REQUIRES rules from loaded MDR corpora
Domain Code Resolution
from osmp.protocol import BlockCompressor
bc = BlockCompressor()
bc.load("mdr/icd10cm/MDR-ICD10CM-FY2026-blk.dpack")
result = bc.resolve("J93.0")
# "Spontaneous tension pneumothorax"
Three corpora bundled: ICD-10-CM (74,719 codes), ISO 20022 (47,835 codes), MITRE ATT&CK (1,661 codes).
MCP Server
The MCP server is a separate package that wraps this SDK:
pip install osmp-mcp
osmp-mcp
Nine tools for AI client integration. Connect from Claude Code (claude mcp add osmp -- osmp-mcp), Claude Desktop, Cursor, or any MCP-compatible client.
License
Apache 2.0. Patent pending. Filed March 17, 2026.
SALBridge: Mixed Environment Integration
When your agents communicate with non-OSMP peers, the bridge handles boundary translation.
from osmp import bridge
b = bridge("MY_NODE")
b.register_peer("GPT_AGENT", attempt_fnp=False)
# Outbound: SAL decoded to NL, annotated with SAL equivalent
out = b.send("H:HR@NODE1>120", "GPT_AGENT")
# Inbound: scanned for SAL acquisition
result = b.receive("A:ACK", "GPT_AGENT")
# Metrics and comparison
metrics = b.get_metrics("GPT_AGENT")
comparison = b.get_comparison("GPT_AGENT")
The bridge annotates outbound messages with SAL, seeding the remote agent's context. When the remote agent starts producing valid SAL through exposure, FNP transitions from FALLBACK to ACQUIRED. OSMP spreads by contact, not installation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file osmp-2.1.0.tar.gz.
File metadata
- Download URL: osmp-2.1.0.tar.gz
- Upload date:
- Size: 106.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
473896edc3a98912e9295525383bcb10b0f591d46577cf9e5f639c1ff801c549
|
|
| MD5 |
9ded16f1f176b103e114cfe6309223af
|
|
| BLAKE2b-256 |
4c7398fbd5b799c53695dd65568dc59d3edc7879da6660fbedf8399433c5d9ff
|
File details
Details for the file osmp-2.1.0-py3-none-any.whl.
File metadata
- Download URL: osmp-2.1.0-py3-none-any.whl
- Upload date:
- Size: 106.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2d2d80e841d08c476cfc058aa9340021181520998d8196503a7f062b5325dee
|
|
| MD5 |
f08fca204ac23756bd014afa3ea90688
|
|
| BLAKE2b-256 |
84ba1c4e9da6fc9e45a7152abec0fcd5c2518165f2d25335c774900e1921fa99
|