Origina · Field Manual

An operational record
for AI assets

How Origina turns datasets, models, and agents alike into things that can be licensed between organizations, with evidence of what they are, proof of how they perform, and an auditable record of every use. This edition is a working reference: the formulas below are the ones the platform actually runs.

Edition 2.1 · drawn, not rendered · July 2026

Section 1

The problem

Software has package registries, version numbers, licences, and changelogs. AI assets have almost none of this. A dataset is a folder. A model is a file. An agent is a URL that may or may not still work tomorrow.

This is tolerable inside one team and untenable between organizations. A company licensing a dataset cannot easily establish where it came from, whether it contains personal data, or whether it has changed since they last looked. A company licensing a model cannot tell what it was trained on or whether a checksum still matches. A company licensing an agent has no way to know how it performs beyond the creator's own description of it.

So most AI assets are exchanged privately, on trust, with terms in email threads and usage counted by nobody. That works between two parties who already know each other. It does not scale to a market. Everything in this manual is an answer to one question: what would it take to license an AI asset, of any kind, to a stranger?

Section 2

First principles

Three rules shape almost every design decision that follows. They are worth stating plainly because the rest of the document is, in effect, their consequences.

KEY IDEA · Evidence over claims

Anything shown as fact is derived from something the platform actually did, a checksum it computed, a call it made, a payment it confirmed. Where nothing was checked, the platform says so rather than assuming the best.

INVARIANT · Records are immutable

Usage, royalties, audit entries, and consent are append-only. A correction is a new entry, never an edit. This is what makes the record worth trusting: the past cannot be quietly rewritten.

KEY IDEA · Compute, don't store, what can drift

Balances and totals are derived from their underlying records rather than maintained separately, so two numbers can never disagree. A token balance is the sum of a ledger; a royalty is a function of usage events.

Section 3

Notation & conventions

The formulas in this manual share a small vocabulary. Money is always integer cents, never a floating-point number of dollars, so that a sum of parts always equals the whole. Rounding direction is chosen deliberately and stated wherever it appears.

Soverall trust score (raw sum of category scores)
sipoints earned in trust category i
qbillable usage quantity in a period
runit rate, in whole cents per event
φplatform fee percentage (default 15)
Nnumber of tasks in a testbed run
sjscore of testbed task j, on 0-100
ρtoken exchange rate, in cents per token
⌊·⌋floor, round down (used when buying tokens)
⌈·⌉ceiling, round up (used when spending tokens)

NOTE · Why integer cents

Floating-point dollars accumulate rounding error; a fraction of a cent, multiplied across thousands of events, becomes a real discrepancy someone has to explain. Every monetary quantity here is a whole number of cents, and every split is computed so the parts re-sum to the original exactly.

Section 4

Asset lifecycle

Every asset moves through the same sequence, whether it is a dataset, a model, or a live agent. Each stage produces the evidence the next stage depends on, verification needs a registered asset, a trust report needs verification, a royalty needs metered delivery.

RegisterownershipVerifyauto checksTrust Reportevidence → scoreListmarketplaceLicenserequest→approveDelivergateway, meteredRoyaltyfrom usageEvery step appends an immutable record, corrections are new entries, never edits.datasets, models and agents all travel the same track; only Deliver differs by type.
The lifecycle of an asset, from registration to royalty.

The one branch is delivery: a dataset or model is streamed through an access-checked gateway, while an agent is proxied call-by-call. Both are metered identically, which is what lets a royalty be computed the same way regardless of asset type. The next section makes the type differences explicit.

Section 5

Asset types

Origina is not an agent platform with datasets bolted on. Three asset types are registrable today, Dataset, Model, and Agent, and each is a full citizen of the system. A wider taxonomy (prompt collections, evaluation benchmarks, knowledge bases, workflows, tools, plugins, synthetic datasets) is already modelled so records can be read, even though new ones cannot yet be created.

AI AssetREGISTRABLE TODAYDatasetfiles · scannedModelfiles · scannedAgentlive · proxiedMODELLED · COMING SOONPrompt CollectionEval BenchmarkKnowledge BaseWorkflowToolPluginSynthetic DatasetThe full taxonomy is modelled so records can be read; only Dataset, Model and Agent can be created today.
The asset taxonomy. Solid = registrable today; dashed = modelled, coming soon.

Datasets and models differ from agents in exactly one structural way: they are files, not live services. That single fact decides how each is delivered, what evidence can be gathered about it, and which parts of the Trust Engine apply. Almost everything else is shared.

DeliveryChecksum + scanVerificationTestbedTrust scoreLicence + royaltyDatasetfile (signed URL), Modelfile (signed URL), Agentproxied calln/a (no file)✓ +20Datasets and models are full citizens: only the Testbed and its +20 agent-performance category are agent-specific.
What applies to which type. Only the Testbed and its agent-performance points are agent-specific.

A dataset earns integrity and security evidence a live agent structurally cannot, a real SHA-256 checksum, a real secret and PII scan of its contents (Section 9). An agent earns behavioural evidence a file structurally cannot, a real Testbed run against real tasks (Section 10). Verification, versioning, licensing, metering, royalties, and audit apply identically to all three.

