46 — The applications
BuiltRendered from 46-the-applications-as-built.md in the public repository. Edits belong there.
The published catalogue holds ten packages: seven applications, which expose tools, and three extensions, which fill ports and expose no tools. This page lists them and states what installing one changes.
Each package is declared in micyte/tools/_packages.py. The facts on the application pages are read from those declarations.
Almanac
App. Farm fields and plots on the local domain, planting plans, and the taxonomy search. Almanac
Brevat
App. Products, stock, supply, sales and standing offers. Brevat
Claude
Extension. Fills ai_provider with Anthropic's Messages API. Claude
Director
App. A hosting instance's roster of the instances it established, and the registrar's profiles. Director
Enchir
App. Projects on the local domain and how the instance's website presents them. Enchir
FND Service
Extension. Fills email_provider and site_hosting with FND's hosted mail and website services. FND Service
Oveure
App. The local domain editor, the inbox, and the instance's automation and AI seams. Oveure
PIM
App. A hosted client's own account, website and mail. PIM
Published catalogue
Extension, not an application. Fills package_source with a pull-only reader of a publisher's catalogue; described on the marketplace page.
Quiar – Freelancer
App. Jobs, clients, canvassing and the schedule for an instance that sells services. Quiar – Freelancer
What installing changes
Installing does not add code; a declaration enables tools the build already holds (the marketplace). An install does two things:
- Writes
tool_exposurefor the package's tools, so the rail and the palette show them. - Provisions the tools' declared requirements: the blank documents they need, the
sourcesrows they read from other sandboxes, and the app sandbox if the package declares one.
It records the install under installed_packages in the instance's configuration. It grants nothing. Exposure is not authorization: datum writes are decided by the write policy (micyte/ports/datum_write_policy/), and external calls by the grant layer (the four layers). Both deny when no grant exists.
Uninstalling sets exposure to false. It deletes no data, and it leaves the sandbox's namespace claim (sandbox_namespaces) in place.
Why a tool shows on one sandbox and not another
instance_can_use(tool_id, *, held_documents, sandbox) in micyte/tools/_registry.py decides, per sandbox, whether a tool is offered. The rail and the palette both call it.
- Every document in the tool's
documentsmust be held. - At least one document in
documents_anymust be held, when the tool declares any. - Every field the tool writes must be writable in the sandbox's anchor. This check is skipped when no sandbox is given.
- When the store cannot be read (
held_documentsisNone), the answer is yes.
An application's tabs therefore vary with the selected sandbox. A tab is absent when the sandbox does not hold what the tab reads.
App sandboxes
A package may declare an AppSandbox. Its namespace names the field-registry namespace the sandbox's anchor uses:
""means inherit: the anchor is a copy of the instance's own core anchor, resolved per instance at install (Oveure, PIM).- A token names the anchor to copy:
registrar(Quiar),farm(Brevat).
scripts/bootstrap_app_sandbox.py performs the copy. An AppSandbox may also list documents beyond what its tools require (Brevat's plantings).
Scoped features
scoped_features with scope app_sandbox pins a tool to the app's own sandbox inside the hub. The same tool opened on its own still follows the instance switcher.
| Package | Scoped tool | In the hub | On its own |
|---|---|---|---|
| Quiar | calendar | This sandbox's schedule | All sandboxes, with toggles |
| Quiar | contacts_manager | This sandbox's contacts | Any contacts document |
| Oveure | lcl_editor | This sandbox's tree | The selected sandbox's tree |
Declared hubs and lineage
Almanac and Director are declared hubs (micyte/tools/_declared_hub.py). An AppDeclaration lists families; each family is a tool, a lifted tab of another tool, or a pane, optionally drawn only when a condition holds. The Domain tab is always last. An app that governs a channel also draws a Channel tab before Domain, which no declaration lists (91). An app may have several configurations (AppVariant); Director has two.
descends_from names one core package. It affects only where the marketplace draws the package and the manifest; it is one hop deep. Almanac descends from Oveure; Director descends from Enchir.