Osy#betaRun it on Osyrin: osyrin.com

Templates · Kits

Kits are finished pieces of an application.

Data, security, workflows, screens and tests — done once. Your application inherits them.

Osysharp.Mail isn’t a mail API library. Osysharp.Accounts isn’t authentication plumbing. Osysharp.Conversations isn’t a collection of messaging utilities. Each is a finished piece of an application that another application inherits with one line — and agents compose the kits and write what makes your application different.

  • 87 kits
  • 16 areas
  • 1,831 tests

Commerce 4

KitWhat it doesBuilds onTests
ShopOsysharp.ShopSourceAn online shop's backend — catalogue, bag, orders, pluggable payment and delivery providers, returns, mail and the staff desk — with its customers and staff signing in through Osysharp.Accounts.Identity, Accounts, PDF writer, Payments, Delivery, SEO, Analytics, Email templates, CSV, Markdown editor, Resend, Mailing lists, Site looks — the contract375
Discount codesOsysharp.Shop.DiscountsDiscount codes for the shop — percent, amount or free delivery, with limits and dates.Shop13
Product reviewsOsysharp.Shop.ReviewsProduct reviews for the shop — verified buyers only, moderated by staff, averaged for search engines.Shop, Identity, SEO20
SubscriptionsOsysharp.Shop.SubscriptionsSubscriptions for the shop — plans and add-ons per interval, entitlements, renewals, prorated changes.Shop, Payments, Email templates37

Service desk 13

