MiCyte

← The wiki

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:

  1. Writes tool_exposure for the package's tools, so the rail and the palette show them.
  2. Provisions the tools' declared requirements: the blank documents they need, the sources rows 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 documents must be held.
  • At least one document in documents_any must 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_documents is None), 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.

PackageScoped toolIn the hubOn its own
QuiarcalendarThis sandbox's scheduleAll sandboxes, with toggles
Quiarcontacts_managerThis sandbox's contactsAny contacts document
Oveurelcl_editorThis sandbox's treeThe 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.