[{"data":1,"prerenderedAt":1919},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fiphone\u002Fremote-desktop":3},{"document":4,"previous":190,"next":363,"siblings":469},{"id":5,"title":6,"body":7,"date":179,"description":180,"extension":181,"meta":182,"navigation":183,"order":184,"path":185,"platform":186,"seo":187,"stem":188,"__hash__":189},"docs\u002Fdocs\u002Fiphone\u002Fremote-desktop.md","Remote desktop",{"type":8,"value":9,"toc":170},"minimark",[10,14,19,44,47,51,80,94,98,136,143,147,150,153,157,167],[11,12,13],"p",{},"Remote desktop shows the screen of a Mac you already connect to over SSH, inside Warpeer. It is made for a quick look: see what a coding agent built, click a button in a dialog, then go back to the terminal.",[15,16,18],"h2",{"id":17},"set-up-the-mac","Set up the Mac",[11,20,21,22,26,27,26,30,33,34,37,38,43],{},"On the Mac, open ",[23,24,25],"strong",{},"System Settings",", ",[23,28,29],{},"General",[23,31,32],{},"Sharing"," and turn on ",[23,35,36],{},"Screen Sharing",". A user must be signed in on the Mac. Nothing else is installed: the ",[39,40,42],"a",{"href":41},"\u002Fdocs\u002Fiphone\u002Fremote-helper","remote helper"," that Warpeer already places on the host reads Screen Sharing over loopback.",[11,45,46],{},"If Screen Sharing is off, Warpeer says so instead of showing an empty screen.",[15,48,50],{"id":49},"open-a-desktop","Open a desktop",[52,53,54,66,71,77],"ul",{},[55,56,57,58,61,62,65],"li",{},"On the ",[23,59,60],{},"Hosts"," tab, tap the display button in the header and choose a host, or open a host's menu and choose ",[23,63,64],{},"Open Remote Desktop",".",[55,67,68,69,65],{},"On a session card, open its menu and choose ",[23,70,64],{},[55,72,73,74,76],{},"In a terminal, tap the ",[23,75,6],{}," magic key. It is added to your keys by default; if you remove it, it stays in the key chooser.",[55,78,79],{},"In the notifications inbox, open an agent update's menu to see that host's screen.",[11,81,82,83,86,87,26,90,93],{},"The first time, sign in with an account on the Mac that is allowed to use Screen Sharing. Turn on ",[23,84,85],{},"Remember on this iPhone"," to keep the login in this iPhone's keychain. It is sent only inside the SSH connection and never typed into a locked Mac. ",[23,88,89],{},"More",[23,91,92],{},"Forget Saved Mac Password"," removes it.",[15,95,97],{"id":96},"control-the-mac","Control the Mac",[52,99,100,106,112,126],{},[55,101,102,105],{},[23,103,104],{},"Tap"," to click. Tap twice quickly to double-click.",[55,107,108,111],{},[23,109,110],{},"Touch and hold"," to right-click, or hold and move to drag.",[55,113,114,117,118,121,122,125],{},[23,115,116],{},"Two fingers"," scroll. ",[23,119,120],{},"Pinch"," zooms, and the zoomed area sharpens a moment later. ",[23,123,124],{},"Fit to Screen"," shows the whole desktop again.",[55,127,128,131,132,135],{},[23,129,130],{},"Keyboard"," opens a key bar with Command, Option, Control and Shift, Escape, Tab, Return, Delete, the arrows and a ",[23,133,134],{},"Shortcuts"," menu with Copy, Paste, Spotlight, Switch App and the function keys. Text you send is pasted on the Mac exactly as typed, whatever input method it uses, and your Mac clipboard is restored afterwards.",[11,137,138,139,142],{},"When the Mac is locked, Warpeer says so. Tap ",[23,140,141],{},"Unlock…"," and type the Mac password; it is used once and never saved.",[15,144,146],{"id":145},"data-and-quality","Data and quality",[11,148,149],{},"Only the parts of the screen that change are sent, scaled to the size your iPhone shows and compressed. A changed terminal line costs about 2 KB. Quality steps down when the link slows, and stays capped on cellular and Low Data Mode. The status bar shows the network the Mac detected and the round trip.",[11,151,152],{},"The screen travels only inside your SSH connection. It never passes through Warpeer or another service and is not saved on your iPhone.",[15,154,156],{"id":155},"the-floating-ball","The floating ball",[11,158,159,162,163,65],{},[23,160,161],{},"Collapse Desktop"," shrinks the desktop to the floating ball and pauses it: the Mac sends nothing while it waits. Tap the ball to resume. A collapsed desktop closes after 10 minutes, and any desktop closes when Warpeer goes to the background. The ball also holds ",[39,164,166],{"href":165},"\u002Fdocs\u002Fiphone\u002Ffiles-and-git","file previews",[11,168,169],{},"Remote desktop is an advanced feature, free during Early Access. It is not made for video playback and does not carry sound.",{"title":171,"searchDepth":172,"depth":172,"links":173},"",2,[174,175,176,177,178],{"id":17,"depth":172,"text":18},{"id":49,"depth":172,"text":50},{"id":96,"depth":172,"text":97},{"id":145,"depth":172,"text":146},{"id":155,"depth":172,"text":156},null,"Open a Mac's desktop inside Warpeer over SSH, control it with touch and keys, and keep it behind the floating ball.","md",{},true,7.5,"\u002Fdocs\u002Fiphone\u002Fremote-desktop","iphone",{"title":6,"description":180},"docs\u002Fiphone\u002Fremote-desktop","jX53UAjnjiSLiDU_9v3GQxo3I_aU3fL3M5xhWX6IfGE",{"id":191,"title":192,"body":193,"date":179,"description":357,"extension":181,"meta":358,"navigation":183,"order":359,"path":165,"platform":186,"seo":360,"stem":361,"__hash__":362},"docs\u002Fdocs\u002Fiphone\u002Ffiles-and-git.md","Files and git",{"type":8,"value":194,"toc":348},[195,198,202,205,219,226,230,263,269,273,276,279,293,296,299,303,306,310,323,327,334,338,345],[11,196,197],{},"Warpeer keeps the project beside the shell. Files open in an SFTP tab next to your terminals, and git changes have their own review page.",[15,199,201],{"id":200},"open-files-over-sftp","Open files over SFTP",[11,203,204],{},"There are three ways in:",[52,206,207,213,216],{},[55,208,209,210,212],{},"Long-press a host on the ",[23,211,60],{}," tab and choose SFTP.",[55,214,215],{},"Tap the folder button on the Hosts heading and pick a host.",[55,217,218],{},"From a terminal, use the SFTP function on a magic key. It opens at the folder your current pane is in.",[11,220,221,222,225],{},"All file connections share one ",[23,223,224],{},"Files"," tab. Switch between hosts with the bar at the top, and each host keeps its own folder and selection. Closing the Files tab never closes your terminals.",[15,227,229],{"id":228},"browse-and-manage","Browse and manage",[52,231,232,235,246,253,260],{},[55,233,234],{},"Tap a folder to open it, and tap the breadcrumb path to jump back up.",[55,236,237,238,241,242,245],{},"Use ",[23,239,240],{},"Search Files"," to filter the current folder, and ",[23,243,244],{},"Sort"," to order by name, size or date.",[55,247,248,249,252],{},"Turn on ",[23,250,251],{},"Hidden Files"," to show dotfiles.",[55,254,255,256,259],{},"Choose ",[23,257,258],{},"Select"," to download or delete several items, or to copy and move them to another connected host. Warpeer names the target host and path before you confirm, and never overwrites an existing file.",[55,261,262],{},"Rename items, create folders and share files to other apps.",[11,264,265,268],{},[23,266,267],{},"SFTP Settings"," sets the folder new connections start in: the last folder you visited, your home folder or a common location such as a project or log folder.",[15,270,272],{"id":271},"preview","Preview",[11,274,275],{},"Tap a file to preview it. Markdown and source code render in a reader. HTML pages render with JavaScript disabled, with a toggle to see the source. PDFs and other documents open in Quick Look.",[11,277,278],{},"Photos, videos and audio stream instead of downloading first:",[52,280,281,287],{},[55,282,283,286],{},[23,284,285],{},"Videos and audio"," (MP4, MOV, M4V, M4A, MP3, AAC and WAV) start playing in about a second, even when the file is large or the server is far away. Seeking jumps straight to that point.",[55,288,289,292],{},[23,290,291],{},"Photos"," (JPEG, PNG, HEIC, WebP and GIF, up to 64 MiB) show the embedded thumbnail or a partial picture first, then the full image with a progress bar.",[11,294,295],{},"Streamed bytes go into a temporary cache that is deleted when the preview closes. Warpeer reads only a little ahead of playback and less on cellular, so pausing does not keep downloading the whole file.",[11,297,298],{},"Minimise a preview to the floating ball to keep it while you work in the terminal. The ball shows a count, and tapping it opens an overview of up to four previews and desktops; tap a card to bring it back, or close it there. A minimised video pauses and stops fetching until you return to it.",[15,300,302],{"id":301},"download","Download",[11,304,305],{},"Downloads fetch several parts of a file at once, which makes them 25 to 50 times faster on distant servers than one request at a time.",[15,307,309],{"id":308},"upload","Upload",[11,311,312,313,26,316,319,320,322],{},"Tap the upload button and choose ",[23,314,315],{},"Camera",[23,317,318],{},"Photo Library"," or ",[23,321,224],{},". Uploads go to the folder you are viewing.",[15,324,326],{"id":325},"images-for-coding-agents","Images for coding agents",[11,328,329,330,65],{},"In a terminal, the images function uploads a photo or screenshot to the host and pastes its path into the coding agent in the current pane, so you can show an agent what you see. See ",[39,331,333],{"href":332},"\u002Fdocs\u002Fiphone\u002Fimages-and-voice","Images and voice",[15,335,337],{"id":336},"git-status-and-diffs","Git status and diffs",[11,339,340,341,344],{},"Open the git function on a magic key. The ",[23,342,343],{},"Git Status"," page shows the folder, branch, worktree and every changed file. Tap a file to see its diff with old and new line numbers and word-level highlights.",[11,346,347],{},"Diffs load one file at a time, only when you open them. Files larger than 256 KB or 2,000 lines are not previewed, rather than shown cut off.",{"title":171,"searchDepth":172,"depth":172,"links":349},[350,351,352,353,354,355,356],{"id":200,"depth":172,"text":201},{"id":228,"depth":172,"text":229},{"id":271,"depth":172,"text":272},{"id":301,"depth":172,"text":302},{"id":308,"depth":172,"text":309},{"id":325,"depth":172,"text":326},{"id":336,"depth":172,"text":337},"Browse, preview and upload files over SFTP, and review changed files and diffs.",{},7,{"title":192,"description":357},"docs\u002Fiphone\u002Ffiles-and-git","txKSdYfAx78-583AiX0PqkMJZJEeltcL7pUUGGfETo8",{"id":364,"title":365,"body":366,"date":179,"description":463,"extension":181,"meta":464,"navigation":183,"order":465,"path":41,"platform":186,"seo":466,"stem":467,"__hash__":468},"docs\u002Fdocs\u002Fiphone\u002Fremote-helper.md","The remote helper",{"type":8,"value":367,"toc":458},[368,375,379,386,405,409,412,426,429,433,436,451,454],[11,369,370,371,65],{},"To keep shells running across disconnects, list sessions, recognise coding agents, read git status and show host metrics, Warpeer uses a small program on your server called ",[372,373,374],"code",{},"warpeer-remote",[15,376,378],{"id":377},"installation","Installation",[11,380,381,382,385],{},"When you connect, Warpeer checks for the helper in ",[372,383,384],{},"~\u002F.warpeer\u002Fremote"," in your home directory. If it is missing or older than the version bundled with the app, Warpeer uploads it over the same SSH connection, verifies its SHA-256 checksum and swaps it in atomically. It never replaces a newer helper with an older one.",[52,387,388,391,394,397],{},[55,389,390],{},"It needs no root access and no package manager.",[55,392,393],{},"It supports Linux and macOS on x86_64 and ARM64.",[55,395,396],{},"For session lists, agents, git and metrics it runs only for the SSH connection that started it and exits when that connection closes.",[55,398,399,400,404],{},"With the ",[39,401,403],{"href":402},"\u002Fdocs\u002Fiphone\u002Fwps","WPS protocol",", it also starts one small daemon per kept shell. The daemon runs as your user, holds the shell and its recent output while you are disconnected, and exits when the shell exits or stays unattached for too long.",[15,406,408],{"id":407},"what-it-reads","What it reads",[11,410,411],{},"The helper answers only the questions your iPhone asks over the SSH connection you opened:",[52,413,414,417,420,423],{},[55,415,416],{},"the tmux and Herdr sessions on the host;",[55,418,419],{},"the coding agents running in those sessions and their state;",[55,421,422],{},"the folder, branch and changed files of the git repository in the current pane, and a file's diff when you open it;",[55,424,425],{},"system details and resource metrics such as CPU, memory, network, disk, swap and load.",[11,427,428],{},"The answers travel back to your iPhone only. Nothing is sent to Warpeer. The helper never types into your terminal, and if it fails, your shell keeps working; only the extra features are unavailable.",[15,430,432],{"id":431},"removing-it","Removing it",[11,434,435],{},"Delete the folder at any time:",[437,438,442],"pre",{"className":439,"code":440,"language":441,"meta":171,"style":171},"language-sh shiki shiki-themes github-light github-dark","rm -rf ~\u002F.warpeer\n","sh",[372,443,444],{"__ignoreMap":171},[445,446,449],"span",{"class":447,"line":448},"line",1,[445,450,440],{},[11,452,453],{},"Warpeer installs the helper again the next time you connect to that host.",[455,456,457],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":171,"searchDepth":172,"depth":172,"links":459},[460,461,462],{"id":377,"depth":172,"text":378},{"id":407,"depth":172,"text":408},{"id":431,"depth":172,"text":432},"What Warpeer installs on your server, what it reads and how to remove it.",{},8,{"title":365,"description":463},"docs\u002Fiphone\u002Fremote-helper","Pq0e2FSQIkt_nhqj4YDqqOGvolcvsvqxpcjQIL7NQNc",[470,573,703,815,1012,1141,1348,1588,190,4,363,1673,1792],{"id":471,"title":472,"body":473,"date":179,"description":567,"extension":181,"meta":568,"navigation":183,"order":448,"path":569,"platform":186,"seo":570,"stem":571,"__hash__":572},"docs\u002Fdocs\u002Fiphone\u002Fgetting-started.md","Get started on iPhone",{"type":8,"value":474,"toc":562},[475,478,482,507,514,518,525,529,554],[11,476,477],{},"Warpeer for iPhone is a native SSH terminal built on Ghostty. It requires iOS 18 or later. There is no account to create, and every feature is free during Early Access.",[15,479,481],{"id":480},"add-your-first-host","Add your first host",[483,484,485,495,498,501],"ol",{},[55,486,487,488,490,491,494],{},"Open the ",[23,489,60],{}," tab and tap the ",[23,492,493],{},"+"," button.",[55,496,497],{},"Enter a name, the host address, the port and your username.",[55,499,500],{},"Choose how to authenticate: type a password, or pick a saved Keychain credential. Leave the password empty when the server uses Tailscale SSH.",[55,502,503,504,65],{},"Tap ",[23,505,506],{},"Connect",[11,508,509,510,513],{},"Warpeer can also list SSH servers that advertise themselves on your local network. Tap the nearby-devices button in the connection form to open ",[23,511,512],{},"Local SSH Devices"," and pick one instead of typing its address.",[15,515,517],{"id":516},"trust-the-server","Trust the server",[11,519,520,521,524],{},"The first time you connect, Warpeer shows the server's host-key fingerprint and asks you to verify it. Compare it with the fingerprint your server administrator or ",[372,522,523],{},"ssh-keygen -lf"," reports, then accept it. Later connections with the same fingerprint go through without another prompt. If the fingerprint changes, Warpeer stops and asks again.",[15,526,528],{"id":527},"find-your-way-around","Find your way around",[52,530,531,537,542,548],{},[55,532,533,536],{},[23,534,535],{},"Sessions"," lists the terminals you have open and the tmux and Herdr sessions found on your servers.",[55,538,539,541],{},[23,540,60],{}," holds your saved servers. Long-press a host to open its files over SFTP.",[55,543,544,547],{},[23,545,546],{},"Vaults"," stores credentials, snippets, known hosts and connection logs.",[55,549,550,553],{},[23,551,552],{},"Settings"," sits in the navigation bar and controls the terminal, keyboard, appearance and privacy.",[11,555,556,557,561],{},"Next, read ",[39,558,560],{"href":559},"\u002Fdocs\u002Fiphone\u002Fhosts-and-keys","Hosts and SSH keys"," to set up key-based sign-in.",{"title":171,"searchDepth":172,"depth":172,"links":563},[564,565,566],{"id":480,"depth":172,"text":481},{"id":516,"depth":172,"text":517},{"id":527,"depth":172,"text":528},"Install Warpeer, add your first host and open a terminal session.",{},"\u002Fdocs\u002Fiphone\u002Fgetting-started",{"title":472,"description":567},"docs\u002Fiphone\u002Fgetting-started","vxyARNtJ_kCXtVZeoY6BbOxbbsC6jtEw2bV9xZ6HHSQ",{"id":574,"title":560,"body":575,"date":179,"description":698,"extension":181,"meta":699,"navigation":183,"order":172,"path":559,"platform":186,"seo":700,"stem":701,"__hash__":702},"docs\u002Fdocs\u002Fiphone\u002Fhosts-and-keys.md",{"type":8,"value":576,"toc":690},[577,583,586,596,600,613,631,634,641,645,651,655,664,668,674,678],[11,578,579,580,582],{},"Everything you save in Warpeer stays on your iPhone. Open the ",[23,581,546],{}," tab to manage it.",[15,584,60],{"id":585},"hosts",[11,587,588,589,591,592,595],{},"A host is a saved server: a name, an address, a port and a username, plus the credential to sign in with. Saved hosts appear on the ",[23,590,60],{}," tab. Once you have more than one, a search field helps you find them. Use ",[23,593,594],{},"Manage"," on the Hosts heading to edit hosts or select several to delete.",[15,597,599],{"id":598},"keychain-credentials","Keychain credentials",[11,601,602,603,605,606,609,610,65],{},"A credential is a username with either a password or a private key. To add one, open ",[23,604,546],{},", choose ",[23,607,608],{},"Keychains"," and tap ",[23,611,612],{},"Add Keychain",[52,614,615,621],{},[55,616,617,620],{},[23,618,619],{},"Password",": type the password once and reuse it on any host.",[55,622,623,626,627,630],{},[23,624,625],{},"Private Key",": paste an OpenSSH private key (the text that begins with ",[372,628,629],{},"-----BEGIN OPENSSH PRIVATE KEY-----","). Ed25519 and RSA keys are supported. Add the passphrase if the key has one, and optionally the public key for reference.",[11,632,633],{},"Credentials are encrypted and stored in the iOS Keychain. When you edit a credential later, leave the private key empty to keep the stored value.",[11,635,636,637,640],{},"Remember to add the matching public key to ",[372,638,639],{},"~\u002F.ssh\u002Fauthorized_keys"," on each server.",[15,642,644],{"id":643},"known-hosts","Known hosts",[11,646,647,650],{},[23,648,649],{},"Known Hosts"," lists every server fingerprint you have trusted. Search by host or fingerprint. Delete an entry when a server is rebuilt so that Warpeer asks you to verify its new key.",[15,652,654],{"id":653},"snippets","Snippets",[11,656,657,659,660,65],{},[23,658,654],{}," are saved commands. Insert or run them from a snippet key on the terminal keyboard, described in ",[39,661,663],{"href":662},"\u002Fdocs\u002Fiphone\u002Fmagic-keys","Magic keys and snippets",[15,665,667],{"id":666},"connection-logs","Connection logs",[11,669,670,673],{},[23,671,672],{},"Logs"," keeps a short history of connection attempts, with the error detail when one failed. It is the first place to look when a host will not connect.",[15,675,677],{"id":676},"app-lock","App Lock",[11,679,248,680,682,683,685,686,689],{},[23,681,677],{}," in ",[23,684,552],{}," to require a 4 to 12 digit PIN, or Face ID or Touch ID, when Warpeer opens. The PIN verifier is stored only on this device. With App Lock on, ",[23,687,688],{},"Blur in App Switcher"," also hides your terminals in the app switcher.",{"title":171,"searchDepth":172,"depth":172,"links":691},[692,693,694,695,696,697],{"id":585,"depth":172,"text":60},{"id":598,"depth":172,"text":599},{"id":643,"depth":172,"text":644},{"id":653,"depth":172,"text":654},{"id":666,"depth":172,"text":667},{"id":676,"depth":172,"text":677},"Save servers, store passwords and private keys in the Keychain, and lock the app.",{},{"title":560,"description":698},"docs\u002Fiphone\u002Fhosts-and-keys","6Lg-OnfpPrP_xHeEoD-5jLuSnfBYgDvXU57FZIkFX0Q",{"id":704,"title":705,"body":706,"date":179,"description":808,"extension":181,"meta":809,"navigation":183,"order":810,"path":811,"platform":186,"seo":812,"stem":813,"__hash__":814},"docs\u002Fdocs\u002Fiphone\u002Fsessions.md","Sessions: tmux and Herdr",{"type":8,"value":707,"toc":802},[708,711,715,718,741,745,751,758,762,765,769,780,786,797],[11,709,710],{},"Warpeer is built for work that keeps running on a server while you are away. It finds your tmux and Herdr sessions and puts you back inside them.",[15,712,714],{"id":713},"choose-a-session-when-you-connect","Choose a session when you connect",[11,716,717],{},"When you connect to a host, Warpeer looks for tmux and Herdr sessions on that server and lists them. Each row shows the runtime, the session name, when it was created or last active, and the coding agent running in it.",[52,719,720,723,729,735],{},[55,721,722],{},"Tap a session to attach to it.",[55,724,255,725,728],{},[23,726,727],{},"Select Multiple Sessions",", tap several, then open them together as separate tabs.",[55,730,255,731,734],{},[23,732,733],{},"Continue in Shell"," to skip attaching and use a plain login shell.",[55,736,237,737,740],{},[23,738,739],{},"Close Session"," to end a session you no longer need.",[15,742,744],{"id":743},"the-sessions-tab","The Sessions tab",[11,746,747,748,750],{},"The ",[23,749,535],{}," tab shows every open terminal as a card with a live preview of its screen, so you can see what is happening without opening it. A card also shows the coding agent state and, inside a git repository, the number of added and removed lines. Tap a card to continue, the chart button to open its session probe, or the close button to end it.",[11,752,753,754,757],{},"Below your open sessions, ",[23,755,756],{},"Connected Sessions"," lists hosts you used recently. Tap one to reconnect with the same saved credential.",[15,759,761],{"id":760},"move-between-terminals","Move between terminals",[11,763,764],{},"Each session opens as a tab. Swipe sideways across the terminal to move to the next or previous tab. A short label names the session and host you landed on. Going back to the Sessions tab keeps your terminals open in the background of the app.",[15,766,768],{"id":767},"coming-back-to-the-app","Coming back to the app",[11,770,771,772,775,776,779],{},"iOS suspends apps that are not on screen. When you return, Warpeer checks each connection and reconnects the ones the system closed. If a connection still cannot be restored, the tab keeps its last screen and shows ",[23,773,774],{},"Connection lost"," with a ",[23,777,778],{},"Reconnect"," button, which attaches the same tmux or Herdr session again. Your work never stopped, because it was running on the server the whole time.",[11,781,782,783,785],{},"Two settings in ",[23,784,552],{}," control this:",[52,787,788,794],{},[55,789,790,793],{},[23,791,792],{},"Keep Alive"," sets how often Warpeer sends SSH keep-alive packets.",[55,795,796],{},"The background time limit asks iOS to keep connections open for System Default, 5, 10, 15 or 30 minutes after you leave. iOS decides how much time the app actually gets.",[11,798,799,800,65],{},"Warpeer installs a small helper on the server to find sessions. See ",[39,801,365],{"href":41},{"title":171,"searchDepth":172,"depth":172,"links":803},[804,805,806,807],{"id":713,"depth":172,"text":714},{"id":743,"depth":172,"text":744},{"id":760,"depth":172,"text":761},{"id":767,"depth":172,"text":768},"Find the sessions already running on your servers and continue them from your iPhone.",{},3,"\u002Fdocs\u002Fiphone\u002Fsessions",{"title":705,"description":808},"docs\u002Fiphone\u002Fsessions","gUs_E1tCHZgPFSi43-5KfWhB09Hki2CyBD9bbfhRT0I",{"id":816,"title":817,"body":818,"date":179,"description":1006,"extension":181,"meta":1007,"navigation":183,"order":1008,"path":402,"platform":186,"seo":1009,"stem":1010,"__hash__":1011},"docs\u002Fdocs\u002Fiphone\u002Fwps.md","The WPS protocol",{"type":8,"value":819,"toc":999},[820,823,827,833,836,847,851,854,922,925,929,936,950,953,957,970,982,985,989,996],[11,821,822],{},"WPS is the Warpeer persistent shell protocol. With plain SSH, the shell ends when the connection drops: a subway tunnel, a switch from Wi-Fi to cellular or iOS suspending the app is enough. With WPS, the shell keeps running on your server and your iPhone resumes it where it left off.",[15,824,826],{"id":825},"how-it-works","How it works",[11,828,829,830,832],{},"WPS runs inside the SSH connection you already use. When a terminal opens, the ",[39,831,42],{"href":41}," starts a small daemon that owns the shell and keeps a buffer of its recent output. Your iPhone attaches to that daemon over the same SSH channel.",[11,834,835],{},"When the connection drops, the shell keeps running. On reconnect, Warpeer logs in again over SSH, attaches to the same shell and receives every byte it missed, then restores the screen. Moving between Wi-Fi and cellular triggers a quick check, so a dead connection is noticed and resumed instead of waiting for a timeout.",[52,837,838,841,844],{},[55,839,840],{},"No extra port, no root access and no package to install.",[55,842,843],{},"Scrollback stays in the terminal, so tmux, editors and coding agents behave as before.",[55,845,846],{},"One device holds a shell at a time. Opening it on another device asks before taking it over.",[15,848,850],{"id":849},"measured-performance","Measured performance",[11,852,853],{},"We measured WPS on Debian 12, Ubuntu 24.04 and Fedora 44 hosts reached over OpenSSH.",[855,856,857,870],"table",{},[858,859,860],"thead",{},[861,862,863,867],"tr",{},[864,865,866],"th",{},"Measurement",[864,868,869],{},"Result",[871,872,873,882,890,898,906,914],"tbody",{},[861,874,875,879],{},[876,877,878],"td",{},"Resume after a closed connection or a silent loss, while streaming 1.49 MB",[876,880,881],{},"113 to 185 ms, byte-exact",[861,883,884,887],{},[876,885,886],{},"Reconnect to the shell with 0, 50 and 150 ms of added round trip",[876,888,889],{},"0.11 s, 0.81 s and 2.03 s",[861,891,892,895],{},[876,893,894],{},"First keystroke after resuming",[876,896,897],{},"One round trip",[861,899,900,903],{},[876,901,902],{},"Median keystroke echo compared with a plain terminal relay",[876,904,905],{},"About 1 µs slower",[861,907,908,911],{},[876,909,910],{},"Throughput compared with a plain terminal relay",[876,912,913],{},"93 to 100%",[861,915,916,919],{},[876,917,918],{},"Output kept while you are away",[876,920,921],{},"10 minutes of agent redraws or a verbose build log; 2.1 minutes of incompressible output",[11,923,924],{},"Most of a reconnect over a slow link is the SSH login itself, about 13 to 14 round trips with OpenSSH. Phone networks add their own latency, so your numbers will differ from these hosts. Output older than the buffer is marked as missing in the terminal rather than silently dropped.",[15,926,928],{"id":927},"protocol-and-price","Protocol and price",[11,930,931,932,935],{},"Choose the protocol under ",[23,933,934],{},"Settings › Session › Protocol",":",[52,937,938,944],{},[55,939,940,943],{},[23,941,942],{},"WPS"," is the advanced protocol. It is free during Early Access.",[55,945,946,949],{},[23,947,948],{},"SSH"," is standard SSH and always free.",[11,951,952],{},"Warpeer explains the difference before it switches. The choice applies to new terminals; open tabs keep their protocol. Shells already kept on a host stay there until they exit.",[15,954,956],{"id":955},"how-to-tell-which-protocol-a-tab-uses","How to tell which protocol a tab uses",[11,958,959,960,319,963,966,967,969],{},"A tiny label in the top-left corner of each terminal tab and session card shows ",[23,961,962],{},"wps",[23,964,965],{},"ssh",". An orange ",[23,968,965],{}," means you chose WPS but the host could not keep the shell, for example:",[52,971,972,975],{},[55,973,974],{},"the host cannot run the remote helper;",[55,976,977,978,981],{},"the host ends user processes at logout (",[372,979,980],{},"KillUserProcesses=yes",") without lingering enabled.",[11,983,984],{},"Everything else works as usual on those hosts; only the shell ends with the connection.",[15,986,988],{"id":987},"ending-a-kept-shell","Ending a kept shell",[11,990,991,992,995],{},"Type ",[372,993,994],{},"exit"," or close the tab as usual. From Warpeer 1.1.1, closing the tab ends the kept shell on the host.",[11,997,998],{},"A kept shell whose foreground program is tmux, Herdr, Zellij or screen ends after 10 minutes with no device attached; the multiplexer keeps your work, and you reattach it from Sessions. Any other shell that no device has attached to for a week is ended by the helper.",{"title":171,"searchDepth":172,"depth":172,"links":1000},[1001,1002,1003,1004,1005],{"id":825,"depth":172,"text":826},{"id":849,"depth":172,"text":850},{"id":927,"depth":172,"text":928},{"id":955,"depth":172,"text":956},{"id":987,"depth":172,"text":988},"How WPS keeps plain shells running across disconnects, what it costs and how to switch back to SSH.",{},3.5,{"title":817,"description":1006},"docs\u002Fiphone\u002Fwps","-SJ0Unr63GEACm6mit42f2ncGSIki0zFI0LFqQTQHxM",{"id":1013,"title":1014,"body":1015,"date":179,"description":1134,"extension":181,"meta":1135,"navigation":183,"order":1136,"path":1137,"platform":186,"seo":1138,"stem":1139,"__hash__":1140},"docs\u002Fdocs\u002Fiphone\u002Fcoding-agents.md","Coding agents",{"type":8,"value":1016,"toc":1127},[1017,1020,1024,1027,1031,1034,1096,1102,1106,1109,1113,1120,1122],[11,1018,1019],{},"Coding agents keep working on a server long after you close your laptop. Warpeer recognises them inside your remote sessions and tells you which ones need you, without opening every pane.",[15,1021,1023],{"id":1022},"supported-agents","Supported agents",[11,1025,1026],{},"Warpeer recognises Claude Code, Codex, OpenCode, Gemini, Amp, Auggie, Copilot CLI, Cursor CLI, Droid, Goose, Pi, DSH and Command Code. Agents run as usual in tmux, Herdr or a plain shell. You do not need to change how you start them.",[15,1028,1030],{"id":1029},"agent-states","Agent states",[11,1032,1033],{},"Each session shows the state of the agent running in it:",[855,1035,1036,1046],{},[858,1037,1038],{},[861,1039,1040,1043],{},[864,1041,1042],{},"State",[864,1044,1045],{},"Meaning",[871,1047,1048,1056,1064,1072,1080,1088],{},[861,1049,1050,1053],{},[876,1051,1052],{},"Working",[876,1054,1055],{},"The agent is busy on a task.",[861,1057,1058,1061],{},[876,1059,1060],{},"Waiting",[876,1062,1063],{},"The agent finished its turn and is waiting for your next message.",[861,1065,1066,1069],{},[876,1067,1068],{},"Needs input",[876,1070,1071],{},"The agent is blocked on a question or a permission request.",[861,1073,1074,1077],{},[876,1075,1076],{},"Completed",[876,1078,1079],{},"The task finished.",[861,1081,1082,1085],{},[876,1083,1084],{},"Failed",[876,1086,1087],{},"The agent stopped with an error.",[861,1089,1090,1093],{},[876,1091,1092],{},"Detected",[876,1094,1095],{},"The agent is running, but its state could not be read.",[11,1097,1098,1099,1101],{},"The state appears on the session card in the ",[23,1100,535],{}," tab, in the session list when you connect, and on the terminal tab.",[15,1103,1105],{"id":1104},"session-probe","Session probe",[11,1107,1108],{},"Tap the chart button on a session card to open its probe. It shows the agent and model, token use (input, output and total), the working folder, the git branch and worktree, the list of changed files, and system details such as the distribution, kernel and architecture of the host.",[15,1110,1112],{"id":1111},"notifications-and-approvals","Notifications and approvals",[11,1114,1115,1116,65],{},"To hear from an agent while Warpeer is closed, and to answer its prompts from the notification or the Lock Screen, turn on ",[39,1117,1119],{"href":1118},"\u002Fdocs\u002Fiphone\u002Fagent-approvals","agent notifications",[15,1121,826],{"id":825},[11,1123,747,1124,1126],{},[39,1125,42],{"href":41}," reads process and session information on the server and returns it to your iPhone over the same SSH connection. Agent states are not sent to Warpeer, and nothing is typed into your terminal unless you answer a prompt.",{"title":171,"searchDepth":172,"depth":172,"links":1128},[1129,1130,1131,1132,1133],{"id":1022,"depth":172,"text":1023},{"id":1029,"depth":172,"text":1030},{"id":1104,"depth":172,"text":1105},{"id":1111,"depth":172,"text":1112},{"id":825,"depth":172,"text":826},"See whether the coding agents in your sessions are working, waiting for you or done.",{},4,"\u002Fdocs\u002Fiphone\u002Fcoding-agents",{"title":1014,"description":1134},"docs\u002Fiphone\u002Fcoding-agents","NOOkMNAJCaPc5sMy6LtWIqYTFO0aUIGJJaVCawEXx4U",{"id":1142,"title":1143,"body":1144,"date":179,"description":1342,"extension":181,"meta":1343,"navigation":183,"order":1344,"path":1118,"platform":186,"seo":1345,"stem":1346,"__hash__":1347},"docs\u002Fdocs\u002Fiphone\u002Fagent-approvals.md","Agent notifications and approvals",{"type":8,"value":1145,"toc":1335},[1146,1149,1153,1180,1190,1194,1197,1235,1238,1241,1251,1255,1258,1261,1306,1309,1313,1320,1324,1332],[11,1147,1148],{},"A coding agent that stops to ask for permission waits until someone answers. Warpeer tells your iPhone when that happens and lets you approve, deny or reply without opening a laptop.",[15,1150,1152],{"id":1151},"turn-notifications-on","Turn notifications on",[483,1154,1155,1158,1173],{},[55,1156,1157],{},"Connect to a host where your agents run.",[55,1159,1160,1161,26,1163,33,1166,1169,1170,65],{},"Open ",[23,1162,552],{},[23,1164,1165],{},"Remote Notifications",[23,1167,1168],{},"Agent Notifications",". Allow notifications when iOS asks. The connected host is paired with this iPhone and appears under ",[23,1171,1172],{},"Bindings",[55,1174,1175,1176,1179],{},"Under ",[23,1177,1178],{},"Remote Hooks",", turn on the agents you use: Claude Code, Codex or Pi. Warpeer adds its hooks to the agent's settings on the host.",[11,1181,1182,1183,1186,1187,1189],{},"Hosts you connect to later are paired and given the same hooks automatically. Tap ",[23,1184,1185],{},"Revoke"," under ",[23,1188,1172],{}," to stop a host from notifying you.",[15,1191,1193],{"id":1192},"answer-a-prompt","Answer a prompt",[11,1195,1196],{},"When Claude Code asks for permission, the notification shows the agent and the project. Touch and hold it to choose:",[855,1198,1199,1209],{},[858,1200,1201],{},[861,1202,1203,1206],{},[864,1204,1205],{},"Action",[864,1207,1208],{},"What happens",[871,1210,1211,1219,1227],{},[861,1212,1213,1216],{},[876,1214,1215],{},"Approve",[876,1217,1218],{},"Allows the request once.",[861,1220,1221,1224],{},[876,1222,1223],{},"Deny",[876,1225,1226],{},"Refuses the request; the agent continues without it.",[861,1228,1229,1232],{},[876,1230,1231],{},"Reply",[876,1233,1234],{},"Sends a message to the agent instead of a yes or no.",[11,1236,1237],{},"When Claude Code finishes its turn, Reply sends your next message. Answers require an unlocked iPhone.",[11,1239,1240],{},"Your answer reaches the host over the open SSH connection when one exists, and through the relay otherwise. The helper types it into the agent's terminal only after checking that the same prompt is still on screen, so a late answer never lands in the wrong place. Prompts you answer at the desk, or on another device, disappear from the iPhone.",[11,1242,1243,1244,1246,1247,1250],{},"Prompts can be answered for agents running in tmux, Herdr or a ",[39,1245,942],{"href":402}," shell. An agent in a plain SSH shell still notifies you, with ",[23,1248,1249],{},"Open the session to answer this prompt",". Codex and Pi report when they need you or finish, but their prompts are answered in the session.",[15,1252,1254],{"id":1253},"the-notification-inbox","The notification inbox",[11,1256,1257],{},"The bell on the home screen opens every agent update this iPhone has received, newest first. Updates stay after you clear Notification Center, and you can read them without a connection. Tap an update to return to that agent's tab, or to reconnect to its host when no tab is open. Swipe to delete one, or clear them all.",[11,1259,1260],{},"Each update shows the agent and its state, the project and host, what the agent said, and a line of session metrics:",[855,1262,1263,1272],{},[858,1264,1265],{},[861,1266,1267,1270],{},[864,1268,1269],{},"Metric",[864,1271,1045],{},[871,1273,1274,1282,1290,1298],{},[861,1275,1276,1279],{},[876,1277,1278],{},"Ring and percent",[876,1280,1281],{},"How full the agent's context window is.",[861,1283,1284,1287],{},[876,1285,1286],{},"↑ and ↓",[876,1288,1289],{},"Tokens the session has sent to and received from the model.",[861,1291,1292,1295],{},[876,1293,1294],{},"+ and −",[876,1296,1297],{},"Lines added and removed in the working tree since the last commit.",[861,1299,1300,1303],{},[876,1301,1302],{},"Model and badge",[876,1304,1305],{},"The model and the effort level it runs at.",[11,1307,1308],{},"Permission prompts waiting for you appear above the updates with Approve, Deny and a button to open the agent's terminal.",[15,1310,1312],{"id":1311},"agents-on-the-lock-screen","Agents on the Lock Screen",[11,1314,1315,1316,1319],{},"With ",[23,1317,1318],{},"Agents on Lock Screen"," on, a Live Activity on the Lock Screen and in the Dynamic Island counts your blocked, working and waiting agents and shows the one that most needs you. When that agent is asking for permission, the activity offers Approve and Deny. The activity ends when your agents are done.",[15,1321,1323],{"id":1322},"privacy","Privacy",[11,1325,1326,1327,1331],{},"When a host is paired, your iPhone gives its helper a random key over SSH. The helper encrypts the agent's text, project name and prompt with that key before anything leaves the host, and your answers are encrypted the same way. The Warpeer notification relay only forwards ciphertext to Apple Push Notification service; it cannot read your prompts or answers. See the ",[39,1328,1330],{"href":1329},"\u002Fprivacy-policy","privacy policy"," for what the relay stores and for how long.",[11,1333,1334],{},"Notifications and approvals are free during Early Access.",{"title":171,"searchDepth":172,"depth":172,"links":1336},[1337,1338,1339,1340,1341],{"id":1151,"depth":172,"text":1152},{"id":1192,"depth":172,"text":1193},{"id":1253,"depth":172,"text":1254},{"id":1311,"depth":172,"text":1312},{"id":1322,"depth":172,"text":1323},"Get notified when a coding agent needs you, answer its prompt from the notification and follow your agents on the Lock Screen.",{},4.5,{"title":1143,"description":1342},"docs\u002Fiphone\u002Fagent-approvals","CKdM6VE8ZO3Dpwkk8xNpKp4HDe9b-megMGcnKBgL0hE",{"id":1349,"title":663,"body":1350,"date":179,"description":1582,"extension":181,"meta":1583,"navigation":183,"order":1584,"path":662,"platform":186,"seo":1585,"stem":1586,"__hash__":1587},"docs\u002Fdocs\u002Fiphone\u002Fmagic-keys.md",{"type":8,"value":1351,"toc":1573},[1352,1359,1363,1366,1392,1412,1416,1440,1445,1482,1487,1516,1521,1525,1528,1530,1544,1548,1551,1554,1566,1570],[11,1353,1354,1355,1358],{},"A phone keyboard has no Escape, Control or arrow keys. Warpeer adds them as ",[23,1356,1357],{},"magic keys",": a floating pad of real terminal keys around the arrow keys, which you can rearrange and fill with your own shortcuts.",[15,1360,1362],{"id":1361},"the-floating-pad","The floating pad",[11,1364,1365],{},"The pad sits over the terminal around four arrow keys. Tap the centre to type. Every other slot can hold:",[52,1367,1368,1374,1380,1386],{},[55,1369,1370,1373],{},[23,1371,1372],{},"a single key",", such as Escape, Tab, Control-C or a function key;",[55,1375,1376,1379],{},[23,1377,1378],{},"a four-key group",", four keys in one slot that you tap, reach by holding and sliding, or pick with a short flick toward the key;",[55,1381,1382,1385],{},[23,1383,1384],{},"a function",", such as SFTP, git status, a host metric, voice input or sending an image to the agent;",[55,1387,1388,1391],{},[23,1389,1390],{},"a snippet"," from your vault.",[11,1393,1160,1394,1396,1397,1400,1401,1403,1404,1407,1408,1411],{},[23,1395,552],{},", then ",[23,1398,1399],{},"Floating Shortcuts",", or tap the settings button on the pad, to edit the layout. Tap ",[23,1402,493],{}," on an empty slot or tap an occupied one to choose its key. Changes are saved only when you tap ",[23,1405,1406],{},"Save",". ",[23,1409,1410],{},"Restore Default Keys"," brings back the original layout.",[15,1413,1415],{"id":1414},"tmux-and-herdr-shortcuts","tmux and Herdr shortcuts",[11,1417,1418,1419,26,1422,26,1425,26,1428,1431,1432,1435,1436,1439],{},"The key chooser has tabs for ",[23,1420,1421],{},"Keys",[23,1423,1424],{},"Navigation",[23,1426,1427],{},"tmux",[23,1429,1430],{},"Herdr"," and ",[23,1433,1434],{},"Custom",", and a search that covers all of them. Each runtime tab starts with its ",[23,1437,1438],{},"Prefix"," key and lists the runtime's standard prefix commands by name, so you never need to remember a binding. Warpeer sends the right prefix for the runtime you are attached to, and you can change the prefix chord for each runtime in the pad preferences.",[11,1441,747,1442,1444],{},[23,1443,1427],{}," tab has 65 actions:",[52,1446,1447,1453,1459,1465,1470,1476],{},[55,1448,1449,1452],{},[23,1450,1451],{},"Windows",": new, next, previous and last window, the window tree, window search, rename, move, index prompt, close, and select window 0 to 9.",[55,1454,1455,1458],{},[23,1456,1457],{},"Panes",": split left-right or top-bottom, focus by direction, next and last pane, pane numbers, zoom, close, break out to a window, swap, rotate, mark, and resize one cell at a time.",[55,1460,1461,1464],{},[23,1462,1463],{},"Layouts",": cycle layouts, even horizontal and vertical, main horizontal and vertical, and tiled.",[55,1466,1467,1469],{},[23,1468,535],{},": choose, previous, next and last session, rename, detach, and detach other clients.",[55,1471,1472,1475],{},[23,1473,1474],{},"Copy and paste",": copy mode, page up into copy mode, paste, choose and list buffers.",[55,1477,1478,1481],{},[23,1479,1480],{},"Tools",": command prompt, key list, customizer, messages, window info, clock and redraw.",[11,1483,747,1484,1486],{},[23,1485,1430],{}," tab has 39 actions:",[52,1488,1489,1495,1500,1506],{},[55,1490,1491,1494],{},[23,1492,1493],{},"Tabs",": new, next, previous, rename, close, and switch to tab 1 to 9.",[55,1496,1497,1499],{},[23,1498,1457],{},": split right or below, focus with h, j, k and l, cycle forward and back, zoom, resize mode, close, rename, and edit the scrollback in your editor.",[55,1501,1502,1505],{},[23,1503,1504],{},"Workspaces",": workspace navigation, the goto picker, new workspace, new Git worktree workspace, rename, close, toggle the sidebar, and jump to the latest notification.",[55,1507,1508,1511,1512,1515],{},[23,1509,1510],{},"Session",": detach, settings, reload ",[372,1513,1514],{},"config.toml"," and key help.",[11,1517,1518,1520],{},[23,1519,1434],{}," lets you build your own key sequence, one keystroke with its modifiers at a time, with or without the runtime prefix.",[15,1522,1524],{"id":1523},"live-metric-keys","Live metric keys",[11,1526,1527],{},"Metric keys show a live value from the host: CPU, memory (RAM), network, disk, swap or load. A git key shows the number of added and removed lines in the current repository. Values update only while the key is visible, so hidden keys use no data. Open the chart function for full-screen graphs of the same metrics, refreshing every 1, 2, 5 or 10 seconds.",[15,1529,654],{"id":653},[11,1531,1532,1533,1535,1536,1539,1540,1543],{},"Save commands as snippets in ",[23,1534,546],{},", then add them to a key from the key chooser. Tapping a snippet key asks whether to ",[23,1537,1538],{},"Insert"," the command at the prompt or ",[23,1541,1542],{},"Run"," it.",[15,1545,1547],{"id":1546},"app-window-keys","App window keys",[11,1549,1550],{},"Keys can also open Warpeer windows directly: Sessions, command History, Themes, Credentials and Keyboard settings.",[15,1552,333],{"id":1553},"images-and-voice",[11,1555,747,1556,1559,1560,1563,1564,65],{},[23,1557,1558],{},"Images"," key uploads a photo or screenshot to the host and pastes its path into the coding agent in the current pane. The ",[23,1561,1562],{},"Voice"," key dictates text you can edit before inserting it. Neither presses Return for you. See ",[39,1565,333],{"href":332},[15,1567,1569],{"id":1568},"look-and-feel","Look and feel",[11,1571,1572],{},"In the pad preferences, choose a Glass, Frosted or Flat key material, a light or dark tone, and the opacity, blur and border strength. A connected hardware keyboard also works in the terminal.",{"title":171,"searchDepth":172,"depth":172,"links":1574},[1575,1576,1577,1578,1579,1580,1581],{"id":1361,"depth":172,"text":1362},{"id":1414,"depth":172,"text":1415},{"id":1523,"depth":172,"text":1524},{"id":653,"depth":172,"text":654},{"id":1546,"depth":172,"text":1547},{"id":1553,"depth":172,"text":333},{"id":1568,"depth":172,"text":1569},"Use floating terminal keys, more than 100 built-in tmux and Herdr actions, image, voice and live metric keys, and snippets.",{},5,{"title":663,"description":1582},"docs\u002Fiphone\u002Fmagic-keys","5YtM-UfcQur1IgVPhA0x8mI4_Qvk7TJgJMU_hGeqiA0",{"id":1589,"title":333,"body":1590,"date":179,"description":1667,"extension":181,"meta":1668,"navigation":183,"order":1669,"path":332,"platform":186,"seo":1670,"stem":1671,"__hash__":1672},"docs\u002Fdocs\u002Fiphone\u002Fimages-and-voice.md",{"type":8,"value":1591,"toc":1663},[1592,1601,1605,1628,1631,1634,1637,1641,1660],[11,1593,1594,1595,1597,1598,1600],{},"Two magic keys let you work with a coding agent without typing everything on a phone keyboard: ",[23,1596,1558],{}," sends a picture to the agent, and ",[23,1599,1562],{}," turns speech into terminal input. Voice is on the default pad, right of the Down arrow. Add Images, or bring either key back after deleting it, from the function list in the key chooser.",[15,1602,1604],{"id":1603},"send-an-image-to-a-coding-agent","Send an image to a coding agent",[483,1606,1607,1610,1622,1625],{},[55,1608,1609],{},"Attach to the tmux or Herdr session where Claude Code, Codex or another agent is running.",[55,1611,1612,1613,1615,1616,26,1618,319,1620,65],{},"Tap the ",[23,1614,1558],{}," key and choose ",[23,1617,315],{},[23,1619,318],{},[23,1621,224],{},[55,1623,1624],{},"Warpeer uploads the image to the host over your SSH connection and pastes its full path at the agent's prompt.",[55,1626,1627],{},"Add a sentence if you like, then send it yourself. Warpeer never presses Return for you.",[11,1629,1630],{},"Pasting an image from the iPhone clipboard into the terminal offers the same upload, so a screenshot you just copied reaches the host instead of a path that only exists on your phone.",[11,1632,1633],{},"Images can be up to 8 MiB. The host checks each upload against its digest before the path is pasted, and a failed or cancelled upload never leaves a partial file in place of an earlier one. If you switch pane, session or connection while an upload is running, nothing is pasted and the image stays selected so you can retry.",[11,1635,1636],{},"Warpeer pastes a plain, quoted path. Whether the agent reads the image depends on the agent and its model.",[15,1638,1640],{"id":1639},"dictate-terminal-input","Dictate terminal input",[483,1642,1643,1648,1651,1654],{},[55,1644,1612,1645,1647],{},[23,1646,1562],{}," key. The first time, allow microphone and speech recognition access.",[55,1649,1650],{},"Speak. A live waveform shows that Warpeer is listening, and the transcript appears as you talk.",[55,1652,1653],{},"Pause and continue as often as you need, and edit the transcript by hand.",[55,1655,503,1656,1659],{},[23,1657,1658],{},"Insert Text"," to place the text on the current shell line or agent prompt. It is not run until you press Return.",[11,1661,1662],{},"Dictation uses Apple Speech in your preferred language. Apple may process the audio on its servers under Apple's privacy policy. Images are sent only to the host you are connected to.",{"title":171,"searchDepth":172,"depth":172,"links":1664},[1665,1666],{"id":1603,"depth":172,"text":1604},{"id":1639,"depth":172,"text":1640},"Send photos and screenshots to the coding agent in a remote pane, and dictate terminal input.",{},6,{"title":333,"description":1667},"docs\u002Fiphone\u002Fimages-and-voice","vqzTjqzcno3kPechHsWsp2LO8-dddz_3aelNYuEP7HA",{"id":1674,"title":1675,"body":1676,"date":179,"description":1785,"extension":181,"meta":1786,"navigation":183,"order":1787,"path":1788,"platform":186,"seo":1789,"stem":1790,"__hash__":1791},"docs\u002Fdocs\u002Fiphone\u002Fappearance.md","Appearance",{"type":8,"value":1677,"toc":1777},[1678,1685,1689,1702,1706,1713,1717,1734,1738,1752,1756,1762,1766],[11,1679,1160,1680,1396,1682,1684],{},[23,1681,552],{},[23,1683,1675],{},". A live preview shows each change before you leave the page.",[15,1686,1688],{"id":1687},"light-and-dark","Light and dark",[11,1690,1691,1694,1695,1431,1698,1701],{},[23,1692,1693],{},"App Appearance"," follows the system, or keeps Warpeer light or dark. The terminal has its own ",[23,1696,1697],{},"Light Terminal Theme",[23,1699,1700],{},"Dark Terminal Theme",", so it can switch with the rest of the app.",[15,1703,1705],{"id":1704},"terminal-themes","Terminal themes",[11,1707,1708,1709,1712],{},"Warpeer includes all 602 Ghostty themes and two Warpeer themes. Open ",[23,1710,1711],{},"Terminal Themes"," to search them by name and preview each palette. You can also open the theme gallery from a magic key while you work.",[15,1714,1716],{"id":1715},"text","Text",[11,1718,1719,1720,26,1723,1431,1726,1729,1730,1733],{},"Choose between the bundled JetBrains Mono and Maple Mono NF fonts, and set the ",[23,1721,1722],{},"Font Size",[23,1724,1725],{},"Font Weight",[23,1727,1728],{},"Line Height",". With ",[23,1731,1732],{},"Pinch to Resize Text"," on, pinch the terminal to change the size on the spot.",[15,1735,1737],{"id":1736},"cursor","Cursor",[11,1739,1740,1743,1744,1747,1748,1751],{},[23,1741,1742],{},"Cursor Type"," sets the cursor shape. ",[23,1745,1746],{},"Blinking Cursor"," makes it blink after you stop typing, and ",[23,1749,1750],{},"Cursor Motion"," animates it when it moves.",[15,1753,1755],{"id":1754},"app-icon","App icon",[11,1757,1175,1758,1761],{},[23,1759,1760],{},"App Icon",", choose the owl icon style, Engraving or Sketch, and the colour of its title band: Clay, Ochre or Terracotta. Every icon has light, dark and tinted versions that follow your Home Screen setting.",[15,1763,1765],{"id":1764},"language","Language",[11,1767,1768,1769,1396,1771,1407,1773,1776],{},"Warpeer is available in English and Simplified Chinese. Open ",[23,1770,552],{},[23,1772,1765],{},[23,1774,1775],{},"Follow System"," uses your iPhone's language, or the language chosen for Warpeer in iOS Settings; any Chinese system language shows Simplified Chinese. Choose a language to fix it instead. The change applies immediately, without closing your sessions. Terminal output, command names and messages from your server are not translated.",{"title":171,"searchDepth":172,"depth":172,"links":1778},[1779,1780,1781,1782,1783,1784],{"id":1687,"depth":172,"text":1688},{"id":1704,"depth":172,"text":1705},{"id":1715,"depth":172,"text":1716},{"id":1736,"depth":172,"text":1737},{"id":1754,"depth":172,"text":1755},{"id":1764,"depth":172,"text":1765},"Choose terminal themes for light and dark mode, fonts, cursor style, the app icon and the app language.",{},9,"\u002Fdocs\u002Fiphone\u002Fappearance",{"title":1675,"description":1785},"docs\u002Fiphone\u002Fappearance","9RW_QbITV8zMkCWd8tT5EPiBYom61rptjHpqa1OUFUI",{"id":1793,"title":1794,"body":1795,"date":179,"description":1912,"extension":181,"meta":1913,"navigation":183,"order":1914,"path":1915,"platform":186,"seo":1916,"stem":1917,"__hash__":1918},"docs\u002Fdocs\u002Fiphone\u002Ftroubleshooting.md","Troubleshooting and support",{"type":8,"value":1796,"toc":1906},[1797,1801,1814,1840,1844,1850,1864,1867,1871,1885,1889],[15,1798,1800],{"id":1799},"a-host-will-not-connect","A host will not connect",[11,1802,1803,1804,1396,1806,1808,1809,1396,1811,1813],{},"When a connection fails, the host shows a red error button in ",[23,1805,546],{},[23,1807,60],{},". Tap it to read the last error, or open ",[23,1810,546],{},[23,1812,672],{},", for the full history. Common causes:",[52,1815,1816,1822,1831],{},[55,1817,1818,1821],{},[23,1819,1820],{},"Wrong address or port."," Check that you can reach the server from the iPhone's network. Servers on a private network need a VPN such as Tailscale on the iPhone.",[55,1823,1824,1827,1828,1830],{},[23,1825,1826],{},"Authentication failed."," Check the username and the Keychain credential on the host. For key sign-in, the public key must be in ",[372,1829,639],{}," on the server, and an encrypted key needs its passphrase.",[55,1832,1833,1836,1837,1839],{},[23,1834,1835],{},"Host Key Changed."," The server presented a different fingerprint from the one you trusted. If you rebuilt or replaced the server, confirm the new fingerprint with its administrator, delete the old entry in ",[23,1838,649],{}," and connect again. If you did not expect a change, do not connect.",[15,1841,1843],{"id":1842},"sessions-agents-or-git-do-not-appear","Sessions, agents or git do not appear",[11,1845,1846,1847,1849],{},"These features rely on the ",[39,1848,42],{"href":41},". Your terminal still works if the helper cannot run, but the extra information is missing. Check that:",[52,1851,1852,1855,1858,1861],{},[55,1853,1854],{},"your home directory on the server is writable and allows programs to run;",[55,1856,1857],{},"the server runs Linux or macOS on x86_64 or ARM64;",[55,1859,1860],{},"tmux or Herdr is running, if you expect sessions to be listed;",[55,1862,1863],{},"the current pane is inside a git repository, for git status.",[11,1865,1866],{},"If a newer Warpeer app on another device installed a newer helper, update Warpeer on this iPhone.",[15,1868,1870],{"id":1869},"a-session-disconnects-in-the-background","A session disconnects in the background",[11,1872,1873,1874,1876,1877,1879,1880,1882,1883,65],{},"iOS limits how long apps stay active after you leave them. Your tmux or Herdr session keeps running on the server. Return to Warpeer and tap ",[23,1875,778],{},", or raise the background time limit and ",[23,1878,792],{}," interval in ",[23,1881,552],{},". See ",[39,1884,535],{"href":811},[15,1886,1888],{"id":1887},"send-feedback","Send feedback",[11,1890,1160,1891,1396,1893,1896,1897,1900,1901,1905],{},[23,1892,552],{},[23,1894,1895],{},"Help & Feedback",", and tap ",[23,1898,1899],{},"Copy Diagnostics",". It copies only the app and iOS versions, never hosts, commands, passwords, credentials or terminal output. Paste it into an email to ",[39,1902,1904],{"href":1903},"mailto:support@warpeer.com","support@warpeer.com"," with a description of what happened.",{"title":171,"searchDepth":172,"depth":172,"links":1907},[1908,1909,1910,1911],{"id":1799,"depth":172,"text":1800},{"id":1842,"depth":172,"text":1843},{"id":1869,"depth":172,"text":1870},{"id":1887,"depth":172,"text":1888},"Fix common connection problems and send useful feedback.",{},10,"\u002Fdocs\u002Fiphone\u002Ftroubleshooting",{"title":1794,"description":1912},"docs\u002Fiphone\u002Ftroubleshooting","a5lWmLQgvRghQbD0ZK52vR-iJChX5pVstI1IERcCJGU",1793368048321]