mfabric.

user guide / operating manual

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.

Back to beta page public beta setup package safe default
1
start here

Host first, peers second

Just one computer? That's the fastest start — and it's enough. Run the installer, choose Host / controller, and go straight to Run local AI: load a model you already have, press Get a starter model (~1 GB) if you have none, or add your own API key and chat right away. Helpers are optional; add them any time.

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.

The public beta download covers the first-run setup flow. On Windows, the signed installer first asks whether this computer is the Host / controller or a Helper / peer. Choose host to open the local controller console for pairing, telemetry, local model load/chat, and bounded beta diagnostics. Choose helper to continue to the join-link flow and wait for approval. On macOS, Linux, or manual setups, use the zip and included launchers.
MFabric does not change the RAM shown by Windows, macOS, Linux, or Android. MFabric-aware adapters and queues use the pooled fabric.
For friend-install rehearsal, fresh Windows join, reboot persistence, and signed-installer readiness, use MFABRIC_BETA_SELF_SERVICE_CHECKLIST.md.
2
download and verify

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.

3
peer install commands

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
The host console supplies the real join link, and the host must approve the pending helper before it can participate; the approved count updates immediately, and the helper’s card appears once its runtime reports presence. The Windows installer is Authenticode-signed by Sfiniti AI Inc; SmartScreen may still warn while the app builds reputation, and the clean-machine install/reboot/uninstall test is still in progress.
N
advanced private networking

Join trusted computers across locations

Shared carrier-NAT addresses remain blocked by default. After installing and signing in to the same owner-controlled private mesh on both machines, configure only the participating numeric addresses on every machine.

Prefer exact addresses

mfab config set trusted_networks 100.x.x.10/32,100.x.x.11/32
mfab config set advertise_host 100.x.x.10
mfab host start --open-browser

Set advertise_host to that machine’s own mesh address. Repeat on the helper with its own address, copy the new host join link, and approve the helper normally.

Tailscale range

Tailscale IPv4 uses 100.64.0.0/10. The broad CIDR is convenient but is also the carrier-grade NAT range, so exact /32 entries are safer. This version accepts numeric addresses, not MagicDNS names.

The tunnel does not replace MFabric trust. Join-link scope, host approval, signed credentials, permission separation, and revocation remain active. Compute helpers may receive assigned weights and model-internal tensors. Keep mesh ACLs restricted and never publish raw MFabric ports to the public Internet.
P
phone access

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.

LAN discovery does not cross cellular networks. Do not expose a raw unauthenticated gateway port to the public internet.
M
private model gateway

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.

Measured dense Qwen2 and dense Qwen3 checkpoints can use the public native runtime route when the public native files and optional model dependencies are present. Private accelerated paths are not product defaults and are not exposed as consumer package controls.
The browser or phone is a control surface. The model and private data stay behind the host gateway. MFabric is not tied to one model family; each adapter needs its own live validation before promotion. Qwen3-MoE and Qwen3.5 hybrid attention remain fallback paths in this public beta.
D
dashboard

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.

AreaMeaning
Active PeersEnrolled peers currently responding to the host.
Memory PoolStorage budget the fabric can use on joined peers. This is not OS RAM.
Transfer RateLive observed read/write traffic. Idle systems show near zero.
Virtual Fabric ViewPlanning view of host plus reported peer resources. It does not modify OS RAM or VRAM.
Context EstimateRough planning tier based on the current peer pool. The model and adapter set the actual limit.
Safe defaultConsumer jobs use the standard safe path. Advanced private controls are not exposed in this package.
Fallback and activity eventsWrites, reads, and peer misses. A miss means the host will try another eligible source.
Worker remove / revokeRemove clears a worker from this dashboard view. Revoke is done in the host control panel credentials table.
⇄
safe default

Safe default stays simple

Safe default

Default

Use this for normal consumer work. The public package keeps advanced private controls out of the dashboard.

Advanced host controls

Private

If a private host build exposes an experimental path, it should document that path separately from this public manual.

⊘
remove / revoke

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.

Use Restore removed to show it again if it is still present in discovery.

Revoke

Use the host control panel when a device should no longer be trusted. Open the credentials table, find the peer, and choose Revoke.

