Specification · Working draft v0.1 · 23 October 2026

OwnUX

An open specification for software that fits the person using it.

Pranav Goswami

Author · Founder, Satin

Working draft

Open for comment, not yet a standard

Proposed licence

Text CC BY 4.0 · schemas Apache-2.0

Interface DNA. One person’s preferences, encoded as six genes. Every product that supports OwnUX reads the same profile.

OwnUX was first introduced by Pranav Goswami in 2026 as a technology and open specification that lets people own their user experience across the software they use. It builds on decades of research into adaptive and accessible interfaces, cited in section 14.

Abstract

Software is designed once and used by everyone. People adapt to it: they relearn layouts, labels and journeys in every product, and the people with access needs, little time or an unfamiliar language pay the highest price. OwnUX reverses that relationship.

A person defines their user experience once, as a portable profile they own called Interface DNA. An application declares what it can do as a set of typed capabilities. A deterministic Experience Translation Engine composes an interface from the application’s own approved components to fit that person, and a runtime verifies every action against the application before reporting it done. This document defines the OwnUX model, its five components, its data and security model, and three levels of conformance that let products declare and prove support.

1. Introduction

Every product team designs for an imagined average user and for the administrator who configures the workspace. Beginners and experts share one crowded default. Someone who works across four tools learns four ways to do the same few things: find my work, change its status, set a date, see what is blocked. Organisations pay for this in onboarding, errors and support. People with access needs pay for it in exclusion.

There is already proof that a better model works. Operating systems let a person choose Dark Mode, larger text or reduced motion once, and the web exposes those choices to every site through user-preference media features such as prefers-color-scheme, prefers-reduced-motion and prefers-contrast. Millions of products now honour them. But those preferences stop at colour, contrast and motion. Layout, density, navigation, wording, guidance and language remain fixed by each vendor.

Thesis. An application’s capabilities, its presentation and a person’s preferences can be separated to a meaningful degree. If they are, software can render itself to fit each person while the application keeps full authority over data, rules and permissions. The thesis fails if the translated experience is less trustworthy, less accessible, slower or harder to understand than the original.

OwnUX is not a theme engine, an autonomous agent, a generator of free-form interfaces, or an accessibility certification. It is a contract between three parties: the person, who owns their preferences; the application, which owns its capabilities and data; and a runtime that translates between them and verifies everything it does.

2. Definition and terms

OwnUX is a human–computer interaction technology, open specification and design discipline through which a person defines their own user experience once, and software renders itself to fit it.

Applications declare their entities, capabilities, permissions and constraints. An OwnUX runtime translates them into interfaces shaped by the person’s preferences, current intent and context. The application keeps authority over data and permissions, and the original interface stays one action away.

TermMeaning
Interface DNAA person’s portable, inspectable preference profile: explicit settings and, later, optional learned suggestions. Never a hidden psychological profile.
CapabilityAn entity plus a permitted action on it, with input schema, risk level, preconditions, execution, verification and fallback.
Capability manifestThe declarative file in which an application, or an adapter for it, describes its capabilities.
SurfaceOne rendered OwnUX view, such as a task list or a task detail.
Experience Translation EngineThe deterministic engine that composes surfaces from capabilities, Interface DNA and context, using approved components only.
OwnUX RuntimeThe package that renders surfaces and runs the Action Broker. It runs in the Satin extension or in a product through the OwnUX SDK.
Action BrokerThe part of the runtime that validates, executes, verifies and audits every action.
Verified actionAn action executed through an authorised channel, confirmed by reading back the source state, and reported clearly.
Safe failureAn action that did not complete, where nothing false was claimed and a path to the original application was offered.
Locked surfaceA screen the application declares off-limits, such as billing, security or consent. It is never re-rendered.
DNA ShareThe consented, scoped and revocable transfer of selected Interface DNA values to an OwnUX-enabled product.
OwnUX-enabled · OwnUX ReadyA product that has integrated the runtime · a product that has passed conformance level L2 or above.

3. Design principles

Every part of the specification follows from eight principles. Where a design choice conflicts with one of them, the principle wins.