The wider catalogue we will offer

Beyond the three registrable types, seven more are already modelled, each with its own file-type allowlist and a verification path in place, waiting only to be switched on. All of them are file-based, so when they open they inherit the entire machinery unchanged: checksum, secret/PII scan, verification, trust scoring, signed-URL delivery, metering, and royalties. Only what each one is differs.

PLANNED TYPEWHAT IT IS
Prompt CollectionA curated, reusable library of prompts (JSONL / CSV / Markdown), the prompt engineering itself as a licensable asset.
Knowledge BaseA reference corpus meant for retrieval and grounding, the source material a RAG system or assistant reads from.
Evaluation BenchmarkA test suite of tasks and expected answers, used to measure other models and agents. An asset whose job is judging assets.
Synthetic DatasetArtificially generated data, handled like a Dataset for delivery and scanning, but with its own provenance story (how it was generated, from what).
WorkflowA multi-step pipeline or orchestration definition (JSON / YAML / code), a repeatable process rather than a single model or call.
ToolA single callable capability an agent can invoke, a well-described function or API, licensable on its own.
PluginAn extension that adds a capability to a host system, packaged integration code.

CAUTION · Modelled is not built

These are honest future work. The type exists in the model, the file rules exist, the verification path already accepts them, but registration is deliberately gated to Dataset, Model, and Agent today, so nothing can be listed that the platform cannot yet actually deliver on. "Evidence over claims" applies to our own roadmap too.

NOTE · Every asset moves through the same states

Regardless of type, an asset's record travels draft → pending_verification → verified → published → archived. A model is published the same way a dataset or an agent is; the type only changes what evidence backs the trust score along the way.

Section 6

Architecture

Origina is a domain-driven modular monolith. The system is organised into domains, each owning its business logic end to end. Cross-domain communication happens through published events and narrow public functions, never by reaching into another domain's internals.

INTERFACEStudioEnterprise consoleMarketplacePublic APIDOMAINSAssetsVerificationTrustTestbedLicensing+ Gateway · Usage · Royalty · Billing · TokensSHAREDEvent busAudit logStorageNotificationsJobsINFRASTRUCTUREPostgreSQLObject storagePayment providersModel providersDomains never import each other's internals, they talk through published events and narrow public functions.
Layered architecture. Infrastructure is replaceable; domain logic never depends on a specific vendor.

Because domains are decoupled through an event bus, a new consumer of an event attaches without the producer knowing it exists. When a licence is granted, the trust, notification, audit, and search domains all react, independently, and without the licensing domain calling any of them.

AssetsLicensingUsageBillingEvent Buspublish / subscribeTrustNotificationsAuditSearchA publisher never knows who is listening, new consumers attach without touching the producer.
The event bus. Producers publish; any number of consumers subscribe, added without touching the producer.

Section 7

The Trust Engine

A Trust Report answers a narrower question than "is this asset good?" It answers "can this asset be trusted?", and it answers it from evidence the platform gathered itself, never from reputation, popularity, or marketing. Datasets, models, and agents are all scored; they simply have different evidence available.

The overall score is simply the sum of what each evidence category earned. There is no hidden weighting beyond the maximum each category can contribute.

S =  i∈C si
(7.1)

where si is the points earned in category i, over the categories that apply to the asset.

The categories and their maxima are fixed and deterministic, identical evidence always produces an identical score. The full table is the real one, lifted from the scoring function:

CATEGORYMAXRULE (real, from code)
Identity10permanent id + recorded registrant (constant)
Ownership10owning organization in active standing
Verification20passed automated verification
Documentation15round( passed / total checks × 15 )
Version History105 if any version + 5 if a documented release
Security & Integrity10at least one file with a SHA-256 checksum
Operational Readiness105 if >1 file + 5 if a current published version
Operational Health50 if archived, else 5
Usage53 if any active licence + 2 if any usage event
Licensing Readiness53 if any licence grant + 2 if a duration is set
Compliance52.5 residency declared + 2.5 certification on file
Community5min(5, distinct licensee organizations)
Agent Performance †20round( latest testbed score / 100 × 20 ), agents only
Base total110agents reach 130 (†). Levels read the raw sum.
Base trust score, sum of 12 evidence categories2015101010101055555Verification · 20Documentation · 15Identity · 10Ownership · 10Version History · 10Security · 10Oper. Readiness · 10Oper. Health · 5Usage · 5Licensing · 5Compliance · 5Community · 5Agents add a 13th category, Agent Performance (max 20), so their reachable maximum is 130, not 110.
How the base score is composed. Verification and documentation dominate; popularity signals are deliberately the smallest.

Sub-scores worth seeing

Two categories are not simple yes/no. Documentation is proportional to how many metadata completeness checks passed:

sdoc = round(checkspassedcheckstotal × 15)
(7.2)

And for agents only, performance is the most recent Testbed score, rescaled onto its 20-point ceiling. A dataset or model never has this category, its achievable maximum stays 110, not an unreachable 130:

sagent = round(testbed100 × 20)
(7.3)