After revocation, rerun or restart the peer only with a fresh approved join.
Remove, Restore removed, and the credentials table are dashboard-build features. The public beta host console governs trust at approval time instead: nothing joins without your Approve, a Reject turns a request away, and a stopped peer cannot rejoin without a fresh approved join.
✶
workflows

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.

A normal model app that has no MFabric adapter will not use the peer pool.

Use private knowledge

Keep retrieval and answer validation in the application. MFabric moves corpus chunks, cited evidence, and result manifests with hash checks.

MFabric is the transport and recovery layer, not the answer validator.

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.

Experimental support. Not a one-click full distributed training product yet.

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.

MFabric can coordinate and preserve solver jobs when an adapter exists. It does not automatically turn every solver into a distributed solver.

Plan media workflows

Use the same manifest/artifact pattern for trusted render workers when a host package defines the renderer integration.

MFabric is not the renderer by itself. Render speed and generated quality depend on the configured worker.

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.

The beta worker does not download arbitrary models and does not run arbitrary code from jobs.
▲
experiments

Checking experimental availability

Some capabilities in MFabric are opt-in or still being hardened. The console provides an availability check so you can see the current status without guessing.

Memory-sharing private experiment

The Qwen2/Qwen2.5 fixture can keep a bounded recent KV context on the model device and store older exact pages as authenticated encrypted blocks on approved storage helpers. A real model has not cleared both long-context generated-token quality and speed against exact execution, so this is not a promoted consumer route.

The consumer console deliberately provides no activation or availability controls for this lane. Ordinary chat stays on the exact local route. The adapter remains available only to its private evidence gate under an explicit experimental configuration.

Boundary: This is not pooled operating-system RAM, a speed claim, or a promoted consumer feature. It remains unavailable to ordinary consumer use until a real-model row clears both quality and speed.

Run 2Big2Fit across trusted computers

2Big2Fit assigns contiguous layer ranges of one dense Hugging Face model to trusted compute helpers. Each helper keeps only its assigned model layers and the K/V for the current driver session. Authenticated hidden-state frames move between stages; storage-only helpers cannot be selected.

  1. Cache the same Hugging Face model snapshot on the host and every compute helper, then join and approve each helper with compute permission.
  2. Set the same private 24-or-more-character MFABRIC_2BIG2FIT_STAGE_TOKEN environment value on the host and every selected helper. Do not paste it into the console or a command.
  3. Open Run a model across trusted computers, select the model and approved compute helpers in stage order, accept the tensor-exposure disclosure, and press Set up.
  4. Run each printed mfab stages start command on its named helper, then press Check stages.
  5. After the authenticated fingerprint, dtype, ordering, and coverage checks pass, enter a bounded prompt and press Run across stages.
Boundary: The deterministic two-stage fixture matched a full-model greedy reference token-for-token while the driver held no transformer layers. Product runs without that oracle remain CAPACITY_SMOKE, not speed or quality passes. Compute helpers host assigned weights and receive hidden states, so use only devices you trust.

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 (frontier_escalate.py), so you can read the code in the trust path before you run it.

Provider-key controls run only from the host’s loopback console. On Windows, MFabric saves the profile in Credential Manager when it is available. On other platforms, or if secure storage is unavailable, the key remains session-only; MFabric never falls back to a plaintext BYOK key file.

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).

?
troubleshooting

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.

✓
safe defaults

Use these unless you know why not

!
boundaries

What MFabric is not yet

☷
how-to guides

Step-by-step for common tasks

Memory-sharing experiment boundary

The memory-sharing fixture can bound recent KV locally and store older exact pages as encrypted blocks on approved helpers. It remains a private experiment until a real-model row clears both quality and speed. Full boundaries are in the advanced-capability section above.

The consumer console does not offer a switch for this route. Exact local execution remains the supported route; private evidence runs use a separate explicit experimental configuration.

Running 2Big2Fit (split model)

2Big2Fit is an opt-in authenticated stage pipeline across trusted compute helpers. Full setup, trust boundaries, and CLI commands are in the 2Big2Fit section above.

  1. Select a locally cached Hugging Face model and approved compute helpers in stage order.
  2. Start the printed authenticated stage command on each helper.
  3. Check topology, then run a bounded buffered prompt.

Understanding exact repeat routing

MFabric keeps a bounded host-local cache of the last 256 successful local answers. An identical prompt with the same loaded model and output-token limit can return the byte-identical answer without a second model call. New prompts, changed token limits, and newly loaded models run normally.