KitWhat it doesBuilds onTests
InboxOsysharp.InboxWork queues, who holds what, and the service levels promised on it, over any item an app derives from WorkItem — and typed links between items, of kinds the app declares — with the screens a team works it from.Identity, Organizations, Organizations — customer accounts, Collaboration104
ConversationsOsysharp.ConversationsOne conversation across channels — a single ordered timeline of messages, notes and events per conversation, visibility per entry enforced by rules (internal never reaches a customer), channels as adapters (email, SMS), a chat widget for a page or as a launcher in its corner with the app's own help above the first message, unread chat replies mailed (or sent on whichever channel reaches the kind of contact point the app names) with a single-use continue link, parties proven by a mailed code and merged or unmerged, people copied in and taken off by the desk, a message split off into a conversation of its own (it moves, with its files and its mail thread), side conversations started beside one — mail to somebody outside or a thread inside the team, drawn as a card on its timeline that opens into its own thread, the other side never seeing the conversation it is beside, each customer answered in their own language with every message scrubbed of card numbers at rest, a redacted canonical copy in the shared memory corpus, files on messages — a pasted screenshot shown in place, a source file previewed with its lines coloured, a ZIP listed, every file a download readable exactly where its message is — and an erasure run that reaches every copy, recorded and run only as a privacy request's plan or a conversation's period says (Osysharp.Privacy.Conversations).Identity, Collaboration118
Conversations by mailOsysharp.Conversations.MailEmail as a channel for Osysharp.Conversations — replies through Osysharp.Mail's outbox, from the address the customer wrote to and threaded; a mail received continues its conversation; out-of-office replies and bounces recognised.Identity, Mail, Mail receiving, Conversations19
Conversations by textOsysharp.Conversations.SmsText messages as a channel for Osysharp.Conversations — replies through Osysharp.Sms's outbox from the app's own number, a text received continues that number's latest conversation within a window, carrier delivery reports, and a refusal of an alphanumeric sender that could never be answered.Identity, Text messages, Conversations7
Conversations in every languageOsysharp.Conversations.MachineTranslationThe app's own model as the translator of its conversations — a copy of every customer message in the desk's language and every reply in each customer's, through the app's key, router and budget; a missing key a state the desk is told about, never a lost message.Conversations, Machine translation3
CollaborationOsysharp.CollaborationWho else is on a record, live — a presence topic addressed by any record's id, staff-only by the app's own rule, each seat stamped with who by the platform and carrying an activity (viewing, replying, assigning) but never content; a seats strip for the record's header; and the 'moved first' sentence that turns a concurrency refusal into who changed which fields and when.Identity10
Composer — writing a replyOsysharp.ComposerWhere a person writes a reply to any record — saved replies with typed placeholders filled from the record (an unknown key refused when saved, an unfillable one refused at send), macros that stage the app's own verbs and run them with the send, markdown formatting with a bar and keys that act on the selection, drafts saved per record and per author that survive a reload (and a seam for a draft prepared by someone else), the writer's signature, files pasted, dropped or picked, and 'send and set…' as the app's choice.Identity30
Automations — rules that do the routine workOsysharp.AutomationsRules that do an app's own work when something happens — a trigger from any event about the record or the hourly clock, conditions on the record's own fields as the rule's author may read them (and how long it has waited), and steps that are the app's own [Action] functions with the choices they offer; run in order, as the person who saved them under their own security, loop-protected, each fire recorded; the app's rules declared in code, copied by the team or a person to change them (restorable, lockable).Identity26
NotificationsOsysharp.NotificationsTelling a person something needs them — a bell with a live count and a list (read and unread, mark all read), a daily mail digest of what they have not seen or a mention mailed at once (their own choice, in their own language), delivered durably after the commit, deduplicated while unread, and never about a record the recipient may not read under their own security.Identity, Mail, Email templates, Clock — the team's time zone and week23
Inbox reports — what the desk didOsysharp.Inbox.ReportsOsysharp.Reports sources for Osysharp.Inbox — arrived, done, first reply and time to done (median and slowest tenth), open now, and promises kept, by agent, queue, channel, organization, tier and priority.Identity, Organizations, Organizations — customer accounts, Inbox, Reports — build them, share them2
Inbox notifications — who the inbox names, toldOsysharp.Inbox.NotificationsThe inbox's people told in their bell — an item offered to them, work handed to them while its holder is away, a promise at risk or missed on what they hold, and a queue's leads when nobody picks an item up — in their own words and language, and never about an item they may not read; the leads are whoever the app's LeadsInbox policy says.Identity, Inbox, Notifications6
Feedback — how did we do?Osysharp.FeedbackAsking the person a piece of work served how it went — one good-or-bad answer and an optional comment per subject and person (held by the database), answered from a mail link with no account or signed in on the app's page, changeable for a while, applied durably after the commit, and read back as a summary: answered, good, week by week, recent comments.Identity, Mail, Email templates24
Knowledge base and help centreOsysharp.KnowledgeA knowledge base and its public help centre — markdown articles in categories and sections, drafts, numbered versions, review before publishing (nobody publishes their own words while review is on), a version per language with the original as fallback, team-only articles that never reach a customer or a search, search and suggestions as a person types — in each version's own language, so an inflected word finds its other forms, and by meaning once the app has an embedder — structured data and a sitemap for search engines, and the desk to write, review and arrange it all.Identity, Markdown editor, Stemming for search, SEO40

Payments 4

KitWhat it doesBuilds onTests
PaymentsOsysharp.PaymentsThe payment-provider contract — start, confirm, capture, refund, cancel and webhook events — plus manual payment.—4
StripeOsysharp.Payments.StripeSourceCard payments through Stripe — payment intents, checkout sessions, customers, refunds, verified webhooks, and a payments-contract provider.Payments44
KlarnaOsysharp.Payments.KlarnaSourceKlarna payments — a session, an order, and the capture/refund half that comes after.Payments32
SwishOsysharp.Payments.SwishSwish payments — a request to the payer's phone or a QR code, status asked of Swish over mutual TLS, and refunds.Payments28

Delivery 4

KitWhat it doesBuilds onTests
DeliveryOsysharp.DeliveryThe delivery contract — quote, ship, track and carrier events — plus flat-rate delivery and collection.—6
PostNordOsysharp.Carriers.PostNordPostNord parcels — booking with a PDF label, track & trace, service points, and a delivery provider.Delivery12
SendcloudOsysharp.Carriers.SendcloudSendcloud — many European carriers behind one API: labels, customs, tracking, returns, pickups, and a delivery provider.Delivery9
ShippoOsysharp.Carriers.ShippoShippo — USPS, UPS, FedEx and DHL Express behind one API: labels, customs, returns, tracking, and a delivery provider.Delivery8