From score to level

The numeric score maps to a named level by fixed thresholds. The label is a reading of the number, not a separate judgement.

UntrustedLowModerateHighVerified020406080100A score is a position on this line; the label is a reading of the position, not an independent judgement.
Trust levels as bands on the 0-100 line: thresholds at 20, 40, 60, 80.

Evidence strength, reported, never folded in

A low score can rest on a lot of evidence or almost none, and those are different situations. Evidence strength counts how many of six independent dimensions are present, and is shown beside the score rather than mixed into it.

Evidence breadth, 6 independent dimensions (outcome-blind)verified?has versionhas filehas licencehas usagehas descriptioncount present≥ 5strong3-4moderate1-2limited0minimalStrength is how much evidence exists, reported alongside, never folded into, the score itself.
Evidence breadth is outcome-blind: it measures how much was checked, not how it turned out.

CAUTION · What a Trust Report is not

It is not a warranty and not a malware scan. It reports what was checked and what was found. Security here means checksum integrity plus real secret and PII pattern detection, not vulnerability analysis, which the platform does not claim to perform.

Section 8

Verification

Verification is where automated checks decide whether an asset has passed. Its outcome is worth 20 of the base 110 points, and, just as importantly, it feeds a full re-computation of the trust score rather than a patch to it.

SubmittedpassfailApprovedRejectedRecompute trustdeterministicTrust Report + levelnew immutable versionVerification contributes 20 of the base 110 points; a change here re-derives the whole score, it is never patched.
A verification outcome triggers a deterministic recompute, producing a new immutable Trust Report.

Nothing edits a score in place. A new outcome produces a new report version, and the old one remains readable, which is what lets a licensee see not just today's trust but its trajectory.

Section 9

Data safety & scanning

This is where datasets and models carry evidence an agent cannot. Every uploaded file has its contents scanned for two things: leaked secrets and personal data. Both run on the platform itself, real, pattern-based detection, no external service and no account required.

Uploaddataset fileScan: secretsAWS / GitHub keysScan: PIIemail · SSN · card…Names + counts onlynever the matched valuesecret foundpii foundReject uploadRisk: low/med/high→ trust evidenceStoring the matched secret to prove it exists would make the database a second copy of it, so only the pattern name and a count are kept.
Scanning on upload. Secrets block the upload; PII becomes graded trust evidence.

Secrets

The secret scanner matches the well-known formats providers actually issue, AWS key prefixes, GitHub token prefixes, and similar, not guesses. A file containing a live credential is rejected on upload, because publishing someone's leaked key is a harm the platform should refuse to help commit.

Personal data

The PII scanner recognises emails, phone numbers, and government identifiers, US SSNs, credit-card numbers, passports, and national IDs across several countries. Findings are graded into a risk level by the strongest category present: card / SSN / passport are high, national IDs and phone numbers are medium, an email alone is low. That risk level is surfaced as real trust evidence a licensee can weigh.

INVARIANT · Names and counts only, never the value

Both scanners store only the pattern name and a count, never the matched email, key, or SSN itself. Keeping the value to prove one was found would make the platform's own database a second copy of exactly the sensitive data it just flagged. So it is counted, not kept.

Section 10

The Testbed

Where datasets and models are proven by their contents, agents are proven by their behaviour. A description is not evidence. The Testbed calls a registered agent directly with real tasks across capability areas, customer support, coding, research, sales, and scores what actually comes back. The overall score is the mean of the per-task scores:

scoreoverall = round( sjN)
(10.1)

where sj is task j's score on 0-100, and N is the number of tasks run.

Each task is scored one of two ways. Where a verifiable answer exists, it is checked programmatically. Where it does not, a judge model scores the response against a published rubric, and both the response and the judge's reasoning are stored verbatim.

Question pool~50 / capabilityrandomSample taskstored verbatimcallAgentreal responseProgrammaticverifiable answerJudge + rubricreasoning storedOverallmean of tasksTwo scoring paths, one scale (0-100). Random sampling defeats memorisation; the exact question asked is recorded.
A testbed run: sample a question, call the agent, score by check or by judge, average the tasks.

The four capability areas

The tasks are not generic. They are drawn from four real suites, each testing a different kind of competence: Customer Support (tone and genuine resolution under a frustrated customer), Coding (correctness of produced code), Research & Q&A (grounded, accurate answers rather than confident guesses), and Sales (engaging a real objection or writing a follow-up without inventing capabilities).

Customer Supporttone · resolutionCodingcorrectnessResearch & Q&Agrounded answersSalesobjections · follow-up~50 pooled questions per area · sampled at random · scored by programmatic check or judge + rubricThe overall score is the mean across every task run; a licensee can add their own trial calls before committing.
The four capability suites feed one pooled, randomly-sampled, dually-scored run.

What the judge actually judges

For tasks without a single verifiable answer, the judge model scores against a published rubric written for that specific task, and the rubrics are pointed. A sales rubric, for instance, asks the judge to reward a response that engages the specific objection with real substance and an honest limitation, and to penalise both caving with an unearned discount and inventing capabilities that were never established. The judge's numeric score and its reasoning are both stored, so a low mark can be read, not just seen.

