package icon

Horus

Run Claude Code, Codex, and OpenCode in a real Linux terminal on your phone
New in version 1.1.1
- Fix installs failing with "Could not get lock" or "Unable to lock database" when two apps install at once; they now take turns
- Debian: recover from an interrupted install instead of failing with "dpkg was interrupted" every time after
- Give slow first-time tool installs more time before stopping them
- Say so when claude.ai sends a web page instead of the Claude Code installer
- Show the length limit on username and project name fields
Your phone is an ARM64 Linux computer that spends most of its day running chat apps. Horus gives it a real job: it unpacks Alpine Linux inside the app and opens a terminal where Claude Code, Codex, and OpenCode can read your code, edit files, run the tests, and tell you what broke. You don't need root, Termux, or a computer.

Ask an agent to fix a failing test while you're on the bus, then put the phone away. Sessions run in a foreground service, so they keep working with the screen off, and Horus sends a notification when an agent finishes or needs an answer from you.

What you get

  • Coding agents in one tap. Pick an agent and Horus installs it the first time you open it, with the installer output right there in the terminal. You sign in inside each CLI; Horus never sees your provider credentials.

  • A real Linux shell. Alpine comes from a pinned minirootfs whose SHA-256 digest is checked before anything is unpacked, and git, curl, ripgrep, Python, and Node are installed on demand. npm test, pytest, and a static ffmpeg build all run the way they would on a server.

  • A terminal you can use with your thumbs. Swipe typing works, links open with a tap, and a key bar above the keyboard adds Esc, Tab, arrows, paste, and one-shot Ctrl and Alt.

  • Your projects. Create a folder, clone any HTTPS or SSH Git URL, or sign in to GitHub and pick one of your repositories.

  • Up to four sessions at once, say Claude Code in one project and Codex in another, each with its own notification.

  • A file browser for checking what the agents changed, with text previews and a button that copies any folder to your Downloads.

  • A lock. An optional password protects the app, and the workspace locks itself after 15 minutes in the background.

  • Optional USB access from a computer. Pair the open-source horus command-line tool to get an SSH shell on the phone, copy files, forward ports, or run one command on several phones. It's off by default, listens only on the phone's loopback (reached through adb), and accepts only computers paired with your Horus password.



Things to know

  • Horus needs an ARM64 (arm64-v8a) phone running Android 7.0 or newer.

  • Alpine, its packages, and the agents download from their upstream servers when you first use them; mirrors are available in Settings for networks that can't reach those servers. Claude Code and Codex need accounts with their providers. Claude Code is proprietary, while Codex (Apache-2.0), OpenCode, and the shell are free software.

  • Android's app sandbox is the only security boundary. PRoot emulates user IDs but gives no kernel isolation, so don't run code you don't trust.


Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 1.1.1 (7) suggested Added on Oct 27, 2026

    arm64-v8a

    This version requires Android 7.0 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • read the contents of your shared storage
      Allows the app to read the contents of your shared storage.
    • ask to ignore battery optimizations
      Allows an app to ask for permission to ignore battery optimizations for that app.
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • modify or delete the contents of your shared storage
      Allows the app to write the contents of your shared storage.
    • com.scariflabs.horus.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 8.6 MiB PGP Signature | Build Log

  • New in version 1.1.0
    - Choose Alpine or Debian (experimental) at setup, and add a user on the other later
    - Sign in as either user; switching user stops the other's sessions
    - Rename your user; old /home paths keep working
    - sudo in your terminal and over SSH
    - Package install progress, and a screen that says why an app couldn't install
    - Log out from Settings
    - Home shows who is signed in
    - Claude Code, Codex and OpenCode over SSH share the app's logins
    - New avatars
  • Version 1.1.0 (6) - Added on Oct 22, 2026

    arm64-v8a

    This version requires Android 7.0 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • read the contents of your shared storage
      Allows the app to read the contents of your shared storage.
    • ask to ignore battery optimizations
      Allows an app to ask for permission to ignore battery optimizations for that app.
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • modify or delete the contents of your shared storage
      Allows the app to write the contents of your shared storage.
    • com.scariflabs.horus.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 8.6 MiB PGP Signature | Build Log

  • New in version 1.0.4
    - Swipe typing and keyboard suggestions in the terminal
    - CTRL and ALT apply to one key, so ^S can no longer freeze the shell
    - Multi-threaded programs such as ffmpeg no longer end the session
    - Faster output, and the view keeps up with the newest lines
    - Agent installs show download progress as a percentage
    - Fixes for the background service on Android 16 and a crash when Android refuses it
    - New screenshots and description
    - clear and exit work as expected in the bare terminal
  • Version 1.0.4 (5) - Added on Oct 12, 2026

    arm64-v8a

    This version requires Android 7.0 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • read the contents of your shared storage
      Allows the app to read the contents of your shared storage.
    • ask to ignore battery optimizations
      Allows an app to ask for permission to ignore battery optimizations for that app.
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • modify or delete the contents of your shared storage
      Allows the app to write the contents of your shared storage.
    • com.scariflabs.horus.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 8.2 MiB PGP Signature | Build Log