P1

The person is in control

Adaptation is opt-in, visible and reversible. Preferences can be seen, edited, exported and deleted.

P2

The source owns the truth

The application keeps authority over data, permissions and business rules. OwnUX never bypasses them.

P3

Verified, never assumed

Nothing is reported done until it has been read back from the source.

P4

No fake functionality

Every control maps to a real, available capability. Nothing is invented.

P5

Predictability over novelty

Layouts are stable and changes are explained. Key controls do not move on their own.

P6

Graceful failure

If a mapping breaks, adaptation stops and the original interface returns.

P7

Accessible by default

Keyboard operation, contrast, text size and screen-reader labels are part of every surface.

P8

Private by design

Preferences are local first. Work content is not collected. Sharing is scoped and revocable.

4. Architecture

OwnUX has five components: the capability model, Interface DNA, the Experience Translation Engine, the OwnUX Runtime and the conformance suite. The runtime is one codebase with two hosts. In the Satin extension, adapters bind existing third-party applications to the capability model through their official APIs. In the OwnUX SDK, a product binds its own API handlers and renders surfaces with its own design system.

The person

Sets preferences once

Interface DNA
  • Layout and density
  • Words and reading level
  • Interaction and shortcuts
  • Contrast, text size, motion
  • Language and locale
preferences in, surfaces out

OwnUX Runtime

Runs in the Satin extension or inside a product through the OwnUX SDK

Experience Translation Engine

Composes the interface

Action Broker

Executes and verifies

Policy

Risk, consent, locked surfaces

capabilities, actions and read-back

The application

Stays in charge

Capability manifest
Official API
Design system
Data and permissions
Conformance suite · ownux test checks the manifest, every action and the rendered surfaces
Figure 1. The three parties and the five components. Preferences flow from the person, capabilities from the application, and the runtime translates and verifies between them.
ComponentResponsibilityHost
Capability modelCanonical, app-neutral entities and actions that adapters and integrations bind toBoth
Interface DNAThe person’s preference profile, its schema, migrations and sharingDevice, opt-in sync
Experience Translation EngineDeterministic composition of surfaces from approved componentsBoth
OwnUX RuntimeRendering, the Action Broker and policy enforcementExtension or SDK
Conformance suiteAutomated tests for manifests, actions, permissions and accessibilityDeveloper tooling

5. The capability model

A capability is the unit of meaning in OwnUX. It names an entity and a permitted action, such as task.set_due_date, and carries everything the runtime needs to perform it safely: the input schema, a risk level, preconditions, how to execute, how to verify and what to do if it cannot. Canonical names let one interface pattern work across every product that binds to them.

ownux.manifest.ts
import { defineManifest } from "@satin/ownux";
import { api } from "./api";
export default defineManifest({
app: "acme-projects",
version: "1.4.0",
entities: {
task: { id: "string", title: "string", status: "enum", due: "date" },
},
actions: {
"task.set_due_date": {
input: { task: "task.id", due: "date" },
risk: "reversible_write",
preconditions: ["authorised", "unambiguous", "field_editable"],
execute: api.tasks.update,
verify: api.tasks.get,
fallback: "deep_link",
},
},
locked: ["billing", "security", "consent"],
});

Risk levels

LevelExamplesRuntime behaviour
readList tasks, open a recordNo confirmation
reversible_writeChange a status or a dateShow undo, verify by read-back
irreversible_writeDelete, close permanentlyExplicit confirmation, then verify
sensitivePayments, access sharing, securityOut of scope for adaptation unless the product allows it, always confirmed

For existing products, an adapter maps canonical capabilities onto the product’s official API. Adapters are declarative data, run by a generic interpreter, so they can be reviewed and tested like any other contract. They never use undocumented endpoints or read session tokens from a page.

6. Interface DNA

Interface DNA is the person’s side of the contract: a small, versioned, human-readable profile. It is explicit first. A person sets it in a two-minute setup or skips it, and can change any axis at any time. Products read only the axes they understand, and only the axes they have been granted.