KEY IDEA · Why questions are sampled at random

Each question is drawn from a pool of roughly fifty per capability, and the exact question asked is stored with the result. A small fixed set could be answered by memorisation, which would turn the benchmark into a measure of preparation. The pools are kept equivalent in difficulty so scores stay comparable across runs.

A prospective licensee also gets a small number of real trial calls of their own before committing, scored the same way, under their own questions rather than only the owner's.

Section 11

Licensing & delivery

Licences are requested and approved, not bought silently. A request records what the licensee intends to do with the asset; the owner approves or declines. The resulting licence is between the two organizations, Origina records and enforces it without being a party to it.

From the licensee's side the whole journey is short and its money model is simple: browsing and reading Trust Reports is free, credits must be held to take a licence, and nothing is charged until the asset is actually used. Each use is metered to a real event, and the royalty pays the creator 85 percent.

Browsefree to lookRequestyou askApproveowner reviewsAcceptbinds the dealUseretrieve or callCreator paid85% to creatorFREECREDITS SPENT HEREcredit checkcredit checkmetered, per eventFree to browse. Credits must be held to license, but nothing is charged until you actually retrieve or call.Every use is metered to a real event; the royalty pays the creator 85%, the platform keeps 15%.
How a creator licenses an asset: free to browse, credits to license, charged only as it is used.
RequestedapprovedenyApprovedDeniedActiveenforcedrevokeexpireRevokedExpiredThe licence is between the two organizations; Origina records and enforces it without being a party to it.
The licence state machine. Every transition is a recorded event.

Delivery then splits cleanly by asset type, and both paths check the licence on every access.

Files (datasets & models)

A file is delivered through the gateway as a short-lived signed URL. The gateway verifies the licence, mints a URL that expires quickly, and records the delivery; the bytes then stream directly from object storage, never back through Origina's server. When the licence lapses, new URLs simply stop being minted, access ends without anyone having to claw a file back.

Licenseedataset / modelGATEWAY1. Verify licence on access2. Mint a short-lived signed URL3. Record the deliveryObject storagethe file itselfrequestsigned URL (expires)bytes stream direct from storage, never through Origina's serverThe URL is time-boxed and single-purpose; when the licence lapses, new URLs simply stop being minted.
File delivery. A signed, expiring URL streams the dataset or model straight from storage.

Agents

An agent cannot be handed over as a file, so it is proxied: the licensee calls Origina, and Origina calls the agent. The endpoint URL and credentials never leave Origina's servers.

Licenseetheir backendORIGINA GATEWAY1. Verify credential2. Confirm active licence3. Re-check endpoint safety4. Forward request5. Record billable usageAgentcreator endpointAPI keyserver-side onlythe licensee never receives the agent's URL or credentials
Agent delivery by proxy. The creator's endpoint and credentials never reach the licensee.

The two paths are different mechanisms for the same guarantee: access depends on the licence staying valid. A signed URL that stops being minted and a proxy that stops forwarding are the file and agent versions of the same idea, delivery is a privilege of a live licence, not a permanent handover.

Section 12

Usage & metering

Every consumption of an asset, a dataset retrieval, a model fetch, an API request, an agent call, is recorded as a usage event. Usage is append-only: events are written, never edited or deleted, which is what allows any later number to be traced back to them.

Metering is uniform across delivery types. A file retrieval through the gateway and an agent call through the proxy both produce the same kind of billable event, differing only in their event type and quantity. That uniformity is exactly what lets the royalty engine in the next section treat every asset the same way.

A metered event falls into one of two economic classes, separated only by whether a licence stands behind it. When one organization consumes another's licensed asset, the event bears a royalty: priced at a fixed platform rate and shared with the creator. When an organization serves its own agent through the gateway, no creator sits on the other side, so the event bears a platform infrastructure fee instead, a small charge for the metering, provenance, and audit the gateway performs on every call. Both are recorded identically; only their settlement differs.

INVARIANT · Append-only means traceable

Because usage is never mutated, a royalty statement can name the precise event ids it was computed from. "No manual reporting" is only meaningful if a creator can trace any amount back to the individual events that produced it.

Section 13

Royalty engine

A royalty statement turns a period of usage into money owed. The gross is simply metered quantity times the licence's unit rate, kept in whole cents so nothing drifts:

gross = q × r
(13.1)

where q is the billable quantity and r the unit rate in cents.

The platform takes a fixed fee, 15% by default, and the creator receives the remainder. The fee is rounded first, and the payout is defined as what is left, not rounded independently:

fee = round(gross × φ100)
(13.2)
payout = gross − fee
(13.3)

INVARIANT · The split always re-sums exactly

Rounding both halves independently can produce a total that overshoots by a cent, a real bug class in exactly the code where correctness matters most. Computing the payout as the remainder guarantees fee + payout = gross, always, by construction.

A statement is born in draft. It becomes a binding obligation only when a platform admin reviews and issues it, the one deliberate human checkpoint, at which point it posts to the ledger. Generation is idempotent: the same licence and period never yields a second statement, guarded both in code and by a database uniqueness constraint.

