96 — Accounts, hosting and access
DesignedRendered from 96-accounts-and-hosting.md in the public repository. Edits belong there.
This page states what an account is for, the ways an instance is hosted, what a host must provide, and which parts are built.
The model
- The software needs no account. An instance someone runs holds its own records at its own address.
micyte/registers tools, channels and packages without an identity provider. - An account is a person's sign-in to an instance someone else runs: their own instance hosted for them, or the instance of an organization they belong to. An account is free.
- A hosted instance is what is charged, for the storage, compute and traffic it uses. Prices are stated by the host, not by this wiki or by micyte.com.
- Services are ports. Mail, website hosting and payments are filled by extensions (92). An instance can be configured to use them or not.
- The registrar is a parameter. The network is instances that connect directly, plus a registrar that resolves an msn to an instance.
micyte/domains/registry/engine.pytakes the registrar asauthority_msn_id. Anyone can run a registrar. Fruitful Network Development runs the registry micyte.com reads and publishes the package catalogue.
Ways an instance is hosted
| Hosting | What it means |
|---|---|
| Local | The software on a machine the owner controls. No account. A registrar is needed only to be found by other instances. |
| A third party | Someone else runs instances for their clients. |
| Fruitful Network Development | FND runs the instance and provides the three things below. |
A host other than the owner must provide:
- Accounts and sign-in. The software opens a session against an instance; who may open one is the host's policy.
- Port routing. Binding an extension to a port and granting its functions are two separate acts by the host operator (92).
- Updates. Someone decides when an instance moves to a new release. The catalogue is pull-only (93).
Access surfaces for a hosted instance
| Surface | State |
|---|---|
| Browser | Built. The portal, signed in through the instance's msn_profile. |
| Local sync | Not built. A local copy of a hosted instance kept in sync, so the records are reachable without the network and without the host. |
| Mobile | Not built. |
A session is opened against an instance, which is identified by its msn_profile. That is also the document Director opens when a host looks at an instance it hosts.
MiCyte Lite
A free account is a small instance shown through a reduced surface set. SURFACE_SET_LITE in micyte/state_machine/portal_shell/shell_registry.py: build_portal_surface_catalog(surface_set="lite") returns three surfaces: Network, Profile and Utilities.
- Profile is the client's profile.
- Utilities is the instance diagram drawn with
static=True: no links and nothing focusable (92). There is no Marketplace tab. - Network is the map without the icons that open other surfaces.
The host decides which sign-ins get Lite. A request for a surface outside the set is refused, not just hidden from the rail.
Using a host's services from an instance the host does not run
micyte/adapters/hosted/ holds a transport (HostedServiceClient, which authorizes before it sends), a credential file (HostedServiceCredential: base URL, alias and the key the host issued) and two adapters, HostedEmailAdapter and HostedSiteAdapter, that call the host's <base>/<port>/<action> door. The fnd_service package fills email_provider and site_hosting for instances FND hosts (FND Service).
Not built
- Self-serve account creation. The host's operator establishes each account.
- The hosted adapters as a catalogue extension. The Ports surface cannot build them yet.
- A host setting for the registrar. The host uses a constant default; no configuration key names another registrar.
- Person-level accounts on the network. Network participation is per instance. It depends on discovery and magnet resolution (90).
- Enforcement of base-plan allowances. The free allowance is enforced by the host; base-plan amounts are displayed, not enforced.
- Local sync and a mobile app, above.