AxisValuesWhere it applies
DensityComfortable, balanced, compactAll surfaces
NavigationTask-first, project-first, recent-firstNavigation and home
LayoutList, board, table (where representable)Collections
WordsPlain, standard, expert, always preserving meaningLabels and messages
InteractionKeyboard-first, pointer-first, mixed; shortcut schemeAll surfaces
GuidanceInline hints, walkthrough, minimalOnboarding and empty states
VisualContrast, text scale, reduced motionAll surfaces
LocaleLanguage, time zone, date format, week startText, dates and numbers
Change policyPreview first, manual presets, approved automatic rulesThe translation engine
interface-dna.json
{
"format": "ownux-dna/1",
"updated_at": "2026-10-23T10:00:00Z",
"explicit": {
"density": "compact",
"navigation": "task-first",
"layout": "list",
"words": "plain",
"interaction": { "mode": "keyboard-first", "shortcuts": "default" },
"guidance": "minimal",
"visual": { "contrast": "standard", "text_scale": 1.0, "reduced_motion": false },
"locale": { "language": "hi-IN", "time_zone": "Asia/Kolkata", "week_start": "monday" },
"change_policy": "preview-first"
},
"learned_suggestions": [],
"sharing": { "sync": false, "grants": [] }
}

Learned preferences are optional and arrive only as suggestions. The person can open “Why was this suggested?”, then accept, edit or decline. The format is versioned (ownux-dna/1) with defined migrations, so a profile outlives any one product.

7. The Experience Translation Engine

The engine turns capabilities and preferences into a surface. It is deterministic: the same inputs always produce the same interface, which makes surfaces testable, reviewable and predictable for the person using them. It composes only from components the product has registered, so an adapted interface still looks and behaves like the product, not like Satin.

Capabilities
Interface DNA
Current context
Component registry
Policies
deterministic templates

Compose

Choose layout, order, density, labels and controls from approved components only.

schema and policy checks

Validated surface

Rendered with the product’s own components. Anything invalid falls back to the native view.

Figure 2. Composition. Inputs are combined by deterministic templates, then validated against the surface schema and policy before anything renders.

Machine learning may propose layouts or explain changes, but it never authorises an action, chooses an endpoint or writes code into a page. Every proposal passes the same schema and policy validation as a hand-written template, and the engine must work fully without it.

8. The runtime and verified actions

Changing how software looks is easy. Changing what it does, safely, is the hard part. The Action Broker treats every write as a transaction with six steps, and a person is only told “done” after the result has been read back from the application.

  1. 1

    Resolve

    Find the exact entity. Ask when two things match.

  2. 2

    Check

    Confirm the person is allowed, and apply risk policy.

  3. 3

    Execute

    Call the application’s own API, never the page.

  4. 4

    Read back

    Fetch the entity again and compare.

  5. 5

    Report

    Say exactly what happened, or offer the native path.

  6. 6

    Audit

    Write a minimal event, with no content.

Verified: the read-back matches, so the person sees “Done”.

Safe failure: nothing false is claimed, and a link to the original app is offered.

Figure 3. A verified action. The broker never reports success from its own assumptions; it reports what the source confirms.

Correctness rules

  • Identifiers are never invented. Ambiguous matches are resolved by asking the person.
  • The source’s last-updated value is captured before a write. If it changed, the conflict is shown rather than overwritten.
  • Date-only fields receive date-only values, resolved in the person’s own time zone.
  • Retries are idempotent. A rate-limited or unavailable source produces a safe failure, never a false success.
  • Interface undo (a layout change) is kept separate from source undo (a data change).

Design targets for the runtime: a surface renders in under 300 ms from cached data and a verified action completes in under two seconds at the 75th percentile, with no measurable input latency added to the original page.

9. DNA Share

DNA Share connects a person’s profile to products that build OwnUX in natively, so a new product can feel familiar from the first minute. It uses OAuth 2.0 authorisation code with PKCE. The person sees every requested scope and can untick any of them. The product receives only the granted values, never usage history, other apps or work content.

1. The product asks