This is exact repeat reuse, not semantic caching. Paraphrases do not reuse answers, answer length is not a quality verifier, and an outside provider is used only when you configure your key and choose it.

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.

  1. Send a prompt in the chat panel.
  2. A streaming badge appears next to the response header only when tokens are arriving in real time. Supported local Hugging Face models use real model-produced text deltas rather than a simulated typing delay.
  3. 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.
  4. 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.
  5. Both modes produce the same answer. Streaming only changes when characters appear on screen.
  6. While a local answer is running, click Stop to cancel its active generation request. Text already received stays visible.
When token counts are available, each response also shows a usage line such as 12 in / 48 out / 60 total · tokenized — prompt tokens in, completion tokens out, the total, and whether the count was tokenized or estimated.

Connecting a local OpenAI-compatible app

The host process that owns the loaded model also serves the API, so a second process cannot accidentally advertise a different or unloaded model.

  1. Start the host and load a model in the console.
  2. Set the app base URL to http://127.0.0.1:8788/v1, or use the actual console port shown at startup.
  3. Call GET /v1/models to obtain the loaded model id.
  4. Send chat requests to POST /v1/chat/completions, or text prompts to POST /v1/completions. Both support SSE with stream: true.
  5. Loaded Hugging Face models also expose bounded contextual vectors at POST /v1/embeddings. GGUF embeddings fail closed in this build.

Local file tools support one list_files, read_file, or write_file call per request. The request must come from loopback, set mfabric_file_tool_consent: true, and stay inside a folder already approved in the console. Absolute paths are not returned.

Loopback clients need no key. LAN clients require a random MFABRIC_MODEL_GATEWAY_API_KEY of at least 16 characters, sent as a bearer token. Do not expose the host port directly to the public internet. Session URLs are unguessable bearer capabilities and should be treated as secrets.

Checking live device telemetry

The telemetry panel shows real-time GPU memory, CPU load, and health for every approved device in your fabric.

  1. Open the host console in your browser.
  2. Scroll to the Telemetry section (or click its link in the capabilities panel).
  3. Each device card shows GPU memory used, CPU percent, and whether the device is currently online.
  4. The small sparkline graph shows recent GPU memory use over time.
  5. If no telemetry appears, the device may be offline or not yet approved.
Nothing is uploaded outside your approved fabric. Telemetry travels only between devices you have already paired.

Running a batch of prompts

The batch panel runs several prompts at once and returns one result list.

  1. Open the host console and go to the Agent swarm or batch panel.
  2. Type or paste your tasks, one per line, into the task input box.
  3. Press Run. Each task is sent in parallel and tracked as a separate row.
  4. When all tasks finish, each row shows the answer, the tier it used, and how long it took.
  5. 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.

  1. Open the host console.
  2. Click Check for updates in the header bar, or open the Check for a newer version capability panel and press Check for update.
  3. The console fetches the public update manifest. No device info, model list, or local paths are sent.
  4. If a newer build is available, the status line shows the version number and where to download it.
  5. If you are already on the latest build, the status line confirms that.
>_
command line

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

mfab is included in the zip bundle — no install needed. From the extracted folder run python mfab_cli.py doctor then python mfab_cli.py host start. From a repository checkout you can also pip install -e . to put the mfab command on your PATH.

# from a repository checkout:
pip install -e .
# or isolated:
pipx install .

Five steps to your first chat

  1. Check the environment: mfab doctor
  2. Start the host: mfab host start --detach
  3. List local models: mfab models list
  4. Load a model: mfab models load <model-ref>
  5. 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.

Advertise a trusted overlay address

mfab config set trusted_networks <cidr[,cidr...]>
mfab config set advertise_host <numeric-ip>

Default-empty and numeric-only. Public CIDRs, malformed settings, redirects, and proxy-routed peer control traffic fail closed.

The CLI is a thin wrapper over the console APIs; it does not add new server-side capabilities. If the host is not reachable, mfab prints a friendly error and exits nonzero — no raw Python traceback.
Uninstall leaves state behind. Deleting the extracted folder does not remove CLI state: config, host pid/port files, and logs live in %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 public beta. Free peer download. Do not post join links, household phrases, credentials, or private topology screenshots.