Usage eventsappend-onlyΣ by typeAggregateq = quantity× rateStatementstatus: draftadmin reviewIssue→ ledgerpayoutCreator paid85% of grossgross = q · rfee = 15% (rounded)payout = gross − feeEach statement cites the exact usage-event ids it was computed from, any payout traces back to its inputs.
From metered usage to a paid creator. Each statement cites the exact events behind it.

Section 14

Financial periods

Statements live inside financial periods. A period accumulates statements while open; closing it locks the period so no new entries can be posted into a window that has already been reconciled.

OPEN PERIODStatement 1draft → issuedStatement 2draft → issuedStatement 3draft → issuedcloseLockedno new entriesreopenNew eventappendClosing locks the period. Reopening does not erase the lock, it is a new, recorded event on top of it.
A period locks on close. Reopening is itself a recorded event, layered on top, the lock is never erased.

This is the immutability principle applied to accounting: you cannot change what a closed month reported. If something must change, it changes forward, a new entry in a new state, leaving the original reconciliation intact and auditable.

Section 15

Credits & tokens

Consuming organizations hold a token balance they spend on usage. Tokens are bought with money at an admin-set, versioned exchange rate. Both conversions round deliberately, and in opposite directions.

Buying rounds down, so a buyer is never credited a fraction they did not pay for:

tokens = ⌊ centspaidρ ⌋
(15.1)

where ρ is the exchange rate in cents per token.

Spending rounds up, so the platform never eats a fractional token on a debit:

tokensspent = ⌈ costcentsρ ⌉
(15.2)
USD paidcents (integer)÷ ratePurchase⌊cents / ρ⌋ tokensBalanceledger sumon usageDebit⌈cost / ρ⌉ tokensρ = exchange rate (cents per token), set by an admin and versioned.Rounding is deliberately asymmetric, floor when buying, ceil when spending, so the platform never loses fractions.
The token round-trip. Floor on the way in, ceiling on the way out, both favour the ledger's integrity.

The balance itself is never stored as a mutable number. It is the sum of an append-only token ledger, computed on read, so the displayed balance and the transaction history can never disagree.

Section 16

Billing & payments

Money moves in two directions, and the platform handles them separately. Money comes in when an organization pays, a subscription, a credit top-up, an invoice, settled by card or a payment provider. Money goes out when a creator is paid their royalty. Each flow is confirmed by the provider before the platform treats it as real; a payment is a fact only once the provider says so, never because a button was clicked.

Two providers are wired in for real: PayPal (used both to take payment and, via payouts, to pay creators) and Flutterwave (card and local rails, with an African market in mind). Provider webhooks are signature-verified before they are believed, so a forged "payment succeeded" call cannot credit an account.

Subscription plans

Consuming organizations subscribe. Plans are defined in code, not the database, because changing a price is a commercial decision, and each customer's agreed price is captured on their subscription at signup, so changing a plan never retroactively reprices anyone.

PLANSEATSMONTHLY CREDITS
Free1500
Creator31,000
Pro52,500
Business2520,000
Enterpriseunlimitednegotiated

NOTE · An invoice is not a royalty statement

An invoice is money an organization owes the platform; a royalty statement is money the platform owes a creator. They are deliberately different records with different lifecycles, conflating them is how a marketplace loses track of who owes whom.

Section 17

Discovery ranks assets by a relevance score. The current engine is honest keyword matching with a trust tie-break, not semantic search, which is the destination rather than where it is today. When a query is present, points accrue by where the match landed:

rel = match + trust10
(16.1)
Exact name match+50Exact tag match+30Name contains query+20Description contains+5Trust tie-break (÷10)+10Match gate: a candidate scoring 0 on name/tag/description is dropped entirely, trust never rescues an irrelevant hit.
Relevance weights. A trust tie-break applies only to candidates that already matched the query.

CAUTION · Trust never rescues an irrelevant hit

A candidate that matches the query on nothing, not name, tag, nor description, is dropped entirely, no matter how high its trust score. Relevance gates first; trust only breaks ties among things that already matched. With no query at all (browsing), results rank purely by trust.

Section 18

Developer platform

Everything a person can do in the console, a program can do through the public API under /api/v1. The developer platform is how an organization automates the platform rather than clicking through it, with three real primitives.

API KeySHA-256 · shown onceWebhookHMAC-signed · retriedMachine Identityserver-to-server credsPublic API/api/v1 · gateway-guardedevents outYour systemsautomationRaw secrets are returned exactly once and never stored; every later read is a masked summary.
The developer surface: keys and machine identities authenticate in; webhooks push events out.

API keys authenticate external code acting on an organization's behalf. Machine identities are non-human credentials with revocable secrets, letting a licensee's backend talk to the gateway server-to-server with no person in the loop. Webhooks run the other way: when an event of interest happens, Origina calls the developer's URL, signed, retried, and with each delivery tracked.

CAUTION · Two hashes, on purpose

