Developer platform
Add OwnUX to your product without moving your business logic. A typed SDK, one manifest and clear checks.
SDK: in development · Spec: v0.1 draft · CLI: preview. Packages stay private until launch.
Excerpts of the real starter files. Unfinished steps are marked, and block the check.
Three ways to start. Pick by how much you control. All three read ownux-dna/1.
No code
When the private beta opens soon, install Satin for People, the Chrome extension, and set your OwnUX once. It will work in supported apps without their makers' help. Planned for the beta: if your product adopts the SDK, the extension will see the ownux-enabled marker and stand aside.
<meta name="ownux-enabled" content="ownux/1; sdk=0.1.0">
In development · Jira Cloud first, Linear next
Satin for PeopleA ready-made adapter
Satin builds adapters for popular work apps: declarative mappings to each app's official API, bundled in the extension and never downloaded at runtime. Each runs a health probe on start, and a signed kill switch can turn one off.
adapter → official API → verified read-back
Jira Cloud first · Linear next · Asana a possible third
Tell us which app you needBuild your own integration
Declare your capabilities, connect them to your API with createIntegration, render with your own components, and run ownux test until it says Publishable: yes. Your API keeps every permission check.
npx ownux init src/ownux --app <product-id>
SDK alpha · React 19
Start with the manifestThe platform at a glance. Four parts. The quickstart takes about an hour read-only, an afternoon for changes.
@satin/ownux
AlphaRenders OwnUX surfaces with your own components, through your own API.
<OwnUXProvider manifest={manifest} binding={binding} // from createIntegration, memoized per session components={plainRegistry} // later: your own component for each primitive appName="Acme Projects" user={{ id: currentUser.id }} onNativeView={() => showProductView()}> <OwnUXSurface template="task_list" /> <OwnUXSettings /></OwnUXProvider>- the first framework; a React-free entry holds the manifest and integration
- React 19the first framework; a React-free entry holds the manifest and integration
- gzipped without React, against a 60 KB budget
- 52.8 KBgzipped without React, against a 60 KB budget
- primitives, each one mapped to your own component
- 17primitives, each one mapped to your own component
For AI coding tools
Written for the assistant in your editor. Every failed check says how to fix it, so the loop converges.
AGENTS.md is complete on its own and indexed by llms.txt. Once the SDK is published, npx ownux init writes starter files with each step marked TODO(ownux). Done means npx ownux test ends with Publishable: yes.
- Seven rules never to break. First: your API decides permissions.
- Failed checks print Fix: and carry fix in --json.
- Agents given only the package passed; 23 rough edges fixed.
- Run
- Fix
- Edit
- Publishable
Example session. Each failure and fix is worded exactly as ownux test prints it.
Where things stand. Satin is pre-launch. Here is what exists and what is planned.
In developmentOwnUX SDK, @satin/ownux. An alpha runs in the Reference App: verified changes, rollout with a holdout, template pinning, local metering and signed configuration. React only for now.
In developmentownux test v0. Checks L1 Declared and L2 Verified against your test environment, in plain words or JSON.
In developmentReference App. A complete task tracker on the SDK, run locally on ports 5173 and 8787.
PlannedDeveloper portal. Organisations, keys, manifests, conformance status, rollout and invoices.
PlannedL3 Adaptive conformance, DNA Share, and holdout measurement with design partners.
PlannedPublished packages. Everything is private and 0.x today; nothing is published before launch.
- SDK size, gzipped, without React
- 52.8 KBSDK size, gzipped, without ReactBudget: 60 KB, checked on every build
- canonical capabilities
- 6canonical capabilitiesThree reads and three changes, frozen as v1
- checked by ownux test v0
- L1 + L2checked by ownux test v0L3 Adaptive waits for Beta
- verified change round trip
- 2 sverified change round tripDesign target, p75
Developer questions, answered.
No. OwnUX calls your existing API handlers through createIntegration. Your API keeps every permission check. A change counts as done only when your own get shows the new value.