mfabric.
Set up MFabric without developer help. We’ll cover the boss machine vs. helper devices, checking your download is genuine, installing and joining, keeping the safe default, removing or revoking a helper, and what the public beta can do now: local model use when you already have model files, helper approval, telemetry, sealed storage, and bounded diagnostics for experimental lanes.
Host first, peers second
Host
On the machine you are actively using, run the signed Windows installer and choose Host / controller. It opens a local controller console with helper approval, device telemetry, local model inventory, local model load/chat when optional model dependencies are installed, and bounded beta diagnostics. Leave that console window open while helpers join.
Peers
Download the signed Windows installer or the manual zip on each helper device, verify the SHA-256 hash, run the installer or peer launcher, choose Helper / peer, paste the join link, and approve the peer on the host.
MFABRIC_BETA_SELF_SERVICE_CHECKLIST.md.Check the installer or zip before joining a peer
Compare the SHA-256 command output to the expected hash shown on the beta page or release note. On Windows, run the installer. On macOS/Linux/manual setups, extract the zip before running any launcher.
macOS / Linux manual zip
shasum -a 256 mfabric_public_beta_peer_current.zip
Windows PowerShell
Get-FileHash -Algorithm SHA256 .\mfabric_peer_setup_*.exe Get-FileHash -Algorithm SHA256 .\mfabric_public_beta_peer_current.zip
Good manual-zip extract locations
~/mfabric_public_beta ~/Downloads/mfabric_public_beta %USERPROFILE%\Downloads\mfabric_public_beta
Avoid
If you use the manual zip, do not run from inside a compressed-zip viewer. Do not extract into system folders such as /usr, /System, C:\Windows, or C:\Program Files.
Windows, macOS, and Linux are all supported
Two easy ways in. On Windows, the signed installer first asks whether this computer is the host or a helper. On macOS and Linux, the manual zip is two commands. Helpers land at the same join-link prompt.
Windows — easiest
Download the signed installer (mfabric_peer_setup_<version>.exe), check the publisher says Sfiniti AI Inc, and run it. It first asks whether this computer is the Host / controller or a Helper / peer. Choose host on your main machine to open the local host console. Choose helper on other machines to install the helper runtime and paste your host join link. Prefer no installer? Extract the zip and double-click packaging\windows\START_MFABRIC_PEER.cmd instead.
macOS / Linux
python3 -m pip install -r requirements-agent.txt python3 mfabric_peer_bootstrap.py --join-url PASTE_HOST_JOIN_LINK --detach
Phone client is control, not a peer
MFABRIC_PHONE_CLIENT.html is a lightweight phone or desktop browser client. It does not make the phone contribute storage, compute, or memory. It sends chat requests to a configured MFabric host gateway.
Same network
Start the host gateway, open MFABRIC_PHONE_CLIENT.html, enter the host gateway URL, press Check Gateway, then send a small prompt.
Cellular
Put the host gateway behind a private mesh tunnel or authenticated HTTPS endpoint. Start the gateway with exact-origin CORS and bearer-token auth, then enter that URL in the phone client.
Run a private model from browser or phone
Steps
Start the host gateway on the model machine, confirm the dashboard says healthy, open MFABRIC_PHONE_CLIENT.html, enter the gateway URL, enter the model id shown by the host, and send a small prompt first.
Verified adapter row
The host package may show a model-specific verified row when that adapter has passed its own validation. Treat each model family separately.
What the dashboard means
Labels vary by build: the public beta host console presents this information in its Connected computers and Telemetry panels; dashboard builds use the labels below. The meanings are the same.
| Area | Meaning |
|---|---|
| Active Peers | Enrolled peers currently responding to the host. |
| Memory Pool | Storage budget the fabric can use on joined peers. This is not OS RAM. |
| Transfer Rate | Live observed read/write traffic. Idle systems show near zero. |
| Virtual Fabric View | Planning view of host plus reported peer resources. It does not modify OS RAM or VRAM. |
| Context Estimate | Rough planning tier based on the current peer pool. The model and adapter set the actual limit. |
| Safe default | Consumer jobs use the standard safe path. Advanced private controls are not exposed in this package. |
| Fallback and activity events | Writes, reads, and peer misses. A miss means the host will try another eligible source. |
| Worker remove / revoke | Remove clears a worker from this dashboard view. Revoke is done in the host control panel credentials table. |
Safe default stays simple
Safe default
DefaultUse this for normal consumer work. The public package keeps advanced private controls out of the dashboard.
Advanced host controls
PrivateIf a private host build exposes an experimental path, it should document that path separately from this public manual.
Remove from view is not revocation
Remove
Use Remove on the dashboard when a one-off worker is cluttering the current view. This does not stop the worker and does not revoke access.
Revoke
Use the host control panel when a device should no longer be trusted. Open the credentials table, find the peer, and choose Revoke.
What you can do
Run local AI
One computer is enough — no peers needed to chat. Load a model in the host console (greyed-out entries show the reason they cannot load), press Get a starter model (~1 GB) if none is on disk, or add your own API key, then chat or batch from the host. Keep the safe default.
Use private knowledge
Keep retrieval and answer validation in the application. MFabric moves corpus chunks, cited evidence, and result manifests with hash checks.
Run a training diagnostic
Use the host console’s bounded adapter-shaped diagnostic to confirm the training lane is wired on this machine. Helper-orchestrated training needs a host-side adapter and explicit worker setup.
Plan science campaigns
Use MFabric’s manifest and queue shape for campaign-style work where a host package or adapter defines the job. The public beta does not ship a full solver integration.
Plan media workflows
Use the same manifest/artifact pattern for trusted render workers when a host package defines the renderer integration.
Use a trusted external GPU
Use the workhorse join packet and bounded work diagnostic first. Real external GPU jobs require approved model files, a configured worker, and host-side manifest policy.
Checking experimental availability
Some capabilities in MFabric are still being hardened. The console provides an availability check so you can see the current status without guessing. A “not available in this build” result is an honest boundary, not an error.
Memory-sharing availability
Memory-sharing keeps your older context alive instead of silently dropping it. When local memory fills up, stale context you are not actively using moves into pooled memory on approved helpers, so your context is maintained without losing the old one. Because the pool holds stale context, this is a continuity feature, not a speed feature. It is an opt-in preview in this build.
- Open the host console and go to the Experiments section.
- Click Check availability next to the memory-sharing option.
- The console returns a status message. If it says “not available in this build”, the serving path for this experiment is not active yet.
- Alongside the boundary, Check availability prints a capacity readout — this machine’s GPU memory, how many approved helpers you have, and the estimated pool — so you still get a real answer about your setup.
- This capability is being hardened; check the release notes for when it becomes a default option.
2Big2Fit (split model) availability
2Big2Fit lets you run a model too big for one machine by splitting it across your devices: the host distributes the model across multiple trusted machines for capacity experiments when no single machine has enough memory.
- Open the host console and go to the Experiments section.
- Click Check availability next to the 2Big2Fit (split model) option.
- The console returns a status message. If it says “not available in this build”, the serving path is still a preview and not active by default.
- Alongside that boundary, Check availability prints a capacity readout for your actual setup: the model size vs this machine’s GPU memory, approved helpers, the estimated pool, and a fits / too-big verdict with a recommendation.
- This capability requires approved helpers with compatible hardware and is being hardened; treat it as an experiment, not a production path.
What we verify (the privacy model)
The bring-your-own-key path is tested by an adversarial gate (MFABRIC_FRONTIER_ESCALATE_GATE, 11 checks) before release: your key is carried in a request header only and never appears in /health, logs, URLs, or redirect targets; the connection goes directly to your provider over TLS with proxies and redirects disabled; sfiniti/mfabric hosts are refused by a denylist; upstream errors are sanitized.
After any session you can download a privacy receipt from the console (“Where your answers went” → Save privacy receipt): a JSON attestation of what stayed local and what went to your provider, citing the gate ID and the adapter’s SHA-256 — and never containing your key. The adapter itself ships in this bundle as readable Python (mfabric/frontier_escalate.py), so you can read the code in the trust path before you run it.
With a key configured you can chat even before any local model is loaded — those answers go directly to your provider and the console labels them as such. No model on disk at all? The model picker offers “Get a starter model” (~1 GB, Qwen2.5-0.5B-Instruct, fetched from huggingface.co only when you press the button; nothing loads until you press Load). While it downloads, the console shows live progress — MB downloaded of ~1 GB, a percent, and elapsed time — and the rest of the console stays usable.
Extraction tip: the zip already contains a mfabric_public_beta folder — extract to the current directory (Expand-Archive mfab.zip -DestinationPath . on Windows) and cd mfabric_public_beta; extracting into a folder of the same name double-nests it.
macOS note: use Python 3.11+ (Homebrew’s /opt/homebrew/bin/python3.12 works) and run pip install cryptography before host start — python mfab_cli.py doctor checks both. On first run, start from a normal Terminal window: macOS will ask to Allow incoming connections for Python — click Allow (headless/SSH sessions cannot show that dialog, so the host times out there until you have approved it once).
Common issues
Peer does not show up
- An approved peer is counted immediately (the approved-helpers count goes up); its own card appears once its runtime reports presence. A missing card right after approval is normal.
- Confirm the peer window is still open.
- Confirm the join request was approved on the host.
- Check local firewall prompts for Python.
- Re-copy the join link and run the peer launcher again.
Peer shows up but does not work
- Some peers are storage-only.
- A peer may be low battery, active, offline, or not eligible for compute.
- The workload may require a specific host-side adapter.
- If fallback events appear, the host is recovering from a peer miss or unavailable worker/path.
- Keep the workload on the standard safe default unless the host operator explicitly enables an experimental path.
Transfer rate is zero
That is normal when no workload is moving data. Run a workload or block-transfer test to see activity.
Pooled memory looks small
MFabric displays the storage budget allocated to the fabric, not every byte of physical RAM on every peer. The context estimate is a planning tier, not a promise that every model can use that much context.
Use these unless you know why not
- Start with the safe default.
- Use wired Ethernet or the fastest eligible GPU as leader when speed matters.
- Keep peers plugged in for long jobs.
- Treat phones as control screens, not execution nodes.
- Use the dashboard to remove one-off workers from the view when a test is done.
- Use the host control panel to revoke a worker that should no longer be trusted.
What MFabric is not yet
- The current Windows installer is signed. SmartScreen reputation and broader fresh-machine, reboot, and uninstall coverage remain beta boundaries. macOS/Linux is still a manual package setup.
- Not an iPhone peer app — phones are control screens only.
- Not a public GPU marketplace. Helpers are devices you personally trust.
- Not a model server by itself. The helper helps; the host runs the model.
- Not automatic extra RAM for every app on your operating system.
- Not a replacement for your own validators, solvers, or render engines.
Step-by-step for common tasks
Approving a folder for remote access
The host console can let an approved helper read files in folders you choose. Nothing is shared until you pick a folder.
- Open the host console in your browser.
- Find the Choose folders section in the Exec Scope panel.
- Press Browse to open a folder picker, or type the path directly into the path box.
- Confirm the folder appears in the allowed-folders list.
- To remove access, click Remove next to any listed folder.
Connecting another computer
Adding a second machine takes three steps. The join link is the only path that adds a machine in this beta — there is no add-by-address box.
- On this computer’s console, open + connect another computer (near the bottom of the page). It shows this machine’s join link and a ready-to-copy join command.
- On the OTHER machine, from its extracted
mfabric_public_betafolder, run the copied command:python3 mfabric_peer_bootstrap.py --join-url <this computer's join link> --detach - Back on this console, the machine appears under Waiting for approval — press Approve. The approved-helpers count updates immediately; the machine’s own card appears once its helper runtime starts reporting in.
Using the native runtime route for dense models
The native runtime route is a faster local execution path for dense Qwen2 and Qwen3 models with a hidden size up to 2048 (roughly 3B parameters and below). Models above that size use the standard path automatically.
This route is validated in the closed release tree but is not included in the currently published helper zip or Windows installer. Those downloads use the standard path (you will see runtime_route: hf_generate) until the trusted-signed closed binary refresh is published.
- Scan your local models using the Load a local model panel. Entries that cannot load are greyed out with the reason: not a chat model (speech/embedding), config only — weights not downloaded, or won't fit — needs ~X GB, GPU has Y GB.
- Select a dense Qwen2 or Qwen3 model and press Load.
- Send a chat prompt. When the model answers, the response details line shows a
runtime_routefield such asqwen2orqwen3for the native path, orhf_generatefor the standard path. - You do not need to configure anything. The console picks the native path automatically when the model qualifies, unless you set
MFABRIC_PUBLIC_DISABLE_NATIVE_RUNTIME=1to force the standard path. - Larger models (hidden size above 2048, such as 7B+ dense Qwen) use the standard path automatically; the response details will show
hf_generatefor those.
Checking memory-sharing availability
Memory-sharing keeps your older context alive instead of silently dropping it: stale context moves into pooled memory on approved helpers, so your context is maintained without losing the old one. Continuity, not speed. It is an opt-in preview in this build. Full steps are in the Experiments section above.
- Open the host console and go to the Experiments section.
- Click Check availability next to the memory-sharing option.
- The console will return a status message. If it says “not available in this build”, the serving path for this experiment is not active yet.
- Alongside the boundary, Check availability prints a capacity readout — this machine’s GPU memory, how many approved helpers you have, and the estimated pool — so you still get a real answer about your setup.
- This capability is being hardened; check the release notes for when it becomes a default option.
Checking 2Big2Fit (split model) availability
2Big2Fit (split model) experiments run a model too big for one machine by splitting it across trusted devices when no single machine has enough memory. Full steps are in the Experiments section above.
- Open the host console and go to the Experiments section.
- Click Check availability next to the 2Big2Fit (split model) option.
- The console returns a status message. If it says “not available in this build”, the serving path is still a preview and not active by default.
- Alongside that boundary, Check availability prints a capacity readout for your actual setup: the model size vs this machine’s GPU memory, approved helpers, the estimated pool, and a fits / too-big verdict with a recommendation.
- This capability requires approved helpers with compatible hardware; treat it as an experiment, not a production path.
Understanding the streaming indicator and TTFT
The chat panel can stream tokens as they arrive rather than waiting for the whole answer. This makes responses feel faster even when total generation time is the same.
- Send a prompt in the chat panel.
- A streaming badge appears next to the response header only when tokens are arriving in real time. An answer that arrives all at once (buffered) shows no badge — that is the normal delivery in this build, not an error or a downgrade.
- When an answer streams, a TTFT readout (time to first token, in milliseconds) shows how long the console waited before the first token appeared. A lower number means a faster response start.
- Buffered delivery happens when the model or peer does not stream token-by-token, or when the whole answer arrives before the first render cycle. Nothing is wrong; only the on-screen typing effect differs.
- Both modes produce the same answer. Streaming only changes when characters appear on screen.
12 in / 48 out / 60 total · tokenized — prompt tokens in, completion tokens out, the total, and whether the count was tokenized or estimated.Checking live device telemetry
The telemetry panel shows real-time GPU memory, CPU load, and health for every approved device in your fabric.
- Open the host console in your browser.
- Scroll to the Telemetry section (or click its link in the capabilities panel).
- Each device card shows GPU memory used, CPU percent, and whether the device is currently online.
- The small sparkline graph shows recent GPU memory use over time.
- If no telemetry appears, the device may be offline or not yet approved.
Running a batch of prompts
The batch panel runs several prompts at once and returns one result list.
- Open the host console and go to the Agent swarm or batch panel.
- Type or paste your tasks, one per line, into the task input box.
- Press Run. Each task is sent in parallel and tracked as a separate row.
- When all tasks finish, each row shows the answer, the tier it used, and how long it took.
- Press Clear to reset the list before the next batch.
Checking for a newer version
MFabric does not check for updates automatically. Use this step to check manually whenever you want.
- Open the host console.
- Click Check for updates in the header bar, or open the Check for a newer version capability panel and press Check for update.
- The console fetches the public update manifest. No device info, model list, or local paths are sent.
- If a newer build is available, the status line shows the version number and where to download it.
- If you are already on the latest build, the status line confirms that.
Using mfab from the terminal
mfab is a thin command-line wrapper over the host console APIs. The browser console and the CLI use the same endpoints — the CLI is for users who prefer a terminal. The host must be running for models and chat to work.
Install
The current manual package includes the CLI script. From the extracted folder run python mfab_cli.py doctor, then python mfab_cli.py host start. The next self-contained closed binary build exposes mfab directly without a repository checkout.
# current manual package python mfab_cli.py doctor python mfab_cli.py host start # self-contained binary package, once published mfab doctor mfab host start
Five steps to your first chat
- Check the environment:
mfab doctor - Start the host:
mfab host start --detach - List local models:
mfab models list - Load a model:
mfab models load <model-ref> - Send a prompt:
mfab chat "What does MFabric do?"
Quick start (from --help)
python mfab_cli.py doctor check this machine is ready
python mfab_cli.py host start start the console
(Ctrl+C stops it; --detach = background)
python mfab_cli.py host open open the console in your browser
python mfab_cli.py chat "hello" talk to the loaded model
on another computer:
python mfab_cli.py helper join <join-url from the host console>
Available commands: doctor · host · helper · peers · models · chat · gateway · update · logs · config · experimental.
Stream tokens
mfab chat --stream "Summarize what a private fabric does"
Tokens appear as they arrive instead of waiting for the full answer.
Check for updates
mfab update
Fetches the public release manifest. No device info, model list, or local paths are sent.
mfab prints a friendly error and exits nonzero — no raw Python traceback.%LOCALAPPDATA%\mfabric on Windows and ~/.mfabric on macOS/Linux (helper state under ~/.mfabric/peers). Delete that folder too for a clean removal. Local answer memory lives in runtime_durable_memory next to where the host ran.Sfiniti.ai home · MFabric beta · Updates · Report an issue