Passwords are hashed with bcrypt, deliberately slow, to resist brute-forcing a low-entropy human choice. API keys use SHA-256, deliberately fast, because a key is already 256 bits of randomness with no structure to brute-force, and bcrypt-hashing every incoming request would throttle the whole platform for no security gain. Raw keys and webhook secrets are shown exactly once and never stored; every later read is a masked summary.

Section 19

The SDK & integration surface

Delivery does not end at the browser. A licensee's real workflow is a pipeline, so the same guarantees, a valid licence, metered usage, revocable access, are exposed as a surface a machine can drive. The Origina SDK (Python, zero third-party dependencies) is the on-ramp: one machine-identity key authenticates every call, and each capability maps to a real scope the credential must hold.

Verification & the deployment registry

A licensed artifact eventually leaves the browser and runs inside the licensee's own infrastructure, where a signed URL or a proxy can no longer reach it. Verification closes that gap: a running deployment checks in, proving its licence is still active and receiving a short-lived token. Each check-in records where the artifact is running, so an owner sees the live footprint of a licence, and a revoked licence stops verifying, which is how revocation reaches an artifact already at rest. Running on more deployments than a licence was sold for is flagged, never silently blocked, a billing signal rather than a kill switch.

Gateway sessions

For file-heavy work the gateway also runs as a session: the licence is validated once when the session opens, many chunk deliveries happen inside it, and one honest usage event is recorded when it closes. The same machine-identity key that verifies and reports also pulls the files, so there is no separate credential system to manage.

Agent sessions

An autonomous agent gets a stronger construct than a static key: a just-in-time session, opened for a declared purpose, with a blast radius, a total spend cap the session enforces on itself, and an instant kill switch. A runaway or prompt-injected agent can spend only up to its cap before its own session refuses the next call, and the cap holder can revoke it immediately on top of that.

Attestation & provenance

Two features answer the questions an enterprise asks before it trusts an asset in production. The AI Passport is the cryptographic identity of an asset, the SHA-256 of every file it is made of, so a copy running anywhere can be proven identical to what Origina registered, unchanged. The AI Bill of Materials is its provenance: an agent declared as fine-tuned from a model and trained on datasets, with compliance computed live from each dependency's real licence state, so the whole chain is flagged the moment a linked licence lapses.

INVARIANT · Compliance is computed, never stored

A dependency's status, owned, licensed, or unlicensed, is derived at read time from the licence itself, not written down once and trusted forever. A statement that a chain is compliant can therefore never be stale: the instant a licence expires, the chain reflects it.

Section 20

Identity & access

Underneath every feature is one access model. A user authenticates (passwords are bcrypt-hashed, sessions are real tokens). A user belongs to one or more organizations through a membership that carries a role, owner, admin, or member. And what a member may actually do is decided by permissions written in a single "resource.action" vocabulary.

Userauthenticatedbelongs toMembershipowner / admin / membergrantsPermissionresource.actionAllowed?checked against THIS organization on every requestKnowing an id is not access. Membership of the specific org is verified each time, never inferred from a URL.
Identity → membership → permission. The organization boundary is checked on every request.

The unit of ownership is the organization, never the individual, every asset, licence, and balance belongs to an org. People join by invitation, and the same person can hold different roles in different organizations. Crucially, access is checked against the specific organization on every request; possessing an identifier that appears in a URL is never mistaken for permission to use it.

Section 21

Notifications & audit

Two domains listen quietly to everything and react. Both are driven by the event bus, and neither knows the other exists, one event produces both a message to a person and a line in the permanent record.

Domain eventpublished on the busNotificationdeliver · retry · preferencesAudit logappend-only · immutableOne event, two independent reactions, a user is told, and the record is written. Neither knows about the other.
One event, two independent reactions: a notification to a user, an entry in the audit log.

Notifications are delivered with real delivery tracking, retries on failure, and per-user preferences about what is worth interrupting someone for. (The email transport itself is currently a stub, an honest current limit, stated rather than implied.) The audit log is the counterweight: an append-only trail of security- and money-relevant actions that cannot be edited, so the record of what happened is itself immutable. An organization can export its own unified trail, credential, verification, usage, and licence events in one chronological file, as CSV or JSON, to hand to an auditor.

Section 22

Sentia, the assistant

Sentia is the platform's assistant: you can ask it, in plain language, about your own organization's real state, what you have licensed, what a licence's terms are, your royalty balance, an asset's trust breakdown, its verification status, your collections. It answers by calling real tools against real data, not by generating a plausible-sounding guess.

Questionnatural languageSentiaassistantToolsassets · licences · royalties…Docsgroundingtools obey the same access rules as the rest of the platformGrounded answerfrom real dataSentia never answers from thin air; every claim is fetched through a tool bounded by the caller's own permissions.
Sentia answers only through tools bound by the caller's own permissions, grounded, not improvised.

INVARIANT · Bounded by the same rules as everything else

Sentia's tools obey the identical access model from the previous section. It cannot see across the organization boundary, because the tools it calls cannot, the assistant is a convenient front door to data you already had the right to, never a way around the rules that guard it.

Section 23

Data model

The core entities and how they relate. Postgres holds metadata and records; files themselves live in object storage, referenced by checksum. This separation is deliberate, the database is the system of record, not a filesystem.

