PlaybitNative beta manual

Start here. Make something useful.

Use a shared app without a compiler, or create one with Rust and the tools in the Mac download. Your apps run locally; collaboration uses your Playbit account.

Install and open Playbit

On an Apple-silicon Mac running macOS 15 or later, download Playbit. Open the ZIP, move Playbit.app to Applications, then open it. The distributed app is signed and notarized; no developer tools are needed to use an app.

On iPhone 13 or newer with iOS 18 or later, install Apple’s TestFlight app and accept your Playbit beta invitation. External tester access depends on Apple’s beta approval. A development installation is not a TestFlight installation.

If you arrived through a session link, return to that page after installing and choose Open in Playbit. Keep the complete link, including the part after #.

Your account and recovery

Enter your email in Playbit, then the code sent from noreply@playbit.app. Check Spam if it does not arrive. If a code expires, request another. A pending invitation stays with you through sign-in.

When asked, copy your recovery secret into a password manager or another safe place, then explicitly confirm that you saved it. Signing in proves control of your email. The recovery secret or approval from an enrolled device restores your encrypted credentials.

On a new device, sign in and choose recovery with your saved secret, or request approval from an enrolled device. On the enrolled device, compare the requesting device’s inspection code before approving. Keep both devices connected until recovery completes. Cancel a request you did not make.

If you lose every enrolled device and your recovery secret, email sign-in alone cannot restore private keys. Support cannot bypass that encryption. Local changes that have not reached the service are recoverable only from the device that holds them.

Your display name can be changed in Account & recovery on Mac or Recovery on iPhone. An existing enrolled device can keep using locally available sessions while offline.

Apps, data, and people

Volume
A persistent collection of data owned by one account. Permissions control access. A root volume holds the app’s shared data; a session has a separate volume for its group. Closing an app does not delete either.
Build
The exact executable and resources of an app, identified by their content. Changing the source and building again produces different content.
Deployment
An account-owned entry that selects a build and a fixed root volume. Publishing an update changes its selected build. It is not a hosted running process.
Session
A group running the app together, with its own invitation and identity. A session uses an exact build or follows a deployment. Each person runs their own local instance.

Joining an example or invitation can mean using shared data. Other authorized participants can see and edit that data. Opening shared data does not make a private copy. Review the app’s description and access choices.

Access to your additional personal volumes is off by default. If an app needs one, choose the volume and Read or Read/Write explicitly. This permission applies to the exact build; a new build must ask again. Revoke access in the app/session details.

Join, use, and share

  1. Open the complete invitation in your browser and choose Open in Playbit, or paste it into Playbit’s Join Session action.
  2. Sign in and recover your credentials if needed. Review the invitation and shared data, then join.
  3. Wait for required app content and data to become available. Waiting, paused, denied access, and failed download are different states. A private volume may need an authorized peer online.
  4. Use the app. Reopen it from Sessions later. Existing locally available sessions stay usable offline; reconnect to publish pending edits and receive changes.

Use the session’s Copy link action to invite someone. Anyone holding the link may join under that session’s access rules, including someone it was forwarded to. Do not post private invitations in public bug reports. Copying a link does not finish a pending upload; check availability before asking another person to join.

On Mac, each opened session has a separate window. Closing a window or quitting the GUI does not delete its data; the local service can continue synchronization. On iPhone, reopening a session resumes its saved identity. Leave Session removes that entry from this device, not from everyone else.

Create an app in an empty directory

Creating apps requires Rust with Cargo and the WebAssembly target. The recipient needs only Playbit. Install Rust from rustup.rs, then run these commands in Terminal:

export PATH="/Applications/Playbit.app/Contents/MacOS:$PATH"
rustup target add wasm32-unknown-unknown
mkdir my-todo
cd my-todo
pb init "My TODO"
cargo build
pb bundle
pb run

pb init creates source, a vendored Apache-2.0 SDK, an icon, playbit.toml, and your development volume. It does not need an implementation source checkout or create a deployment. root.init initializes the new ordinary volume; recipients do not run that hook.

cargo build compiles the source. pb bundle packages the result. pb run builds, opens a session, and watches source changes. Edit src/lib.rs and save: a successful build updates that session and its connected participants. Failed builds keep the working app and report an error. Ctrl-C stops watching and retains the session and data.

Commands return JSON on stdout; progress, compiler errors, and app logs go to stderr. Read the returned full session ID and use it below in place of SESSION_ID:

pb invite SESSION_ID --copy
pb logs SESSION_ID
pb session list
pb status

Publish and update a deployment

pb deployment create
pb deploy --notes "Initial TODO"
pb deployment list
pb run --deployment DEPLOYMENT_ID

Replace DEPLOYMENT_ID with the returned ID. Creation records [deployment.main] and a separate initialized root in playbit.toml. That new root grants public read; it does not make every participant a writer. An existing root supplied with --volume ID keeps its permissions. Run and share a session invitation to deliver the authorized credentials.

After editing source, use pb deploy --notes "Describe the change" again. Deployment followers adopt its published build; unrelated exact-build sessions stay pinned. Root provisioning and personal-volume consent still apply. A failed or blocked update keeps the prior working app.

Owners can rename a volume with pb volume label VOLUME_ID "Shared name" and grant an existing account access with pb volume grant VOLUME_ID EMAIL rw (or r for read-only). Share the invitation separately; granting access sends no email. Disabling a deployment prevents new runs without deleting volumes or retained sessions.

Use pb help or pb deployment create --help for the exact installed commands. Source edits remain ordinary files that you can keep in Git. Review the source’s license; the app SDK’s Apache-2.0 terms differ from the runtime source license.

Debug an app

On Mac, use Window → Show Log (⌘⇧L) in the app window. On iPhone, open the session’s Logs screen. pb logs SESSION_ID prints the retained log snapshot. During pb run, logs stream to Terminal even while a new build is compiling. Logs are bounded; an overwritten-line notice means older output is no longer retained.

Use pb status to inspect account, session, and synchronization state. Local persistence, pending upload, and durable remote acknowledgment are different. Normal synchronization is automatic; pb sync is a diagnostic barrier, not a required save button.

For this build, the default Mac profile is ~/Library/Application Support/app.playbit.archipelago. Keep its databases and keys. The service log is ~/Library/Application Support/app.playbit.service.log. An explicit PLAYBIT_PROFILE keeps isolated development state; its log is beside the profile, with the last filename extension replaced by .service.log. Do not delete a profile or cache to troubleshoot pending work; retain it until recovery is verified.

Known beta limitations

Report a useful problem

Contact hello@playbit.app or the person who invited you to the beta. Include:

Keep recovery secrets, sign-in codes, private invitation links, keys, and other people’s data out of reports. Describe whether local work is still visible before attempting cleanup. Support may help with account access, but cannot decrypt data without the appropriate credentials.