# Minca > Minca is a protocol for shared spaces of signed records that sync peer to peer, and `@minca/core` is its TypeScript library. An app asks the person’s account home for access to some of their spaces, then reads and writes records there. Every peer checks every record, so there is no server to write. Every page below is Markdown. Start with the first three, then the topic for the task. The protocol's specification is under Optional: it is for implementing Minca, not building on it. https://minca.dev/llms-full.txt is every page but the spec in one file. ## Get started - [Understand Minca](https://minca.dev/understand.md): Minca apps keep their data in spaces that people own, not on a server you run. This page explains the few ideas everything else builds on. Read it first, then build a small app. - [Build an app](https://minca.dev/building-an-app.md): A Minca app keeps its data in the person's own spaces, not on a server of yours. On this page we'll build a small to-do list: connect, save a to-do, and show the list as it changes. - [Build with agents](https://minca.dev/agents.md): An agent can read and write in a person's spaces as them. It might be Claude in a chat app, a coding agent in your terminal, or a program you write. This page shows how to connect one, and what it… ## Docs - [Identity](https://minca.dev/identity.md): Accounts people bring with them. No user table, no passwords to store, no sign-up flow to build. - [Signing in](https://minca.dev/identity/sign-in.md): Most apps connect to the person's account home (Building an app). This page is for a page that keeps the account itself: an account home, or an app that signs people in on its own. createMincaAuth… - [Usernames](https://minca.dev/identity/usernames.md): A username, like leif@minca.social, is a name at a domain that leads to an inbox code. It lets someone find you by a name they can say aloud. This page shows how to look one up and claim one, and… - [Spaces](https://minca.dev/spaces.md): A group’s data, kept on its members’ devices and synced between them. The backend you’d otherwise build, once per group. - [Spaces](https://minca.dev/spaces/spaces.md): A space is a shared place: the records in it, and the people who may read and write them. On this page we'll make a space, invite someone to it, and then look at how a space decides who may do what. - [Contacts](https://minca.dev/spaces/contacts.md): A contact is someone you share a private space for two with. Use this page to ask someone you already share a space with to become a contact. For someone you share no space with, use their inbox. - [The inbox](https://minca.dev/spaces/inbox.md): An inbox is an address you hand out on purpose, so that someone you share no space with can ask to become your contact. They knock, you accept, and you both end up in a private space for two. - [Warrants](https://minca.dev/spaces/warrants.md): A warrant (std.warrant) is proof that an account's key signed something every peer refuses and no honest app would sign. Your app uses warrants to show the members of a space that someone broke… - [Records](https://minca.dev/records.md): Signed JSON that syncs. Write a record and everyone in the space has it; query it and your screen stays live. - [Records and queries](https://minca.dev/records/records-and-queries.md): A record is one piece of your app's data: a to-do, a vote, a message. This page shows how to write records, change them, delete them, and find them again with a query that stays live as they change. - [The query format](https://minca.dev/records/query-format.md): This is the full reference for the query JSON that node.records.query, watch and useQuery take. For a gentler start, see Records and queries. - [Direct messages](https://minca.dev/records/direct-messages.md): A direct message is text in a space that only some of its members can read: the people it is for, and whoever wrote it. Use it for a private word inside a shared space. Today it needs a private space. - [Collections](https://minca.dev/collections.md): Say what your data is, once, in the space. Every app and agent that opens it then knows how to read and write it. - [Collections](https://minca.dev/collections/collections.md): A collection is a named kind of record in a space, like a table in a database. You define one when your app keeps something of its own. For things many apps share, like events, comments and polls,… - [The standard library](https://minca.dev/collections/standard-library.md): The standard library is a set of ready-made collections for the things most apps keep: messages, events, tasks, files, reactions. When your app keeps one of those, use the standard one. Every… - [Proposing collections](https://minca.dev/collections/proposing-collections.md): A space can grow new collections without anyone deploying anything. Anyone in the space can propose them, and someone who may define collections applies the proposal. This is how agents add new… - [Blueprints and guides](https://minca.dev/collections/blueprints-and-guides.md): A blueprint (std.blueprint) proposes new collections for a space, and a guide (std.guide) says in words how some collections are meant to be used. Together they let a space grow without anyone… - [Permissions](https://minca.dev/permissions.md): Who may do what, decided by the group and enforced by every device. No admin backend to secure. - [Permissions](https://minca.dev/permissions/permissions.md): Every space decides who may do what in it, and every device enforces it. There's no server to ask and no admin panel to trust: a change that breaks the space's rules is refused by everyone,… - [Contracts](https://minca.dev/contracts.md): Rules every device checks the same way, so a result is a fact and not one app’s say-so. Like a smart contract, without a blockchain. - [Contracts](https://minca.dev/contracts/contracts.md): A contract says when a version of a record counts. Use one when every app must agree on something no single writer can be trusted with: a proposal that passes only with enough votes, a move that… - [Computed fields](https://minca.dev/contracts/computed.md): A computed field is a value every app works out from the records it holds, instead of one somebody writes. Use one for counts, tallies and flags that follow from other records, like "a to-do is… - [Automations and bots](https://minca.dev/automations.md): Things that happen by themselves: when records look a certain way, at set times, or when someone asks a bot. - [Automations](https://minca.dev/automations/automations.md): An automation does something when records in a space look a certain way. "When a poll has 10 votes, close it." "When someone mentions the bot, answer them." "When a channel passes 100 messages,… - [Bots and their connectors](https://minca.dev/automations/bots.md): A bot is an account of its own, added to a space like a member. A host can run it, or a member can, with minca agent --bot. What a bot does is decided by the space's automations that name it in by. - [Node actions](https://minca.dev/automations/actions.md): Actions are the node's operations written down as data: a name, a description and an input schema for each. The CLI, MCP and WebMCP all build their tools from this one list, so an agent sees the… - [Nodes and storage](https://minca.dev/node.md): The whole engine in one object: identity, storage, sync and encryption. The same node runs in a tab, a terminal, a server or an agent. - [The node](https://minca.dev/node/node.md): A node is what takes part in Minca for an account. It holds the account's spaces, signs what it writes, checks what peers send, and keeps everything in sync. Most apps never make one: the… - [Sync and storage in the library](https://minca.dev/node/storage.md): Where a node keeps its data, and how it syncs it. You rarely need this page to build an app. Read it to attach files to records, to know what a node keeps on a device, or to plug in storage of… - [Calls](https://minca.dev/calls.md): Voice and video in any space. No call server: devices talk directly. - [Calls](https://minca.dev/calls/calls.md): @minca/calls adds voice and video calls to a space. Anyone who belongs to the space can start a call, join one going on, or ring one person. There is no call server: each pair of devices talks… ## API reference - [@minca/core](https://minca.dev/api/core.md) - [@minca/calls](https://minca.dev/api/calls.md) - [@minca/calls/react](https://minca.dev/api/calls-react.md) - [@minca/core/inbox](https://minca.dev/api/inbox.md) - [@minca/core/node](https://minca.dev/api/node.md) - [@minca/core/schemas](https://minca.dev/api/schemas.md) - [@minca/core/session](https://minca.dev/api/session.md) - [@minca/core/storage](https://minca.dev/api/storage.md) - [@minca/react](https://minca.dev/api/react.md) ## Optional - [The Minca protocol](https://minca.dev/spec.md): This is the specification of Minca: what goes over the wire, what is stored, what is signed, and what every peer must check. It is written so that someone can build a client that interoperates… - [01 — Identity](https://minca.dev/spec/01-identity.md): An account is 16 random bytes. Every key the account uses is derived from them, so the same 16 bytes give the same identity on any device and any origin. This part specifies the seed and its… - [02 — Records](https://minca.dev/spec/02-records.md): A record is a signed, versioned JSON document in a collection of a space. This part says exactly what one looks like, how it is encoded, hashed and signed, which of its versions counts, how each… - [03 — Spaces](https://minca.dev/spec/03-spaces.md): A space is the container every record lives in. This part specifies what a space is and how its id is made; how roles, members and invites are recorded inside it and replayed into one answer about… - [04 — Network](https://minca.dev/spec/04-network.md): How peers find each other and talk: relays, of more than one kind, and the sealed messages peers meet with through them; using several relays at once; the relays a space names for itself; the… - [05 — Sync and storage](https://minca.dev/spec/05-sync-and-storage.md): How two peers that hold the same space find out which record versions each lacks and exchange them, and how what a node holds is kept where others can read it: the store and its entries, the data… - [06 — Nodes, sessions and apps](https://minca.dev/spec/06-nodes-and-sessions.md): This part covers what a node must do to act for an account: the session note it writes under, and what it keeps current for the account. Then the exchanges that let a program act without the seed:… - [07 — Inbox](https://minca.dev/spec/07-inbox.md): A DID is a name, not an address: it is on everything an account signs, so knowing it must not be enough to reach the account. Two people who share a space can become contacts through it, with a… - [08 — Hosting](https://minca.dev/spec/08-hosting.md): A host is a carrier (06 §4) that many accounts pay to keep their spaces online. This part is the exchange between a device and a host: subscriptions, payment, a space's own fund, and bots a host… - [09 — Contracts](https://minca.dev/spec/09-contracts.md): A contract says what a version of a collection must be to count: conditions over its body, the version before it, and other versions it cites as evidence. "A proposal passes with yes votes from… - [Threat model](https://minca.dev/spec/threat-model.md): What Minca defends, against whom, and where it does not yet. It is descriptive: it adds no rules of its own. Every part of the spec answers to it. A change that weakens a guarantee here, or gives…