OrganizationAssetVersionFilesha-256LicenseUsage eventTrust ReportAssetowns1 ─ ∞1 ─ ∞1 ─ ∞metersscored bySimplified. Real schema adds organizations↔membership, licence↔royalty, and audit relations.
Core entities (simplified). Organizations own assets; versions carry files; licences meter usage; usage feeds royalties.

Notice what is derived rather than stored: a trust report is a function of an asset's evidence, a token balance is a function of a ledger, a royalty is a function of usage. The entities above are the facts; the numbers users see are computed from them.

Section 24

Security

Access to organization data requires both authentication and verified membership of that specific organization. Knowing an identifier is not access, identifiers appear in URLs and leak through logs and referrers, so membership is checked on every request, never inferred from possession of an id.

Agent credentials are encrypted at rest and never returned by any API. Any user-supplied URL the platform will call is validated against private address ranges, with DNS resolved and the resulting address checked, not merely the hostname string, to close off server-side request forgery.

Endpoints that accept a secret token from an unauthenticated caller are rate limited, as are operations that spend money with external providers. Security-relevant actions are written to an append-only audit log.

NOTE · Defence lines up with the principles

Every one of these is the same idea from Section 2 in a security costume: verify rather than assume (membership), keep the record immutable (audit log), and never trust a supplied value without checking it against reality (URL resolution).

Section 25

Economics

The two sides of the marketplace are charged differently, because they are different. Creators publish and license without a subscription; Origina earns its platform fee on royalties actually generated. Organizations consuming assets subscribe, with a monthly credit allowance included.

Charging supply an access fee before it has earned anything suppresses the very supply a marketplace depends on. Creators are already monetised through revenue share; charging them twice would be both unfair and self-defeating.

Usage is metered per event at fixed platform rates. Rates are not negotiable per licence, letting two parties agree an arbitrary rate would undermine a platform-level royalty architecture, since the same activity would be worth different amounts depending on who recorded it.

A third case sits alongside the two marketplace sides: an organization that uses Origina purely as infrastructure, serving its own agents to its own customers without listing anything. There is no royalty to share, so the platform charges a small per-call fee for what the gateway does on every call: meter it, hold it against a live bill of materials, and keep it in an exportable audit trail. The fee is a single platform lever, set deliberately far below the cost of building that metering, billing, and audit in-house, and it applies only forward, never to usage that predates it. This is what lets a company adopt Origina as a billing and compliance layer, not only as a marketplace.

Section 26

What exists today

Stated plainly, because a whitepaper that blurs the built and the planned is worth less than one that separates them.

Built & running

  • Dataset, Model & Agent registration
  • Versioning & release history
  • Secret & PII scanning on upload
  • Verification & Trust Reports
  • Testbed benchmarking (agents)
  • Licensing & agreements
  • File delivery (signed URL) & agent gateway
  • Royalty computation & payouts
  • Credits, subscriptions & invoicing
  • PayPal & Flutterwave payments
  • Public API, webhooks & machine identities
  • Origina SDK (Python)
  • License verification & deployment registry
  • Usage metering & reporting API
  • Gateway sessions & JIT agent sessions
  • Owner-metered gateway infrastructure fee
  • Plan-gated credentials & audit export
  • AI Passport & AI Bill of Materials
  • Notifications, append-only audit & export
  • Sentia grounded assistant

Planned

  • Remaining asset types (prompt collections, tools…)
  • Semantic search
  • Department budgets & approvals
  • External registry import

Reference

The dictionary

Every core concept in one place. Type tags: entity, process, money, record, rule.

Assetentityassets

The core unit: a dataset, model, agent, or (in time) prompt collection registered on the platform. Everything else, trust, licences, usage, royalties, hangs off an asset.

Datasetentityassets

A file-based asset: a corpus delivered as one or more files. Earns real integrity (checksum) and safety (secret / PII scan) evidence, and is delivered by short-lived signed URL. One of the three types registrable today.

Modelentityassets

A file-based asset: trained weights or artifacts delivered as files. Handled exactly like a dataset for delivery, integrity, scanning, verification, and royalties. Registrable today.

Agententityassets

A live, callable endpoint rather than a file. Delivered by proxy, and the only type eligible for the Testbed and the Agent Performance trust category. Registrable today.

Asset Typeruleassets

The technical form of an asset. Dataset, Model, and Agent are enabled now; PromptCollection, EvaluationBenchmark, KnowledgeBase, Workflow, Tool, Plugin, and SyntheticDataset are modelled for the future.

Asset Statusruleassets

The lifecycle state of an asset record: draft → pending_verification → verified → published → archived. The same for every type.

Versionentityversioning

An immutable snapshot of an asset at a point in time, with optional release notes. Assets evolve by adding versions; one may be marked the current published version.

Fileentitystorage

A stored artifact belonging to a version, referenced by a SHA-256 checksum. Files live in object storage; the database keeps only the metadata and checksum.

Security Scanprocesssecurity-evidence

