[{"data":1,"prerenderedAt":897},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fandroid\u002Fmagic-keys":3},{"document":4,"previous":186,"next":322,"siblings":423},{"id":5,"title":6,"body":7,"date":175,"description":176,"extension":177,"meta":178,"navigation":179,"order":180,"path":181,"platform":182,"seo":183,"stem":184,"__hash__":185},"docs\u002Fdocs\u002Fandroid\u002Fmagic-keys.md","Magic keys and snippets",{"type":8,"value":9,"toc":167},"minimark",[10,14,19,43,70,74,77,87,135,139,148,151,164],[11,12,13],"p",{},"A phone keyboard has no Escape, Control or arrow keys. Warpeer adds them in two places: a key bar above the keyboard and a pad of floating keys over the terminal.",[15,16,18],"h2",{"id":17},"the-key-bar","The key bar",[11,20,21,22,26,27,26,30,26,33,36,37,39,40,42],{},"The key bar sits above the software keyboard and below the session dock. It has ",[23,24,25],"strong",{},"esc",", ",[23,28,29],{},"tab",[23,31,32],{},"ctrl",[23,34,35],{},"alt"," and the four arrows. Tap ",[23,38,32],{}," or ",[23,41,35],{}," once to apply it to the next key you type.",[11,44,45,46,49,50,53,54,57,58,61,62,65,66,69],{},"Choose ",[23,47,48],{},"Customize Keyboard"," under ",[23,51,52],{},"Settings"," to change which key groups appear and in what order. Drag groups to reorder them, add preset groups, or build a ",[23,55,56],{},"Custom Group"," from your own keys. ",[23,59,60],{},"Session Toolbar"," moves the session dock from ",[23,63,64],{},"Above Keyboard"," to the ",[23,67,68],{},"Top of Screen",".",[15,71,73],{"id":72},"floating-keys","Floating keys",[11,75,76],{},"Tap the floating keys button in the session dock to show a pad of keys over the terminal. The default pad has arrows, Enter, Ctrl+C and Ctrl+D, common symbols and an SFTP key. Drag the pad by its handle to move it, or use the lock button to pin it in place.",[11,78,79,80,83,84,86],{},"Open ",[23,81,82],{},"Floating Shortcuts"," in ",[23,85,52],{},", or the settings button on the pad, to change it:",[88,89,90,107,114,120],"ul",{},[91,92,93,94,26,97,26,100,39,103,106],"li",{},"Tap a slot and choose a key from ",[23,95,96],{},"Keys",[23,98,99],{},"tmux",[23,101,102],{},"Herdr",[23,104,105],{},"Actions",", or search for one.",[91,108,109,110,113],{},"Bind a ",[23,111,112],{},"Custom Combination"," of modifiers and a key.",[91,115,116,117,69],{},"Add a key that pastes one of your ",[23,118,119],{},"Snippets",[91,121,45,122,26,125,39,128,49,131,134],{},[23,123,124],{},"Glass",[23,126,127],{},"Frosted",[23,129,130],{},"Flat",[23,132,133],{},"Key Appearance",", and adjust the opacity, blur and border with a live preview.",[15,136,138],{"id":137},"tmux-and-herdr-prefix-keys","tmux and Herdr prefix keys",[11,140,141,142,144,145,147],{},"The ",[23,143,99],{}," and ",[23,146,102],{}," tabs list the commands of each multiplexer, such as new window, split pane or detach. Each key sends the prefix and the command together, so you do not have to press Ctrl+B and then a second key on a phone keyboard.",[15,149,119],{"id":150},"snippets",[11,152,153,154,157,158,160,161,163],{},"Save commands under ",[23,155,156],{},"Vaults",", then ",[23,159,119],{},". In a terminal, open the menu at the end of the session dock and choose ",[23,162,119],{}," to paste one into the terminal, or bind it to a floating key.",[11,165,166],{},"Some keys from Warpeer for iPhone, such as live host metrics, git, voice input and images, are not available on Android yet. They stay visible on the pad but report that they are unavailable.",{"title":168,"searchDepth":169,"depth":169,"links":170},"",2,[171,172,173,174],{"id":17,"depth":169,"text":18},{"id":72,"depth":169,"text":73},{"id":137,"depth":169,"text":138},{"id":150,"depth":169,"text":119},null,"Use the key bar, floating keys, tmux and Herdr prefix keys, and snippets on Android.","md",{},true,4,"\u002Fdocs\u002Fandroid\u002Fmagic-keys","android",{"title":6,"description":176},"docs\u002Fandroid\u002Fmagic-keys","cnvJHjzgzvJ_SiJu1ae-HagByYJa-hFIkSG9L5-hru4",{"id":187,"title":188,"body":189,"date":175,"description":315,"extension":177,"meta":316,"navigation":179,"order":317,"path":318,"platform":182,"seo":319,"stem":320,"__hash__":321},"docs\u002Fdocs\u002Fandroid\u002Fsessions.md","Sessions and tabs",{"type":8,"value":190,"toc":309},[191,194,198,216,236,247,251,261,265,276,280,291],[11,192,193],{},"Warpeer is built for work that keeps running on a server while you are away. Run tmux or Herdr on the server, and Warpeer keeps you one tap away from it.",[15,195,197],{"id":196},"open-terminals-as-tabs","Open terminals as tabs",[11,199,200,201,204,205,39,208,211,212,69],{},"Each connection opens as a tab in the session dock at the bottom of the terminal. The ",[23,202,203],{},"+"," button in the dock opens another ",[23,206,207],{},"SSH Host",[23,209,210],{},"SFTP Host"," from your saved hosts. Swipe sideways across the terminal to move to the next or previous tab. A short label names the tab you landed on and its position, such as ",[213,214,215],"code",{},"1\u002F2",[11,217,218,219,26,221,26,224,26,227,26,230,144,233,69],{},"The back button in the dock returns to the app and keeps your terminals open. The menu button at the end of the dock holds ",[23,220,119],{},[23,222,223],{},"Paste",[23,225,226],{},"Select all",[23,228,229],{},"Show Keyboard",[23,231,232],{},"Disconnect",[23,234,235],{},"Close tab",[11,237,238,239,242,243,246],{},"To work inside tmux, type ",[213,240,241],{},"tmux attach"," in the terminal as you would over any SSH client. The tmux and Herdr prefix keys described in ",[244,245,6],"a",{"href":181}," save you from typing the prefix by hand.",[15,248,250],{"id":249},"the-sessions-tab","The Sessions tab",[11,252,141,253,256,257,260],{},[23,254,255],{},"Sessions"," tab shows every open terminal as a card with its host and connection state. Tap a card to continue, or the close button to end it. Below them, ",[23,258,259],{},"Connected Sessions"," lists hosts you used recently. Tap one to reconnect with the same saved credential.",[15,262,264],{"id":263},"staying-connected","Staying connected",[11,266,267,268,271,272,275],{},"While a terminal is connected, Warpeer runs as an Android foreground service and shows an ongoing notification. This keeps your connections open when you switch to another app or turn off the screen. ",[23,269,270],{},"Prevent Sleeping"," keeps the display on while a terminal is in front, and ",[23,273,274],{},"Keep Alive Interval"," sets how often Warpeer sends SSH keep-alive packets.",[15,277,279],{"id":278},"when-a-connection-drops","When a connection drops",[11,281,282,283,286,287,290],{},"If a live connection drops, the tab keeps its last screen and shows ",[23,284,285],{},"Connection lost"," with ",[23,288,289],{},"Reconnect",". Your tmux or Herdr session kept running on the server, so attach it again after reconnecting.",[11,292,293,294,297,298,144,301,304,305,69],{},"If a new connection fails, Warpeer shows ",[23,295,296],{},"Connection Error"," with the endpoint, a summary, suggestions and the technical details, plus ",[23,299,300],{},"Retry",[23,302,303],{},"Close",". See ",[244,306,308],{"href":307},"\u002Fdocs\u002Fandroid\u002Ftroubleshooting","Troubleshooting",{"title":168,"searchDepth":169,"depth":169,"links":310},[311,312,313,314],{"id":196,"depth":169,"text":197},{"id":249,"depth":169,"text":250},{"id":263,"depth":169,"text":264},{"id":278,"depth":169,"text":279},"Keep several SSH terminals open, move between them and come back after a dropped connection.",{},3,"\u002Fdocs\u002Fandroid\u002Fsessions",{"title":188,"description":315},"docs\u002Fandroid\u002Fsessions","rr1I0JO0Ppsy2fptAy9I06xiG5BKp97-l_q2RvcFCOE",{"id":323,"title":324,"body":325,"date":175,"description":416,"extension":177,"meta":417,"navigation":179,"order":418,"path":419,"platform":182,"seo":420,"stem":421,"__hash__":422},"docs\u002Fdocs\u002Fandroid\u002Ffiles.md","Files over SFTP",{"type":8,"value":326,"toc":412},[327,330,334,358,361,365,409],[11,328,329],{},"Warpeer opens a server's files over SFTP using the same saved host and credential as its terminal.",[15,331,333],{"id":332},"open-files","Open files",[88,335,336,343,351],{},[91,337,338,339,342],{},"On the ",[23,340,341],{},"Hosts"," tab, tap the folder button and choose a host.",[91,344,345,346,348,349,69],{},"In a terminal, tap ",[23,347,203],{}," in the session dock and choose ",[23,350,210],{},[91,352,353,354,357],{},"Tap the ",[23,355,356],{},"SFTP"," floating key, which is on the default pad, to open the files of the current tab's host.",[11,359,360],{},"The browser opens in your home folder. Tap a folder to open it, and use the up arrow to return to the parent folder. The path is shown under the title.",[15,362,364],{"id":363},"manage-files","Manage files",[88,366,367,373,379,394,403],{},[91,368,369,372],{},[23,370,371],{},"Upload"," opens the Android file picker and copies the chosen file into the current folder.",[91,374,375,378],{},[23,376,377],{},"New folder"," creates a folder in the current folder.",[91,380,381,382,385,386,389,390,393],{},"Long-press an item to ",[23,383,384],{},"Download"," a file to a location you choose, ",[23,387,388],{},"Rename"," it or ",[23,391,392],{},"Delete"," it. Deleting asks for confirmation and removes the item from the server. A folder must be empty before it can be deleted.",[91,395,396,399,400,69],{},[23,397,398],{},"Show hidden files"," at the end of the list reveals dot files such as ",[213,401,402],{},".bashrc",[91,404,405,408],{},[23,406,407],{},"Refresh"," reloads the folder.",[11,410,411],{},"File previews and git status and diffs, available in Warpeer for iPhone, are not in the Android build yet.",{"title":168,"searchDepth":169,"depth":169,"links":413},[414,415],{"id":332,"depth":169,"text":333},{"id":363,"depth":169,"text":364},"Browse a server's files, upload and download them, and organize folders from Android.",{},5,"\u002Fdocs\u002Fandroid\u002Ffiles",{"title":324,"description":416},"docs\u002Fandroid\u002Ffiles","y1op_cXF5sMUKhppfKeu4gU0LZCtqb8YLKfNzf-zDm0",[424,547,186,4,322,676,797],{"id":425,"title":426,"body":427,"date":175,"description":540,"extension":177,"meta":541,"navigation":179,"order":542,"path":543,"platform":182,"seo":544,"stem":545,"__hash__":546},"docs\u002Fdocs\u002Fandroid\u002Fgetting-started.md","Get started on Android",{"type":8,"value":428,"toc":535},[429,432,436,469,476,480,498,501,505,527],[11,430,431],{},"Warpeer for Android is a native SSH terminal built on the same Ghostty renderer and SSH core as Warpeer for iPhone. It is in development and not on Google Play yet. This guide describes the current build so you know what to expect. It requires Android 12 or later, and there is no account to create.",[15,433,435],{"id":434},"add-your-first-host","Add your first host",[437,438,439,452,455,462],"ol",{},[91,440,441,442,444,445,447,448,451],{},"Open the ",[23,443,341],{}," tab and tap the ",[23,446,203],{}," button, or tap ",[23,449,450],{},"New Connection"," on the Sessions tab.",[91,453,454],{},"Enter a name, the host address, the port and your username.",[91,456,457,458,461],{},"Choose how to authenticate: type a password, or pick a saved ",[23,459,460],{},"Keychain"," credential. Leave the password empty when the server uses Tailscale SSH.",[91,463,464,465,468],{},"Tap ",[23,466,467],{},"Connect",". The check mark at the top saves the host without connecting.",[11,470,471,472,475],{},"While the form is open, Warpeer scans your local network for SSH servers that advertise themselves. Tap the scanning button next to the name to open ",[23,473,474],{},"Local SSH Devices"," and pick one instead of typing its address.",[15,477,479],{"id":478},"trust-the-server","Trust the server",[11,481,482,483,486,487,490,491,493,494,497],{},"The first time you connect, Warpeer shows the server's host-key fingerprint in ",[23,484,485],{},"Verify SSH Host",". Compare it with the fingerprint your server administrator or ",[213,488,489],{},"ssh-keygen -lf"," reports, then tap ",[23,492,467],{},". Later connections with the same fingerprint go through without another prompt. If the fingerprint changes, Warpeer shows ",[23,495,496],{},"SSH Host Key Changed"," with the saved and new fingerprints and connects only if you trust the new key.",[11,499,500],{},"Android asks once whether Warpeer may show notifications. Allow it so the system can show the ongoing notification that keeps your terminals connected in the background.",[15,502,504],{"id":503},"find-your-way-around","Find your way around",[88,506,507,512,517,522],{},[91,508,509,511],{},[23,510,255],{}," shows the terminals you have open and the hosts you used recently.",[91,513,514,516],{},[23,515,341],{}," holds your saved servers. The folder button opens a host's files over SFTP.",[91,518,519,521],{},[23,520,156],{}," stores credentials, snippets, known hosts and connection logs.",[91,523,524,526],{},[23,525,52],{}," sits in the top bar and controls the terminal, keyboard, appearance and privacy.",[11,528,529,530,534],{},"Next, read ",[244,531,533],{"href":532},"\u002Fdocs\u002Fandroid\u002Fhosts-and-keys","Hosts and SSH keys"," to set up key-based sign-in.",{"title":168,"searchDepth":169,"depth":169,"links":536},[537,538,539],{"id":434,"depth":169,"text":435},{"id":478,"depth":169,"text":479},{"id":503,"depth":169,"text":504},"What Warpeer for Android needs, how to add your first host and open a terminal.",{},1,"\u002Fdocs\u002Fandroid\u002Fgetting-started",{"title":426,"description":540},"docs\u002Fandroid\u002Fgetting-started","PJJD9OHDrJg5Qg_6Sj15KMYdpMBZ6o3mxxZEdYn7wwc",{"id":548,"title":533,"body":549,"date":175,"description":671,"extension":177,"meta":672,"navigation":179,"order":169,"path":532,"platform":182,"seo":673,"stem":674,"__hash__":675},"docs\u002Fdocs\u002Fandroid\u002Fhosts-and-keys.md",{"type":8,"value":550,"toc":663},[551,557,560,566,570,583,601,608,615,619,625,627,634,638,644,648],[11,552,553,554,556],{},"Everything you save in Warpeer stays on your Android device. Open the ",[23,555,156],{}," tab to manage it.",[15,558,341],{"id":559},"hosts",[11,561,562,563,565],{},"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,564,341],{}," tab, with a search field above them. Use the manage button on the Hosts heading to edit hosts or delete them.",[15,567,569],{"id":568},"keychain-credentials","Keychain credentials",[11,571,572,573,575,576,579,580,69],{},"A credential is a username with either a password or a private key. To add one, open ",[23,574,156],{},", choose ",[23,577,578],{},"Keychains"," and tap ",[23,581,582],{},"Add Keychain",[88,584,585,591],{},[91,586,587,590],{},[23,588,589],{},"Password",": type the password once and reuse it on any host.",[91,592,593,596,597,600],{},[23,594,595],{},"Private Key",": paste an OpenSSH private key (the text that begins with ",[213,598,599],{},"-----BEGIN OPENSSH PRIVATE KEY-----","). Add the passphrase if the key has one, and optionally the public key for reference.",[11,602,603,604,607],{},"Credentials are encrypted with a key held in the Android Keystore, so they cannot be read outside Warpeer on this device. Remember to add the matching public key to ",[213,605,606],{},"~\u002F.ssh\u002Fauthorized_keys"," on each server.",[11,609,610,611,614],{},"If a connection fails because the server rejected the credential, the connection error offers ",[23,612,613],{},"Change Credential",". Pick another saved credential and Warpeer remembers it for that host and connects again.",[15,616,618],{"id":617},"known-hosts","Known hosts",[11,620,621,624],{},[23,622,623],{},"Known Hosts"," lists every server fingerprint you have trusted. Delete an entry when a server is rebuilt so that Warpeer asks you to verify its new key.",[15,626,119],{"id":150},[11,628,629,631,632,69],{},[23,630,119],{}," are saved commands. Add them here, then paste them from the terminal or from a snippet key, described in ",[244,633,6],{"href":181},[15,635,637],{"id":636},"connection-logs","Connection logs",[11,639,640,643],{},[23,641,642],{},"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,645,647],{"id":646},"app-lock","App Lock",[11,649,650,651,49,653,157,655,658,659,662],{},"Turn on ",[23,652,647],{},[23,654,52],{},[23,656,657],{},"Security & Privacy",", to require a PIN or your fingerprint or face when Warpeer opens. The PIN is checked only on this device. With App Lock on, ",[23,660,661],{},"Blur in App Switcher"," hides your terminals in the recent apps screen.",{"title":168,"searchDepth":169,"depth":169,"links":664},[665,666,667,668,669,670],{"id":559,"depth":169,"text":341},{"id":568,"depth":169,"text":569},{"id":617,"depth":169,"text":618},{"id":150,"depth":169,"text":119},{"id":636,"depth":169,"text":637},{"id":646,"depth":169,"text":647},"Save servers, keep passwords and private keys in the Android Keystore, and lock the app.",{},{"title":533,"description":671},"docs\u002Fandroid\u002Fhosts-and-keys","DkqSIyIHtG_WHLvRRkTElgE6GonKzm7D6_l6873C7BM",{"id":677,"title":678,"body":679,"date":175,"description":790,"extension":177,"meta":791,"navigation":179,"order":792,"path":793,"platform":182,"seo":794,"stem":795,"__hash__":796},"docs\u002Fdocs\u002Fandroid\u002Fappearance.md","Appearance",{"type":8,"value":680,"toc":782},[681,688,692,705,709,716,720,737,741,755,759,766,770],[11,682,79,683,157,685,687],{},[23,684,52],{},[23,686,678],{},". A live preview shows each change before you leave the page.",[15,689,691],{"id":690},"light-and-dark","Light and dark",[11,693,694,697,698,144,701,704],{},[23,695,696],{},"App Appearance"," follows the system, or keeps Warpeer light or dark. The terminal has its own ",[23,699,700],{},"Light Terminal Theme",[23,702,703],{},"Dark Terminal Theme",", and switches with the rest of the app.",[15,706,708],{"id":707},"terminal-themes","Terminal themes",[11,710,711,712,715],{},"Warpeer for Android ships the same Ghostty theme catalogue as Warpeer for iPhone, plus the two Warpeer themes. Open ",[23,713,714],{},"Terminal Themes"," to search them by name and preview each palette.",[15,717,719],{"id":718},"text","Text",[11,721,722,723,26,726,144,729,732,733,736],{},"Choose between the bundled JetBrains Mono and Maple Mono NF fonts, and set the ",[23,724,725],{},"Font Size",[23,727,728],{},"Font Weight",[23,730,731],{},"Line Height",". With ",[23,734,735],{},"Pinch to Resize Text"," on, pinch the terminal to change the size on the spot.",[15,738,740],{"id":739},"cursor","Cursor",[11,742,743,746,747,750,751,754],{},[23,744,745],{},"Cursor Type"," sets the cursor shape: block, bar or underline. ",[23,748,749],{},"Blinking Cursor"," makes it blink after you stop typing, and ",[23,752,753],{},"Cursor Motion"," animates it when it moves.",[15,756,758],{"id":757},"app-icon","App icon",[11,760,761,762,765],{},"Under ",[23,763,764],{},"App Icon",", choose the owl icon style, Engraving or Sketch, and the colour of its title band: Clay, Ochre or Terracotta.",[15,767,769],{"id":768},"language","Language",[11,771,772,773,157,775,777,778,781],{},"Warpeer is available in English and Simplified Chinese. Open ",[23,774,52],{},[23,776,769],{},". ",[23,779,780],{},"Follow System"," uses your device language; any Chinese system language shows Simplified Chinese. Choose a language to fix it instead. Terminal output, command names and messages from your server are not translated.",{"title":168,"searchDepth":169,"depth":169,"links":783},[784,785,786,787,788,789],{"id":690,"depth":169,"text":691},{"id":707,"depth":169,"text":708},{"id":718,"depth":169,"text":719},{"id":739,"depth":169,"text":740},{"id":757,"depth":169,"text":758},{"id":768,"depth":169,"text":769},"Choose terminal themes for light and dark mode, fonts, cursor style, the app icon and the app language on Android.",{},6,"\u002Fdocs\u002Fandroid\u002Fappearance",{"title":678,"description":790},"docs\u002Fandroid\u002Fappearance","MbNnBR5zBfcRnQRE0O6hsqqo9XijrEAjGxXQlZbdAWY",{"id":798,"title":799,"body":800,"date":175,"description":891,"extension":177,"meta":892,"navigation":179,"order":893,"path":307,"platform":182,"seo":894,"stem":895,"__hash__":896},"docs\u002Fdocs\u002Fandroid\u002Ftroubleshooting.md","Troubleshooting and support",{"type":8,"value":801,"toc":885},[802,806,817,846,850,857,861,864,868],[15,803,805],{"id":804},"a-host-will-not-connect","A host will not connect",[11,807,808,809,811,812,157,814,816],{},"When a connection fails, Warpeer shows ",[23,810,296],{}," with the endpoint, a summary, suggestions and the technical details. Open ",[23,813,156],{},[23,815,642],{},", for the full history. Common causes:",[88,818,819,825,837],{},[91,820,821,824],{},[23,822,823],{},"Wrong address or port."," Check that you can reach the server from the device's network. Servers on a private network need a VPN such as Tailscale on the device.",[91,826,827,830,831,833,834,836],{},[23,828,829],{},"Authentication failed."," Check the username and the Keychain credential on the host, or tap ",[23,832,613],{}," to pick another one. For key sign-in, the public key must be in ",[213,835,606],{}," on the server, and an encrypted key needs its passphrase.",[91,838,839,842,843,845],{},[23,840,841],{},"SSH 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,844,623],{}," and connect again. If you did not expect a change, do not connect.",[15,847,849],{"id":848},"a-session-disconnects-in-the-background","A session disconnects in the background",[11,851,852,853,304,855,69],{},"Warpeer keeps connected terminals alive with a foreground service and an ongoing notification. If notifications are turned off for Warpeer, or a battery saver stops background apps, Android may close the connection. Allow notifications for Warpeer in Android Settings. Your tmux or Herdr session keeps running on the server; return to Warpeer and tap ",[23,854,289],{},[244,856,188],{"href":318},[15,858,860],{"id":859},"features-missing-compared-with-iphone","Features missing compared with iPhone",[11,862,863],{},"The Android build does not list tmux or Herdr sessions, coding agents, git status or live host metrics yet, and has no file previews, voice input or image attachments. These are not connection problems. Your terminal works without them.",[15,865,867],{"id":866},"send-feedback","Send feedback",[11,869,79,870,157,872,875,876,879,880,884],{},[23,871,52],{},[23,873,874],{},"Help & Feedback",", and tap ",[23,877,878],{},"Copy Diagnostics",". It copies only the app and Android versions, never hosts, commands, passwords, credentials or terminal output. Paste it into an email to ",[244,881,883],{"href":882},"mailto:support@warpeer.com","support@warpeer.com"," with a description of what happened.",{"title":168,"searchDepth":169,"depth":169,"links":886},[887,888,889,890],{"id":804,"depth":169,"text":805},{"id":848,"depth":169,"text":849},{"id":859,"depth":169,"text":860},{"id":866,"depth":169,"text":867},"Fix common connection problems on Android and send useful feedback.",{},7,{"title":799,"description":891},"docs\u002Fandroid\u002Ftroubleshooting","wfMNE-uCPClHnnmMlcTBUhnWMN2bP94atLcxlW1BqZ0",1792584210188]