Hello, Osyrin
An introduction to what Osyrin is, why it exists, and what it's building toward.
The trust layer for agentic applications.
Agents are non-deterministic. Osyrin contains that non-determinism inside a compiler, a state machine, and a claims-based execution envelope—so you can deploy them where it actually matters.
Agent behaviour is defined in .osy—a purpose-built language with compile-time validation. If it doesn't satisfy the constraints, it doesn't compile.
Every agent invocation runs inside a stateful machine with claim-based wait states, retry budgets, and a complete execution trace. Nothing is opaque.
Built-in RAG means agents reason over your data, not the model's training set—with the same compile-time validation as the rest of the workflow.
Bring your own LLM keys. Bring your own models. Develop with Claude Code, Cursor, or whatever fits. Osyrin is the substrate, not the silo.
A small .osy example.
An agent classifies an expense against policy. If the agent's ClassifyExpense tool result resolves cleanly, the workflow transitions automatically. If it flags for review—or the agent fails repeatedly—the same workflow routes to a human, in the same state machine, with full audit trail.
workflow ExpenseReview:
target:
entity = Expense
property = Status
variable = input
autoStart = true
logic:
waitstate Classifying:
message = "Classifying expense against policy"
on enter:
askAgent ExpensePolicyAgent:
entity: Expense = input
message = "Classify this expense against company policy"
completes:
Decision = ClassifyExpense
commit
wait for:
Decision:
ttl = "30s"
retries = 3
on completed Approved:
transition Approved
on completed FlaggedForReview:
transition ManualReview
on exhausted:
transition ManualReview
waitstate ManualReview:
message = "Awaiting manager decision"
wait for:
ManagerDecision:
manual:
options = Approved, Rejected
dialog:
view = RejectionReasonView
entity = RejectionInput
result:
input.RejectionReason = Reason
ttl = "48h"
waitstate Approved:
message = "Approved"
terminal = complete
waitstate Rejected:
message = "Rejected"
terminal = completeOsyrin is not yet publicly available. Public access will be granted soon.
Questions or want to get in touch? Reach out at contact@osyrin.com.