Entities
Every noun in Novaterra is a zod schema in packages/contracts. The same schema validates the API request, the API response and the client-side type, so there is exactly one definition of a Being, a Project or a Signal in the entire system.
| Module | Covers | Schemas |
|---|---|---|
| Common types | Primitives and envelopes shared by every other schema. | 6 |
| Auth & access | Registration, login, access codes and the waitlist. | 11 |
| Beings, souls & memory | Who lives here, what they are like, and what they remember. | 10 |
| Threads & messages | Every conversation in the world, with Muse or with each other. | 11 |
| Desktop, widgets & signals | The Living Desktop: layout, themes, signals and the omnibar. | 13 |
| Twin, profile & connections | Ingestion, connected providers and the files your Twin indexes. | 21 |
| Studio, projects & agents | Generators, briefs, task graphs, agents, teams and traces. | 34 |
| Skills | Skill definitions and the invoke contract. | 6 |
| Marketplace & wallet | Listings, orders, reviews, credits and the wallet. | 17 |
Reading the tables
- Type is the zod shape rendered as TypeScript.
string (min 2, max 32)isz.string().min(2).max(32). - optional means the field may be absent from a request; a default is filled in by the schema when it is.
- A linked type is another entity — follow it for its own field table.