Skip to content
C.W.K.
Stream
← C.W.K. Quests
🔥

Smolder Quest

Updated: 2026-10-12

A session that outlives its window — how a family terminal owns the pane, the daemon, and the phone as one Swift product

Two programs you do not own, with a serialized stream between them (a screen, or pane output and commands in tmux's control mode), is a seam. Every friction that made you reach for iTerm was a symptom of that seam. Smolder is the family's answer: a Swift Mac app and a Swift iPhone/iPad app that attach to sessions a daemon owns. This quest is the product choices, not a clone of the repo and not a Swift language course. You will walk the Mac half and the phone half at equal weight, because they are the same fire seen from two surfaces.

8 tracks · 48 lessons · ~9.3h · difficulty: intermediate-to-advanced

Level 0Spark
0 XP0/48 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
Most terminals are a window glued to a process. Quit the window and the process dies; lock the phone and the SSH session is a coin flip. Smolder inverts the ownership. A daemon, narrow on purpose, owns the PTYs and the journal. The Mac app is a projection that may quit. The phone is a surface that may lock, suspend, or vanish. Neither UI is allowed to interpret its own disappearance as a request to kill the host session. That inversion is the whole product, and it is why the quest spends as much time in your pocket as it does on the desk. You will start at the seam Smolder exists to close: iTerm plus tmux, two programs and a byte stream, every family friction living above a core nobody here should rewrite. You will embed that core (SwiftTerm, pinned) and keep your code in the layer Dad actually complained about — tabs, panes, restore, family doors. Then the daemon: close ends a job, detach keeps it, restore rematerializes a declaration and never resurrects a PID, no failure leaves a pane that can do nothing, only the operator restarts the owner, and a phone hangup is not a kill. Then the Mac craft: one PTY per pane, a pane tree you can drag as one tab, arrangements as JSON, identity in chrome rather than in the TUI. Then the door: siblings knock with a typed client from Sibling Kit; drafts stay outside the PTY; Pippa proposes and you type. The second half is the same fire on a different surface. Shells stay on the host. The phone's wire is its own, and compiles without AppKit. Observation must not resize the Mac PTY. Every approved surface types beside the Mac; a hold is optional and visible; the grid follows whoever typed last; a reconnect comes back as what it was; keystrokes never replay. Delivery is TestFlight, not a cable. The last track is the authorized destination — durable checkpoints, direct SSH, keys and jump hosts, files — taught in a different tense from the working contract, because a quest that collapses those two tenses teaches a phone that does not exist yet.

Tracks

  1. 01🧵The Bar Is Absence

    0/4 lessons

    Two programs you do not own, and a byte stream between them, is a seam — not a workflow

    Smolder exists because iTerm plus tmux is two programs you do not own with a serialized stream between them: a screen in ordinary use, pane output and commands in tmux's control mode. Every family friction that sent you back to iTerm lived above a terminal core nobody here should rewrite. This track names the seam, embeds the core, and sets the only bar that matters: you should not need the program you do not own. The Mac daily driver is the first surface. The phone is the same fire, later.

    Smolder on a MacBook: the SMOLDER wordmark and ash title bar, a FLEET sidebar of host chips (OFFICE, SERVER, WORKER, MACBOOK, MINI, MUSIC, PRO2024, PRO2023, AIR, NAS) with Add Host, a PRESETS list with Save Current Tab, and two tabs; the selected tab, tmux · Media-Sources, runs tmux inside its pane, with mactop in the top right and three shells on MACBOOK, and Pippa's mark at the far right of the title bar.
    The bar is absence. Smolder's own chrome around the panes; the tmux in the second tab is a program Dad chose to run inside one pane, not a layer Smolder put between process and pixels.
    Lesson list (4)Quiz · 4 questions→
  2. 02🕯️Sessions Smolder

    0/8 lessons

    The daemon owns the fire. The app is a projection. A phone hangup is not a kill.

    If the window owns the process, quitting the window is a death sentence and locking a phone is a coin flip. Smolder moves ownership into a daemon that is narrow on purpose: PTYs, a bounded journal, receipts. The Mac app attaches. The phone attaches. Close ends a job; detach keeps it; restore rematerializes a declaration and never resurrects a PID. The owner is responsible for what its children inherit, no failure may leave a pane that can do nothing, and only the operator restarts the owner — from a list of everything it will end. This track is the Mac-owned root that the iOS half depends on — without it, a pocket surface would be a second owner, which is the failure mode.

    Lesson list (8)Quiz · 7 questions→
  3. 03🪟Own the Pane

    0/6 lessons

    One PTY stream per pane, a tree you can drag, identity in chrome — the emulator is embedded, the pixels are yours

    Once the daemon owns the process, the Mac app still has to be a terminal you can live in: nested splits, a tab that moves as one tree, arrangements that are declarations rather than screenshots, a selection that stays on its words while a harness redraws, and a face you recognize without reading the title. This track is the desktop craft. Local panes are never wrapped in an external multiplexer. Content colors stay standard for TUIs; Smolder's ember lives in the chrome.

    Lesson list (6)Quiz · 5 questions→
  4. 04🚪The Door, Not a Prompt

    0/5 lessons

    Siblings knock with a typed client. Drafts stay outside the PTY. Pippa proposes; you type.

    A family terminal that cannot be opened by the family's other apps is just another iTerm. The product API is a loopback door: authenticated, typed, receipted, no generic "type this into a pane" verb. Waygate and Watchfire already knock with Sibling Kit's terminal client. Anvil preparation and Firebrand resume use a bounded native handoff. Command proposals come from Pippa's proposal service, run in a Kit worker bundled with the app, and insert against a frozen snapshot, never with a newline. This track is the Mac door. The phone gets its own gateway later — a different door, on purpose.

    Lesson list (5)Quiz · 5 questions→
  5. 05📱Same Fire, Different Surface

    0/5 lessons

    Shells stay on the host. The phone's wire is its own. Observation must not resize the Mac.

    The phone is not a second terminal owner. It is a Swift surface on the same fire the daemon already owns. Shared wire types compile without AppKit, without local process inspection, without a local filesystem assumption. SwiftTerm renders on both sides. Watching from a narrow screen must not change the host PTY. One universal app adapts to iPhone and iPad; it is not two products with two contracts.

    Lesson list (5)Quiz · 4 questions→
  6. 06🔑Many Surfaces, One Session

    0/10 lessons

    Every surface types. A hold is optional and visible. The grid follows the typist. Reconnect as what you were.

    Opening a session from a phone used to mean watching until you took the single input lease. On 2026-09-17 Dad withdrew that lease for Smolder and Firebrand together, because both glasses belong to one person. Now every attached device approved for control types beside the Mac, and the daemon writes their bytes in arrival order. A hold is an optional, visible fence that dies with its holder's connection. The grid follows whoever typed last; attaching and watching never resize. A reconnect comes back as the same kind of surface, with nothing replayed. The owner says in its greeting which contract it speaks, so the old lease survives only for an owner that has not been restarted onto the new one. Anvil on the phone keeps the same preparation policy as the Mac: drafts stay outside the PTY. The last three lessons keep the lease era readable, marked as replaced.

    Lesson list (10)Quiz · 7 questions→
  7. 07✈️The Gateway and TestFlight

    0/5 lessons

    A different door from the sibling door. The device is the credential. A cable is a build check.

    The sibling door is loopback, for apps on the same Mac. The phone cannot use it, and must not be given it. A separate gateway — one on each Mac that has approved devices, reached directly, never relayed — speaks a bounded WebSocket to those devices on the family's tailnet. No model credential and no sibling HTTP credential grants input. Delivery of the iOS app is TestFlight — the family's pipeline, vendored from Sibling Kit, with Firebrand as the canonical iOS reference. A cable install is a build check that expires; upload is not delivery either.

    Lesson list (5)Quiz · 5 questions→
  8. 08🗺️The Pocket Terminal's Destination

    0/5 lessons

    The working contract is continue-host-work. The authorized product is a general terminal in your pocket. Do not mix the tenses.

    Dad authorized a staged native iPhone/iPad product whose eventual shape is a general-purpose SSH terminal: keys, jump hosts, file transfer — not permanently restricted to the family fleet, not permanently dependent on an office gateway. The working contract you can hold today is continue-host-work through a gateway on each Mac. This track teaches the destination in a different tense. SSH on the remote Mac through the gateway does not count as direct iOS SSH. A quest that says you can already do M3 from a phone is teaching a phone that is not in your pocket yet.

    Lesson list (5)Quiz · 5 questions→
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign in — Please sign in to comment.

No comments yet — be the first.