A person signed in to an OwnUX-enabled product sees “Use my OwnUX”.

Use my OwnUX
OAuth 2.0 with PKCE

2. The person chooses

Satin shows exactly what is requested. Any scope can be unticked.

dna:layout

dna:density

dna:words

dna:accessibility

granted values only

3. The product adapts

It receives only what was granted. Revoking stops access and obliges deletion.

{ "layout": "list",
  "density": 0.22,
  "words": "plain" }

No usage history, no other apps

Figure 4. DNA Share. Consent is per scope and revocable. Revocation stops access immediately and obliges the product to delete stored values.

Scopes map one-to-one to Interface DNA axes: dna:layout, dna:density, dna:words, dna:interaction, dna:accessibility and dna:locale. When the Satin extension detects a product with OwnUX built in, it stands aside so that a page is never adapted twice.

10. Infrastructure and data residency

OwnUX is local-first. For people using existing applications, the runtime calls those applications’ APIs directly from the person’s browser, so task titles, descriptions and comments never pass through Satin. For products with the SDK, the runtime runs in the product’s own frontend and data flows from the product’s backend as it always has.

The person’s device

  • Interface DNA (local by default)
  • Provider sign-in tokens
  • Work content, in memory only
  • The OwnUX Runtime

Satin cloud

  • Account and billing
  • DNA sync, only if switched on
  • DNA Share grants
  • Signed flags, metering counts

The application provider

  • All data and permissions
  • Business logic and API
  • Its own design system
  • Granted DNA values, if shared

Device ↔ provider: direct calls to official APIs

Device ↔ Satin: preferences and grants only

Work content never reaches Satin servers

Figure 5. Where data lives. Each kind of data has one home, and work content never reaches Satin servers.
DataHomeLeaves the device?Retention
Interface DNADevice; Satin cloud only if sync is onOnly with sync or DNA ShareUntil deleted
Provider tokensThe extension’s background workerOnly to the provider, or a stateless relay where requiredUntil disconnected
Work contentMemory and a short local cacheNoCleared on disconnect
TelemetrySatin cloudEvent names and error codes only90 days, then aggregated
DNA Share grantsSatin cloud; values held by the productGranted values onlyUntil revoked

Token custody and configuration

Where a provider supports public clients with PKCE, the extension completes sign-in itself and no Satin server sees a token. Where a provider requires a client secret, a stateless relay adds it and returns tokens straight to the extension without storing or logging them. Remote configuration carries flags only (a kill switch, adapter enablement and feature flags), is signed, and never adds new behaviour. Every change in behaviour ships as reviewed code.

11. Security model

OwnUX sits between a person and software they rely on, so its threat model is part of the specification, not an afterthought.

ThreatExampleMitigation
Hostile page scriptsA page sends forged messages to the extensionValidate sender and schema on every message; isolate surfaces in Shadow DOM
Token theftA page reads sign-in tokensTokens live only in the background worker; pages receive data, never credentials
Injection through contentA task title contains markup or a scriptEscaped rendering, no raw HTML, sanitised markdown
Prompt injectionA description tells an AI to reassign workContent is data; AI output is a validated proposal; confirmations apply
Tampered configurationA flag file is altered in transitSigned configuration with a pinned key; flags only, never code
Wrong workspaceAn action lands in another tenantWorkspace identity is part of every reference and is checked on read-back
Vendor misuseAn integration skips permission checksConformance tests include permission-denied cases; the SDK holds no authorisation logic

12. Conformance

Support for OwnUX is something a product proves, not something it claims. Three levels build on each other, and each is checked by the same open test suite.

L1

Declared

  • Valid capability manifest
  • Entities, actions and risk levels described
  • Locked surfaces listed

L2

Verified

  • Every action executes, verifies and falls back
  • Permission-denied paths are safe
  • Eligible for the OwnUX Ready badge

L3

Adaptive

  • Runtime integrated and honouring Interface DNA
  • Accessibility checks pass on rendered surfaces
  • Locked surfaces never re-rendered