Pattern-based detection run on every uploaded file for leaked secrets and personal data. Secrets block the upload; PII is graded (low / medium / high) and surfaced as trust evidence. Stores names and counts only, never the matched value.

First-Registration Certificaterecordassets

Origina's own generated attestation of who registered an asset first, offered when no formal licence exists yet. Not a licence in the legal sense, a verifiable record of first registration.

Verificationprocessverification

The automated evidence-gathering step that decides whether an asset has passed. Its result (approved / rejected / none) is worth 20 of the base 110 trust points and triggers a trust recompute.

Trust Reportrecordtrust

An immutable, versioned score (0-110, or 0-130 for agents) assembled from evidence categories, with a named level, warnings, and recommendations. Explains itself category by category.

Trust Levelruletrust

The named band a score falls into: untrusted (0-20), low (21-40), moderate (41-60), high (61-80), verified (81+). A reading of the number, not a separate judgement.

Evidence Strengthruletrust

How many of six independent dimensions are present (strong / moderate / limited / minimal). Reported beside the score, never mixed into it.

Testbedprocessbenchmarking

Runs real tasks against a live agent across capability areas and scores the responses, programmatically where a verifiable answer exists, otherwise by a judge model against a rubric. The overall score is the mean of the tasks. Agents only.

Benchmark Runrecordbenchmarking

A single recorded Testbed execution: the exact questions asked, the agent's verbatim responses, per-task scores and judge reasoning, and the averaged overall score.

Licenserecordlicensing

A granted, enforced usage right over an asset, held between two organizations. Moves through requested → approved → active → revoked / expired. Origina records and enforces it without being a party to it.

License Requestprocesslicensing

A licensee's proposal recording intended use; the owner approves or denies. Approval is what creates an actual licence, nothing is bought silently.

Gatewayprocessgateway

The access-checked delivery path. For files it authorizes every retrieval; for agents it proxies each call so the endpoint URL and credentials never reach the licensee.

Signed-URL Deliveryprocessgateway

How dataset and model files are served: the gateway checks the licence and mints a short-lived URL, and the bytes stream directly from object storage. When the licence lapses, new URLs stop being minted.

Gateway Sessionrecordgateway

A recorded, time-bounded delivery context through which files are served under a verified licence, so access can be scoped and closed.

Machine Identityentitydeveloper-platform

A non-human credential (with revocable secrets) that lets a licensee's backend authenticate to the gateway server-to-server, without a person in the loop.

Usage Eventrecordusage

An append-only record of one consumption, a retrieval, request, inference, or agent call, with an event type and quantity. The atomic input to every royalty.

Royalty Statementmoneyroyalty

An immutable statement turning a period of usage into money owed: gross = q × r, minus a platform fee, equals the creator payout. Cites the exact usage-event ids behind it. Born in draft; binding only once issued.

Platform Feemoneybilling

Origina's cut of gross royalty, 15% by default. Rounded first; the creator payout is the remainder, so the split always re-sums to the gross exactly.

Financial Periodmoneyroyalty

A reconciliation window that accumulates statements while open and locks on close. Reopening is a new recorded event layered on the lock, never an erasure of it.

Credit / Tokenmoneytokens

The unit a consuming organization spends on usage. Bought with money at a versioned rate ρ: floor on purchase, ceiling on spend. The balance is the sum of an append-only ledger, computed on read.

Token Exchange Rateruletokens

The admin-set, versioned price ρ in cents per token used for both conversions. Versioning it means a past transaction can always be re-explained at the rate that actually applied.

Subscriptionmoneysubscriptions

What a consuming organization pays to participate, including a monthly credit allowance. Creators do not subscribe, they are monetised through revenue share.

Invoicemoneybilling

A billed amount owed by an organization, payable online, with tokens, or via a payment provider. Distinct from a royalty statement, which is money owed to a creator.

Organizationentityorganizations

A company, institution, or team. The unit of ownership and of access, every asset, licence, and balance belongs to an organization, not to an individual.

Membershipruleorganizations

A verified link between a user and an organization, carrying a role. Access requires membership of the specific organization, checked on every request.

Permission / IAMruleiam

The role-and-permission model deciding what a member may do. Authentication answers who you are; IAM answers what you may do here.

API Keyentitydeveloper-platform

A credential letting external code act on an organization's behalf against the public API, scoped and revocable.

Webhookprocessdeveloper-platform

A subscribed outbound notification: when an event of interest occurs, Origina calls the developer's URL, with retries and delivery tracking.

Event Busprocessshared

The in-process publish/subscribe channel domains use to react to each other without direct calls. A producer never knows its consumers.

Audit Logrecordaudit

The append-only trail of security- and money-relevant actions. Cannot be edited, the record of what happened is itself immutable.

Sentiaprocesssentia

The platform's assistant surface, able to answer questions grounded in an organization's own real data through defined tools, bounded by the same access rules as everything else.

Colophon, every diagram in this manual is inline SVG run through a single hand-drawn filter; every formula is laid out in the browser; every number is the one the platform actually computes. Nothing here is a screenshot, and nothing can silently drift out of date.

Questions about anything in this document: hello@origina.cloud

PricingTermsStart free