Finance 3

KitWhat it doesBuilds onTests
BookkeepingOsysharp.Shop.BookkeepingA shop's books — SIE 4, CSV and the VAT report per rate — from its invoices and credit notes.Shop, Payments28
VIESOsysharp.Shop.ViesEU VAT-number checks against VIES — the shop's reverse-charge check.Shop3
ECB exchange ratesOsysharp.Shop.EcbThe European Central Bank's daily reference rates, for showing a visitor prices in their own currency.Shop3

Mail 10

KitWhat it doesBuilds onTests
Mailing listsOsysharp.MailingListsMailing lists — double opt-in, consent recorded word for word, signed unsubscribe and preferences, suppression of bounces and complaints, export and erasure.Email templates, CSV19
ResendOsysharp.ResendSourceTransactional email through Resend — one send or a batch, text and HTML, replies and attachments.—14
Microsoft 365Osysharp.GraphMicrosoft 365 through Graph — mail, calendar and files, as the signed-in user or as the app.—19
Email templatesOsysharp.EmailTemplatesMail that looks designed — a layout with preview line, logo and footer, headings, text, buttons, pictures and receipt lines, in the app's own theme — and the mail blocks staff arrange in a mail's region.—15
MailOsysharp.MailMail an app sends — one message shape, a pluggable sender, an outbox that delivers after the commit and holds mail when there is no sender; connected mailboxes it sends from (and, with Osysharp.Mail.Receiving, reads); MIME parsing and reply extraction.Identity26
Mail receivingOsysharp.Mail.ReceivingWatched mailboxes — new mail pushed (Gmail via Pub/Sub, Microsoft 365 via Graph) with a half-hourly safety net, or polled; each message kept once with its original, handed to the app's receiver after the commit, retried, failed with its reason, erasable by sender; and the settings page for whoever manages them.Mail23
Gmail mailboxOsysharp.Mail.GmailA Gmail / Google Workspace inbox as a mailbox for Osysharp.Mail — new mail pushed through Cloud Pub/Sub (polled without), replies sent from it, threaded.Mail12
Microsoft 365 mailboxOsysharp.Mail.Microsoft365A Microsoft 365 mailbox as a mailbox for Osysharp.Mail — new mail polled through Graph, replies sent from it, threaded.Mail12
IMAP mailboxOsysharp.Mail.ImapAny IMAP mailbox as a mailbox for Osysharp.Mail — new mail read over IMAP, replies sent over SMTP, threaded.Mail3
Resend mail senderOsysharp.Mail.ResendResend as a sender for Osysharp.Mail — threading headers and attachments included.Mail, Resend2

Text messages 3

KitWhat it doesBuilds onTests
46elksOsysharp.ElksSMS through 46elks — one message or a fan-out, with delivery reports and a dry run.—12
Text messagesOsysharp.SmsText messages an app sends — one message shape, a pluggable sender, an outbox that delivers after the commit and holds messages when there is no sender.Identity10
46elks text senderOsysharp.Sms.Elks46elks as a sender for Osysharp.Sms — Nordic alphanumeric senders, EU-only handling, and a dry run for staging.Text messages, 46elks2

Identity 8

