Skip to content

Adding your first item

After onboarding you land in Inbox — the default bin. Everything below works from any bin; pick one in the sidebar first if you want items somewhere other than Inbox.

INSERT SCREENSHOT HERE — Main feed with the composer at the bottom and Inbox selected in the sidebar.

The text box at the bottom of the feed is the fastest path for URLs, notes, and code.

  1. Click in the composer (placeholder: Drop anything into “Inbox”…).
  2. Start typing. A small badge appears when the app detects link, code, or text:
    • Link — starts with http://, https://, or looks like a domain (example.com/…).
    • Code — contains braces or semicolons in a short snippet (heuristic, not a full parser).
    • Text — everything else.
  3. Press Enter (desktop) or tap send (mobile). On desktop you can also use ⌘Enter / Ctrl+Enter.

Links are saved with a placeholder title (New link) and description (Fetching preview…). Open Graph fetching is not wired up yet — edit the item later if you want a nicer title.

The composer toolbar currently exposes one button: Paste from clipboard (reads plain text into the field). Upload, mic, and password buttons from early mockups are not in the alpha UI yet.

When you paste (⌘V / Ctrl+V) outside an input, SyncBins may show a clipboard hint — a banner offering to save what you copied as an item.

Detection rules (client-side only):

Clipboard contentSaved asNotes
http(s)://… or www.… URLlinkSingle line, no spaces
12–64 char token with upper, lower, digit, symbolpasswordService defaults to “Pasted credential”
Text with ≥3% {/} characterscodeLabel snippet, lang txt
Image file in clipboardimageMetadata only until blob upload completes
Other texttextFull string preserved

Accept the hint to drop the item into the active bin (or Inbox if you’re on Everything).

INSERT SCREENSHOT HERE — Clipboard hint banner above the feed.

Drag one or more files onto the feed window.

  • Images (image/*) → image items with filename as label.
  • Everything elsefile items with name, human-readable size, and extension as kind.

Large files are encrypted locally and uploaded via the blob flow (see Content types → blobs).

INSERT SCREENSHOT HERE — Drag overlay while dragging a file onto the window.

  1. The browser picks a random item key, encrypts the payload with XChaCha20-Poly1305, and wraps that key for every paired device.
  2. The ciphertext goes to POST /api/items (or blob storage first for large payloads).
  3. The server assigns a monotonic version and fans the item out over WebSocket to your other devices.
  4. Other devices decrypt and show the item in the feed — usually within a second if they’re online.

While the request is in flight you’ll see a syncing indicator on the row. If it fails, an error appears above the composer; the optimistic row may roll back.

New accounts start with Inbox. Create more bins from the + button in the sidebar (New bin modal: name, emoji, hue, soft capacity).

The Everything view at the top of the sidebar shows all non-deleted items across bins, sorted by time. Search (⌘K / Ctrl+K, or click the sidebar search field) runs entirely on-device over decrypted payloads — the server never sees your query.

The composer and clipboard paths only auto-create link, code, text, password, image, and file today. The server and UI also support note, video, audio, contact, and location — those need to be created through other flows (or MCP/API) until dedicated UI lands.

See Content types for every payload shape.

ProblemWhat to do
Item stuck on “syncing”Check Settings → Server (green?). Self-host: curl …/api/health.
Other device doesn’t show itConfirm both devices are paired and online. Check WebSocket in browser devtools.
Can’t decrypt on new deviceExisting devices re-wrap items for new pairings in the background; wait a minute and refresh.
Paste hint never appearsBrowser blocked clipboard read — use the composer paste button or type manually.