Schemas
A schema is a type definition published to the store. Define a type once; every app that uses it references the same definition, and the OS generates language bindings at install. Schemas are what make Kiki apps interoperable by default.
The shape
A schema has an id, a version, and a JSON type definition. Its id is a versioned URL:
kiki://registry.kiki-os.com/schemas/audio-track@2.0.0The rule that makes it work
Any type that appears in the public surface of an app must have its schema published.
If a tool takes a TrackRef, returns a Note, or a share carries an Image, those types are published schemas. There are no private, undocumented types crossing app boundaries — so any app can understand any other app's data, and the agent can move data between apps reliably.
Bindings are generated for you
You don't hand-write types against a schema. When an app installs, the OS reads the schemas it references and generates native bindings in your language — Rust, Python, Go, or TypeScript. Your code uses a normal type; the store guarantees everyone agrees on its shape.
Versioning
A new version is a new artifact at a new URL; apps reference the version they were built against. The ecosystem can evolve a type without breaking apps pinned to an older version — they keep resolving the version they know.
How schemas power Kiki
- Sharing between apps matches sender to receiver by schema — the share sheet lists every app that accepts a compatible type.
- Tools use schema-derived input schemas so the agent's calls are well-formed.
- Components render schema-typed data.
Publish a schema like any artifact — see Publishing.