Vyre / Architecture / Records
Records, one of the four pillars.
Records: every kind of business object, linked into one graph.
A Space defines its own types, fields, groups and links, as many as its business needs. The kernel keeps the rows and judges every read and write, whether a person, an agent or a Flow makes it.
One token reaches across your data.
A Link field points at another type. A token walks those links, so a task can print its client’s phone without anyone copying it. Flows and Documents use the same tokens.
- The shape is object, link, fieldThe nested form is
{object.link.field}, as in{project.client.phone}. A token reaches up to three links deep. - Links go both waysA link to many records adds a named inverse field on the target, so a client lists its projects without a second definition.
- One copy of the truthA phone changes in one record and every Flow and document that reads it prints the new number.
Animation: a token walks three linked records
What a type holds.
A flexible objects layer, declared in data.
A type is a row of its own kind, so a Space adds one in Settings, under Objects, without a developer. Every Space starts with the core types: contact, organization, task, project, event, template and the rest.
Fields, twenty kinds
Text, rich text, number, money, boolean, date, date and time, choice, multi-choice, rating, URL, link, actor, file, address, phones, emails, URLs, stage and sealed.
Field switches
Required, unique, hidden (the data stays), hidden from named roles, visible if, required if, computed, and a group.
Groups
Fields sit in groups on the record page, so a long type stays readable.
Links and inverses
One type links to another, one or many. Links chain: a task to a project, the project to a client, the client to an organization.
Stage sets
One type can follow several tracks. While a condition on a record holds, it follows that set of stages. The first set that holds wins.
Views
A type stores its own views: list, board, calendar, page or dashboard, with columns, grouping, a filter and a sort. Pin one to the sidebar.
Sealed fields
A field that holds a reference, not the value. A model sees whether it is present and valid, never what it says.
Tags, import, export
A # in the chat composer puts a record, a whole object or a template’s projects in front of the AI. Import takes CSV or Excel. The web app exports CSV.
The data model.
Types, links and totals, in one diagram.
A type definition holds fields, stages, stage sets, views, rules and groups. A role on a type, such as client or prospect, says it points at a contact or organization. The types below are an example.
- Stage sets pick the track.A residential-job track and a commercial-job track can live on one type, chosen by a field on each record. The stage field offers every stage name across the sets.
- A computed field can total.It can sum the records that link to it, such as the fees of every project of a client.
- Kits bring a starting point.A Kit adds types, Flows and Playbooks for a kind of business. A person adds their own in Customize.
- Edits do not collide.An update carries the version it read, and a stale one is refused as a version conflict.
How access is decided.
The kernel judges every call.
The records tool opens a door that builds the caller’s own chain in the Space the call names. A person in the app, an agent in a session and a Flow step go through the same check.
- 1The callerA person, an agent or a Flow step names a records tool.
- 2The doorBuilds the chain from facts the daemon verified itself.
- 3The kernel checksThe action (read, create, update, remove, restore, define), the role, which roles may see a field, sealed fields and rules.
- 4The gateway writesOne gateway handles every record read and write, and keeps links and inverses in step.
- 5The logEach change is an event with who, what, when and the chain.
- A hidden field is hidden from the call, not the screen.A role in a field’s hidden-from list never receives that field, from the app or from an agent.
- Deletion has two doors.Remove sends a record to the Bin and restore brings it back. Forget destroys a record, its history and its sealed values, needs a person’s presence, and an agent can only propose it, which makes a task.
- Module-kept types stay private.Types that a module keeps, such as skills and chat records, are open to that module and to owners and admins.
- A team member reaches the team’s server.Member calls pass through a door that refuses any other caller and strips keys a member may not send.
Sealed fields.
A secret in a record, that a model cannot read.
- 1A person enters the valueThe sealing process receives it. The record keeps only a reference.
- 2A model reads the recordIt sees whether the field is present and valid, and a placeholder where the value would be.
- 3An outward call names the fieldThe kernel resolves the placeholder only inside that call, under the asking person’s chain.
- 4A person says yesThe call is held for approval. Revealing the value on screen is a separate act that needs fresh presence.
In the app.
The Records screen, with sample data.

An agent works with records as the person it works for.
- Read and write within the grants
records.list,records.get,records.create,records.update,records.linkedandrecords.referencerun as the person, within that person’s access. - Set it up with your AIAn AI a person connects over MCP works through the same door and checks as the app, so the kernel decides what it may define. The Engineer, a built-in agent, proposes changes and applies none.
- The person’s own acts
records.reveal,records.seal-putandrecords.forgetstay with a person. An agent proposes a forget.
- 1
- Pick a CSV, an Excel sheet or paste rows
- 2
- Match each column to a field
- 3
- Every row is checked before it is added
- 4
- Rows are added one by one through the same create a form uses
Coming next
- 0.5.1: per-record privacy for the types you define, and write-once fields.
Direction, not a shipped feature. Dates and scope live on the direction page.
Bring your own software stack, or build a module.
Vyre can be extended by integrating your Zoho, QuickBooks, RingCentral and the rest of your software stack*. Today, for behaviour a type cannot hold, such as a nightly rollup or a check against an outside list, a custom module adds a tool on your records.
*where the vendor provides an API
- Coming in 0.5.2
- Integrations, packaged as modules, for the software a firm already runs.
- Today
- A connection in the Vault plus a Flow web step, or a custom module. It passes through the same grants and checks as any other.
- Over MCP
- An AI agent connected over Vyre’s MCP can help set this up. It acts as the person who connected it, within its key’s reach, and the Gate still holds anything that leaves.
Connects to.
How it fits with the rest of Vyre.
Code paths: kernel/gateway/records.js · kernel/gateway/links.js · kernel/contracts/fields.d.ts · lib/sealed.js · kernel/core/fields.js