Figure 6. The conformance ladder. Only L2 and above may display the OwnUX Ready badge, and the badge always states its level.
Terminal
$ npx ownux test
✓ Manifest valid L1 Declared
✓ 12 actions execute, verify and fall back
✓ Permission-denied paths are safe L2 Verified
✓ Accessibility checks passed on 9 surfaces
✓ Locked surfaces untouched L3 Adaptive
Eligible for the OwnUX Ready badge (L3).

13. Paths to adoption

OwnUX is designed to reach people through three paths, each useful on its own.

Path 1

For people, today

The Satin extension brings OwnUX to existing applications through declarative adapters over official APIs, starting with Jira Cloud and Linear.

Path 2

For products

The OwnUX SDK lets any product, from a project tracker to a government portal, offer every user their own experience under its own rules.

Path 3

For the platform

A proposal to extend user-preference media features beyond colour and motion, so browsers and operating systems can carry Interface DNA natively.

The third path is a long-term proposal, not a dependency. Features such as a density or reading-level preference would let any website honour part of a person’s Interface DNA without an SDK, in the same way prefers-color-scheme made Dark Mode universal.

14. Prior work

OwnUX stands on a long line of research and practice. Its contribution is the combination: a capability-translation layer between existing applications and the person, with portable, user-owned preferences, verified actions, a native fallback, and an open specification that vendors adopt and certify against.

WorkYearContributionHow OwnUX differs
Plastic user interfaces (Thevenin and Coutaz)1999Interfaces that adapt to context while preserving usabilityAdapts to a person’s portable preferences across independent apps
Model-based UI (CAMELEON; W3C notes)2003–2014Concrete interfaces generated from abstract modelsApplies the idea to existing apps with verification and fallback
SUPPLE (Gajos and Weld)2004Personalised interface generation as optimisationDeterministic templates, user-owned profile, verified actions
ISO/IEC 24751, Access for All2008A standard model of personal needs and preferences in e-learningAll software, beyond accessibility, with conformance tests
Ability-based design (Wobbrock et al.)2011Systems that adapt to the user’s abilitiesExtends to preferences and intent, and makes them portable
GPII and Cloud4all (Vanderheiden, Treviranus et al.)2011–2015Preferences stored once and applied on any deviceInside each app’s interface, with a vendor specification
Morphic (Raising the Floor)2019–Accessibility settings that follow a person between computersApplication layouts, navigation and actions, adopted natively
User-preference media queries (W3C)2020–Websites honour colour, motion and contrast settingsThe adoption model OwnUX extends to the whole interaction
Generative UI; malleable software; agent-to-UI protocols2024–2026Interfaces generated on demand; people reshaping tools; agents sending UIPerson-centred, stable and verified, for existing applications
Just-in-time interfaces (Bernstein)2026Interfaces created on demand for the taskA contemporary proposal; OwnUX centres a persistent personal profile

15. Open questions

This is a working draft. These questions are open for comment before version 1.0.

  • How should plain-language and reading-level transformations be measured and certified?
  • When organisational policy and personal preference conflict, which axes may each override?
  • How should shared devices and multiple profiles per person work?
  • Which standards body is the right long-term home for the specification and the preference features?
  • How should OwnUX interoperate with agent-to-UI protocols without giving up verification?
  • What is the right licence for the specification text and the reference schemas?

16. Attribution and citation

OwnUX was first introduced by Pranav Goswami in 2026 as a technology and open specification that lets people own their user experience across the software they use.

The specification is intended to be open so that anyone can implement it. Satin is its first implementation. When referring to OwnUX, please use the attribution above and cite this document.

Cite as: Goswami, P. (2026). OwnUX: An Open Specification for Software That Fits the Person Using It (Version 0.1, working draft). Satin.

BibTeX
@misc{goswami2026ownux,
author = {Goswami, Pranav},
title = {OwnUX: An Open Specification for Software
That Fits the Person Using It},
year = {2026},
month = {October},
note = {Version 0.1, working draft},
publisher = {Satin}
}
VersionDateChanges
0.123 October 2026First public working draft: definition, architecture, Interface DNA, verified actions, data and security model, conformance levels.