KitWhat it doesBuilds onTests
BankIDOsysharp.BankIdSwedish BankID — auth and sign with animated QR or autostart, over mutual TLS.—17
Age check with BankIDOsysharp.Shop.BankIdAge verification with Swedish BankID — the shop's AgeVerifier, over mutual TLS.Shop, BankID11
IdentityOsysharp.IdentityWho signs in, and which of the app's roles each person holds — the base every people-aware kit builds on.—12
AccountsOsysharp.AccountsSign-in (password, or a provider such as Google or GitHub, linked from the account page), sign-up, password reset and change, verified address change (one the desk can start, confirmed from the new address) and verification, an address proven by a mailed link or code, two-step sign-in with an authenticator app and recovery codes, and a phone number proven by a texted code (to sign in with, or as an optional second step) — with pages — on Osysharp.Identity.Identity, Mail, Text messages, Email templates133
PeopleOsysharp.PeopleThe user manager: a searchable people list (roles, two-step sign-in, last sign-in, sessions), and audited access changes — grant and revoke the app's roles, deactivate and reactivate, reset a lost second factor, sign out everywhere, and the same within an organisation; API keys issued once and revoked at once, and integrations — programs that work under their own name with keys and a role and can never sign in — each one a record of who changed whose access, when and why, made only by the app's people managers.Identity, Accounts, Organizations, Invitations, Mail39
OrganizationsOsysharp.OrganizationsCustomer companies and internal teams: who belongs to which, roles held within one organisation (the app's own roles, scoped), mail domains that put a newcomer with a PROVEN address in the right company, and membership rows that remember their source and external id so single sign-on and SCIM can keep them in step.Identity17
Organizations — customer accountsOsysharp.Organizations.AccountsThe service each customer organisation gets — its tier, its entitlements (by tier or its own contract, for a period), its account team (owner, pod, backup) and its VIP people — set by the app's organisation managers alone, and carried for support and sales kits to route and promise by; with a settings page for the tiers.Identity, Organizations10
InvitationsOsysharp.InvitationsInvite a person by address with their role (and organisation) fixed when it is sent — mailed, reminded, expiring, revocable and resendable as a durable run; answered only by the invited address: a newcomer through a single-use mailed link, an existing account only once fully signed in (its second step included) and with that address proven.Identity, Accounts, Organizations, Mail, Email templates22

Privacy 8

KitWhat it doesBuilds onTests
PrivacyOsysharp.PrivacyWhat the app holds about a person and why it may keep it — a versioned holder contract every kit implements, categories with a retention basis and a period the tenant sets within declared limits (with jurisdiction presets and a fiscal-year-aware end date), requests that plan erase / keep restricted until a date / blocked per category and run as a workflow, a response that says what was erased and what was kept and why, an access and portability export, and a daily purge.Identity, Inbox, Mail71
Privacy — the account step-upOsysharp.Privacy.AccountsThe step-up for Osysharp.Privacy's self-service requests, from Osysharp.Accounts — a code to the account's own address, typed back, spent once by the request's run.Identity, Accounts, Privacy4
Privacy for conversationsOsysharp.Privacy.ConversationsOsysharp.Privacy's holder for Osysharp.Conversations — complaints kept RESTRICTED for legal claims — read only for a claim, every read logged — while the rest of a person's conversations, their contact points and the redacted copies are erased on request, a daily purge that ends every conversation's period, the app's own say on which conversations concern a claim, and a person with no account proving their address to ask for themselves.Identity, Conversations, Privacy23
Privacy for received mailOsysharp.Privacy.MailReceivingOsysharp.Privacy's holder for Osysharp.Mail.Receiving — the mail a person sent to the app's watched mailboxes, as it arrived, in their copy of their data and erased when they ask.Identity, Mail, Mail receiving, Privacy2
Privacy for notificationsOsysharp.Privacy.NotificationsOsysharp.Privacy's holder for Osysharp.Notifications — a person's notifications and their preferences, found by their account, in their copy of their data, kept restricted on request and erased when they ask.Identity, Notifications, Privacy3
Privacy for text messagesOsysharp.Privacy.SmsOsysharp.Privacy's holder for Osysharp.Sms — the texts the app sent a person, found by their number, in their copy of their data and erased when they ask.Identity, Text messages, Privacy2
Privacy for feedbackOsysharp.Privacy.FeedbackOsysharp.Privacy's holder for Osysharp.Feedback — a person's questions and answers about how it went, found by their account or a proven address, in their copy of their data, kept restricted on request and erased when they ask.Identity, Feedback — how did we do?, Privacy4
Privacy for the knowledge baseOsysharp.Privacy.KnowledgeOsysharp.Privacy's holder for Osysharp.Knowledge — the articles and versions a person wrote or published and the review steps they took, found by their account, in their copy of their data, their review notes kept restricted on request, and their name taken off everything when they ask to be erased while the articles stay.Identity, Knowledge base and help centre, Privacy3

AI models 5

KitWhat it doesBuilds onTests
AnthropicOsysharp.Models.AnthropicThe Anthropic Messages API as an app.Models Client — complete and stream, with prompt caching.——
Machine translationOsysharp.MachineTranslationLanguage detection that works offline (scripts, and the commonest words of twelve European languages) and translation through the app's own model — glossary terms kept as written, a missing key a state rather than an error.—15
OpenAIOsysharp.Models.OpenAiThe OpenAI Chat Completions API as an app.Models Client — and any endpoint that speaks its wire.——
GeminiOsysharp.Models.GeminiThe Google Gemini API as an app.Models Client — complete and stream, tools included.——
Model routerOsysharp.LlmRouterA cost-tiered model router: hard capability filters, a quality floor per task kind, then cheapest-admissible.——

Web 5

KitWhat it doesBuilds onTests
DNSOsysharp.DnsDNS records an app writes — one record shape, a pluggable provider, add-a-value TXT semantics, and a provider that keeps records in the app's own table.—8
Cloudflare DNSOsysharp.Dns.CloudflareCloudflare DNS as an Osysharp.Dns provider — records by the v4 API, TXT values added and removed one at a time, never proxied.DNS9
SEOOsysharp.SeoSchema.org structured data (JSON-LD) for a page's head — products, offers, articles, breadcrumbs, organizations.—5
AnalyticsOsysharp.AnalyticsWeb analytics — Plausible or Google Analytics 4: page views, e-commerce events, and consent before GA4 tracks.—3
Pages — the page deskOsysharp.PagesThe page desk: arrange each Region's blocks with generated forms and a live preview, site versions on a schedule, and a staff preview of the whole site.Markdown editor20

Data 10

KitWhat it doesBuilds onTests
Fields — custom fields and formsOsysharp.FieldsFields an app's admins add to its records without a release — text, numbers, yes or no, a choice, a date; required or optional; asked of outside people or kept for the team — on forms with conditions, every answer checked on the server and held to its kind on every write; each kind of record declares its own field and value types, so a value's security is its record's; with the question controls, the in-place editor for a record's fields, and the settings sections to define fields and forms.—16
SnowflakeOsysharp.Warehouses.SnowflakeSnowflake as a data source and an export destination: entities read from a warehouse, and changes merged into its tables.—2
DatabricksOsysharp.Warehouses.DatabricksDatabricks as a data source and an export destination: entities read from a SQL warehouse, and changes merged into its tables.—3
CSVOsysharp.CsvCSV in and out — quoted fields, Excel's separators and byte-order mark, formula-safe cells.—5
Webhooks — tell other systems, signedOsysharp.WebhooksOutbound webhooks — an administrator subscribes an endpoint to any of the events the app and its kits raise about a record; each one is sent as a JSON document signed the Standard Webhooks way under a secret shown once and kept sealed, delivered durably after the commit with doubling retries, given up on in the end and the subscription paused when it keeps failing, every attempt in a delivery log whose documents are removed after a short declared retention; only what the subscription's maker may read is ever sent; a settings page to add, test, pause, roll the secret of and remove subscriptions and to send a failed delivery again.Identity25
Activity — a record's timelineOsysharp.ActivityA record's timeline, from the events the app and its kits raise — one line per event on the record it is about and on each record it rolls up to, said in the reader's words from the event's own sentence, shown only to somebody who may read the record, kept for a declared time; one component to place it on a record's page.Identity5
Reports — build them, share themOsysharp.ReportsReports a team builds for itself — start from one thing the app keeps, pick fields by following its relations, group, measure (counts, totals, averages, medians and percentiles) and filter, all computed in the database as the reader may read it — read as figures, a table and a chart, exported as CSV, saved and shared by name.Identity, Clock — the team's time zone and week, Charts, CSV57
Clock — the team's time zone and weekOsysharp.ClockThe app's clock — the time zone its days start in and the day its week starts, picked by staff from the app's declared zones on one settings page and read by every kit that counts in days.—6
Stemming for searchOsysharp.StemmingWords in their base form for search — Snowball stemmers for English, Swedish, Danish and Norwegian and a light Arabic stemmer, so an inflected query finds the other forms of its words; any other language matched word for word.—6
Search testingOsysharp.Memory.TestingA deterministic, offline embedder for tests — a hashed bag of words — so a suite can assert what Memory.Search and [Searchable(Memory)] find without a model.—6

Storage 1

KitWhat it doesBuilds onTests
S3 and R2Osysharp.S3An app.BlobStore for S3-compatible object storage — AWS S3 and Cloudflare R2 — signed with SigV4.——

Documents 3

KitWhat it doesBuilds onTests
PDF writerOsysharp.PdfWriterSourceWrite a PDF — text in Helvetica, rules and pages — for receipts, invoices and slips.—5
PDF viewerOsysharp.PdfSourceA paged PDF reader over a FileAsset, canvas-rendered, with a real text layer.——
Markdown editorOsysharp.MarkdownEditorSourceA rich EDITOR over a Markdown property: rich and source modes, tables, maths.——

UI 5

KitWhat it doesBuilds onTests
ChartsOsysharp.ChartsSourceCharts in pure Osy#, no JavaScript: many mark types on one scale, plus pie and axes.——
Barcode scannerOsysharp.BarcodeSourceA live barcode + QR scanner: it owns the camera, decoding with ZXing.——
TranslationsOsysharp.TranslationsA translator's desk: untranslated and stale words and data in every language, and overrides that survive a recompile.—9
Flow canvasOsysharp.FlowA node/edge modelling canvas: pan, zoom, drag, connect — nodes rendered by the app's own Osy#.—3
Thinking orbsOsysharp.OrbsThinking orbs for waiting states — nine animated dotted spheres (searching, composing, weaving…) in pure Osy#, themed by tokens.—39

Designs 1

A look is a site’s whole design — its frame, its pages, its theme and fonts — installed like a kit and picked per version of the site in the back office. Looks sit on two contracts, and the general one is here:

A look How it all looksThe frame, the pages, the theme and fonts, a design of each block type — and blocks of its own. The shop template ships 10, as the worked example.
Category contract What a shop hasA row of products, the shelves, and the store’s frame, front page, listing and a piece’s page — 9 types. Osysharp.Shop.Looks
Beside it A café’s, a salon’s…Each kind of site declares what it has, on the same site contract below.
Site contract What any site hasA hero, a quote, a sign-up, a banner, a gallery, the strip across the top and the footer — 12 types. Osysharp.Site.Looks
A contract says what a block holds. A look says how it looks — checked by the compiler like a class against an interface.

Switching a version’s look

Changes
The frame and every page, each block’s design, the theme, the fonts.
Stays
Orders, stock, customers — and every word and photograph staff placed, the menu, the strip and the footer: they are kept as the block’s type and its values, so the new look redraws them.

A block type the new look has no design for is drawn in the shop’s plain design. A block only the old look had waits in the arrangement — the back office lists it before the switch, and it comes back with that look.

Make your own look

  1. Start a kit in your own namespace whose package.osy uses the site and shop contracts.
  2. Declare look Linen { … } and its theme: palette, type, corners.
  3. Draw the 7 parts of a store — the frame, the front page, a listing, a piece’s page — and the block types you want in your own hand.
  4. Ship its fonts with osy font add; add blocks only your look has.
  5. Install it in your store, photograph every page with osy test --pixels, and pick it in the back office.

Building a look, step by step · The shop’s 10 looks

KitWhat it doesBuilds onTests
Site looks — the contractOsysharp.Site.LooksThe general site contract for looks — hero, picture with words, quote, opening hours, address, sign-up, gallery, announcement, footer — as block TYPES each look draws in its own design.—8

Nothing matches. Try fewer words.

A kit’s description, what it builds on and its test count are read from the kit itself. Each kit’s name opens its page — its own README. Kits are ordinary source at version 0.x — complete as pieces, tested end to end, and still growing; read any line, override what you need, or take one over entirely.