Skip to content

The Entity Builder ​

Entities in the sidebar of an app workspace is where record types are built. The rail on the left has one icon per type and a + for a new one; each type has four sections: Overview, Fields, Views and Relations.

The overview of a type

A new type ​

The New entity dialog

SettingMeaning
Display nameWhat one record is called ("Task")
ID prefixThree characters, unique in the app. Record ids start with the app's prefix and this code. It cannot change after a release
SlugThe type's name in addresses (/acme/main/task/all)
Inherits fromThe type it extends. The default, the base entity, gives it name, summary, description, labels, files and more
CategoryData: records each workspace makes for itself. App data: records the app ships to its installers
Other workspaces can add recordsSee below
Offered to peopleSee below
InteractionWhat clicking a record does, usually "Navigate to detail view"

Who may add records ​

A type is either one that people fill in wherever the app is installed (tickets, projects) or a list its owner maintains (the statuses a ticket can have). The switch Other workspaces can add records says which. With it off, installers see the records and choose from them but get no "+".

Offered to people ​

Where a person is asked to pick a type - what a fleeting note becomes, what a report counts - only the types switched to Offered to people are listed. Switch it on for what people make and look at themselves (tickets, customers) and off for the lists and parts behind them (ticket statuses). It is on for a new type. It decides nothing about who may add records: that is the switch above.

Tools for agents ​

Give agents tools for this type gives agents connected through the MCP server a create_… and a search_… tool made for this type, with its fields as parameters.

Show in sidebar ​

Adds an item for the type's list to the Apps group of every workspace that installs the app.

Fields ​

The fields of a type

The list on the left has the type's own fields; inherited ones come from the parent type. A field has:

SettingMeaning
Name and descriptionWhat people see
Storage keyThe name the value is stored and addressed under
Field typeText, text area, number, percentage, yes/no, date, date and time, time, e-mail, URL, enum, or a related object (a select whose choices are records of another type)
Related entityFor a related object: the type whose records are the choices
Base fieldWhere the value is kept. The default, extended_columns, needs no thought
Required, Visibility, Edit policyExpressions; the links under each fill in the common cases (always / never)
Default value, Derived valueA starting value, or an expression that computes the value
TranslatableOffers a text field for translation

Add field asks for the name, the key and the type:

Adding a field

A new field is not shown anywhere until it is placed in a view.

Relations ​

A relation joins a type to another: a customer has tickets.

A relation of the Customer type

SettingMeaning
PredicateWhat kind of relation it is ("has children")
DirectionWhich end it is read from
Cardinality1:1, 1:N or N:M
Metadata fieldsValues that belong to the link itself, like "role on the team"

Like a field, a relation shows up once it is placed in a view, as a line on the record's page or as a tab. Without that it is still there: see the graph.

Saving ​

Each panel has its own Save. Changes are made on the branch you are on, so the usual applies: commit, and merge or release. On a branch you may not change, the builder can be looked through but not used.

Every picture on this site was saved by a test that had just seen the feature work.