Fabric
The Fabric tab inside Operations is where you configure the cross-machine substrate — the peer-to-peer mesh that lets one Stallari instance span the user’s own Apple devices. See the Cross-machine concept page for the substrate picture; this page describes the in-app controls.
A fabric is local-first. Each Mac keeps its own encrypted control-plane ledger, and the ledgers converge over the fabric transport. The shared control plane records which devices belong to the fabric, which device is the sponsor, which keys each member uses for encrypted replication, and which members have been revoked. Content such as memories and activity data uses its own encrypted replication path; the Fabric tab is where the device trust and transport side is made visible.
What Lives Here
Section titled “What Lives Here”| Control | What It Does |
|---|---|
| Transport | Picks the mesh transport the fabric uses to connect the user’s devices. The platform supports a default peer-to-peer option; advanced configurations may add a relay or self-hosted transport. |
| Pads | Collaborative documents shared across the user’s fleet. Configure the pad transport here before pads become usable on the Home pane. |
| Federated chats | Inter-device or inter-fabric chat channels. Requires a configured transport. |
| Device list | Devices currently enrolled in this fabric. Shows member identity, reachability, and whether the device is still trusted. |
| Create a fabric | Starts a new fabric when this Mac is not yet a member of one. The local helper creates the fabric identity and the first signed membership record. |
| Invite a device | Opens a short-lived join window. Stallari shows a QR code or invite link plus a separate confirmation code. |
| Join a fabric | Lets a second device consume the invite, prove it has the shared fabric key, and ask the sponsor to mint a signed membership record. |
| Evict a device | Revoke a device from the fabric. See Cross-machine for what eviction does and does not do. |
Single-Device Users
Section titled “Single-Device Users”If the user runs one device, the Fabric tab has very little to configure. Transport is moot, pads sync to nothing, federated chats have no peer. The tab still exists and the substrate still runs — it just has nothing else to coordinate with.
The user with multiple devices gets cross-machine reach the moment a second device is enrolled here under the same identity.
Creating And Joining
Section titled “Creating And Joining”To add another Mac, start on a device that is already in the fabric:
- Open Operations -> Fabric on the existing device.
- Choose Invite a device and leave the join window open.
- On the new device, open Stallari and choose to join an existing fabric.
- Scan the QR code or paste the invite link.
- Type the short confirmation code shown on the existing device.
- Wait for both devices to show the new member in the Fabric device list.
The QR/link does not silently enrol a device by itself. It carries encrypted key material and a sponsor address. The confirmation code unwraps that material on the joining device, and the joining device then sends a signed enrolment request back to the sponsor. The sponsor verifies the request, signs the membership record, and returns it to the joining device. Both devices then replicate the signed control-plane record through the fabric.
If the invite expires, generate a new one. That is normal: join artefacts are intentionally short-lived.
Identity And Trust
Section titled “Identity And Trust”Every device in the fabric has its own member key. The fabric also has a shared sponsor key that acts as the trust root for membership records. A new device joins only after explicit enrolment from an existing device. There is no auto-pairing.
During join, Stallari proves two things:
- The joining device controls its own member key.
- The joining device has obtained the fabric key through the QR/code flow or an already trusted local keychain context.
After admission, devices continue to verify signed membership and revocation records rather than treating a local config row as authority. This is why a stale device can still appear as a network endpoint but fail trust checks: reachability and membership are separate facts.
See Cross-machine for the trust posture in detail.
Keychain Prompts During Join
Section titled “Keychain Prompts During Join”On macOS, a new member joining through the UI may ask for the login Keychain password more than once. Seeing three prompts during the first join on a freshly installed or newly signed build is expected.
Those prompts are macOS authorising access to Stallari’s local Keychain items. They are not a Stallari account password and they are not three separate enrolments.
The join path touches Keychain material in a few distinct places:
| Prompt Source | Why It Happens |
|---|---|
| Existing device / sponsor helper | The existing device reads the fabric sponsor key to generate an invite and later sign the joining member’s record. |
| Joining app | The joining UI unwraps and stores the shared fabric key, creates or reads this device’s member key, and signs the enrolment request. |
| Post-join bearer exchange | After membership succeeds, Stallari fetches and stores a bearer so the two devices can make authenticated local API calls without repeating the full enrolment flow. |
macOS may treat the app and the local helper as separate signed clients of the same Keychain service. It can also ask again after an update because the signed binary changed. Once the user allows the current signed Stallari components to access the items, later joins and routine foreground checks should be quieter.
If the same prompt loops continuously, or the join fails immediately after a Keychain prompt, check that the installed app and helper are from the same signed build, then restart Stallari and try a fresh invite.
Federation Is A Different Concept
Section titled “Federation Is A Different Concept”The Fabric tab configures cross-machine — one user’s instance reaching across that user’s own devices. Federation — joining one user’s fabric to another’s, in families, organisations, or guilds — is a separate concept with its own identity story. The Fabric tab does not (yet) configure federation; see Federation for the distinction.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Where To Check |
|---|---|
| Pads section empty | Transport not configured. Set transport first. |
| Federated chats unavailable | Transport not configured, or no peer enrolled yet. |
| Invite expired | Generate a new invite from the existing member. Join links are intentionally short-lived. |
| Keychain password requested several times | Expected on first join or after a signed update. The app and helper are being authorised for different Keychain reads/writes. |
| Keychain prompt loops forever | Confirm the app and helper came from the same signed install, restart Stallari, then create a fresh invite. |
| New device gets “no fabric to join” | The invite may point at a sponsor whose helper is not reachable. Keep the sponsor device awake with Stallari running, then refresh the invite. |
| Device shows but is unreachable | Network path, then bearer state. Beacon (local discovery) should find devices on the same network without further configuration. |
| Device shows but is not trusted | Membership and reachability are separate. Refresh the Fabric view; if the member was revoked, re-invite it rather than copying config rows between devices. |
| Eviction did not remove the data | Expected. Eviction is a trust action, not a data wipe. See Cross-machine. |
Advanced users can also use the CLI diagnostics in CLI Reference to compare what each device believes about its fabric membership and encrypted replication path.
Related concepts
Section titled “Related concepts”- Cross-machine — the substrate picture for the fabric
- Fabric — the glossary definition
- Federation — the between-fabrics concept the Fabric tab does not configure