Skip to content

Repository files navigation

Oars logo

Oars

Operate every Linux server from one local window.
Open source server management for macOS and Linux, built around SSH.

Website · Download · Get started · Development · Issues · Sponsor

CI build status MIT license

Oars - Your Linux servers, together in one local workspace | Product Hunt Featured on Smol LaunchPad

Oars file manager with local files and a connected Linux server side by side

Oars brings terminals, files, logs, monitoring, deployments, backups, and remote desktops into one desktop app. Connect to your Linux servers over SSH, keep connection credentials in your OS credential store, and move between daily tasks without leaving your workspace.

Use it to investigate a slow server, move files, deploy an application, run scripts across your fleet, or open a remote desktop when you need a graphical interface.

Why Oars

  • One workspace for your fleet. Save server profiles, organize groups, and keep up to 16 server views open, with up to four panes per scroll section.
  • Start with SSH. Connect with a password, private key, or SSH agent, including through a jump host. Review host fingerprints before trusting a new server.
  • See what is happening. Inspect CPU, memory, disks, and processes, then search or follow logs without installing a monitoring agent.
  • Work with files and terminals. Open interactive shells and browse, transfer, edit, and manage remote files over SFTP.
  • Run repeatable operations. Save scripts, run them across servers, review deployment plans, and schedule rclone-backed backups.
  • Manage server access. Work with SSH keys, authorized users, key rotation, and onboarding or offboarding from the same workspace.
  • Open a remote desktop. Connect to VNC through an SSH tunnel, with clipboard controls, scaling, and full-screen mode.
  • Bring your own AI provider. Ask about server context and review proposed commands before execution.
  • Keep a local record. Search command history and audit events, review outcomes, and export your configuration.

Download

Download for macOS (Apple Silicon) · Download for macOS (Intel) · Download for Linux (x86_64)

These links download the latest release files directly. Public release downloads do not require a GitHub account. See release notes and checksums for more details.

On macOS (Apple Silicon or Intel) and Linux x86_64, you can also install Oars with Homebrew:

brew install --cask onyedikachi-david/tap/oars

Run brew update and brew upgrade --cask onyedikachi-david/tap/oars to update. The Homebrew tap selects the package for your operating system and CPU. The macOS security instructions below still apply.

Linux requires a graphical desktop, GTK4, and WebKitGTK 6.0. On Ubuntu 24.04, install the runtime libraries before launching oars:

sudo apt install libgtk-4-1 libwebkitgtk-6.0-4

Ubuntu may also require the Oars-specific AppArmor profile supplied by the cask. Follow the Linux runtime setup before launching.

The Linux release is tested on Ubuntu 24.04 x86_64. Other distributions need compatible system libraries; Linux ARM builds are not published.

Application updates

In updater-enabled macOS builds, open Settings → Updates to control automatic checks and background downloads. Updates install on quit or after a restart that does not interrupt active work. Linux builds notify you when a release is available and direct Homebrew installations through Homebrew.

Older versions need one normal upgrade to receive the updater. See update setup and release signing.

Get started

  1. Choose your operating system from the download links above, or build from source.
  2. Open Oars and select Add server. Enter the host, SSH user, and authentication method.
  3. Check the server's host fingerprint against a trusted source, then connect.
  4. Open Monitor, Terminal, Logs, or Files, or choose another tool from the server's menu.

Oars runs on macOS and Linux and connects to Linux servers. Windows is not currently supported. Some tools need software on the remote server, such as rclone for backups or a VNC server and desktop environment for remote desktop access.

macOS packages are currently unsigned and not notarized. If macOS blocks a download you trust, follow Apple's instructions for opening an unidentified app.

For newer builds, successful CI runs provide oars-macos-arm64, oars-macos-x86_64, and oars-linux-x86_64 artifacts. These are release-optimized builds; downloading workflow artifacts requires a GitHub account.

In pictures

Remote desktop — a Linux desktop inside your SSH workspace

Oars connected to an XFCE desktop over an SSH tunnel

Logs — discover sources, search output, and follow changes

Oars server log browser and log output

AI assistance — server conversations and reviewed commands

Oars AI assistant with a configured provider and a reviewed server command

Deployments — prepare an application for deployment

Oars application deployment workspace

History — commands, results, and audit events

Oars command history with timestamps, exit codes, and replay controls

Full screen — more room for your remote desktop

Oars remote desktop in full-screen mode

Your data

Server profiles, settings, command history, and audit records are stored on your device. Connection passwords and provider credentials use the OS credential store. Configuration exports exclude stored credentials and can be encrypted with a password.

AI features send the context you choose to the provider you configure. Review that context before sending it. History redaction is best effort: unknown secrets can remain in command text or output. Interactive shell history capture is optional and requires shell integration.

Local development

Oars uses a Zig core, a React and TypeScript frontend, and the Native SDK desktop WebView. SSH and cryptography use vendored libssh2 and mbedTLS sources.

Requirements

  • Zig 0.16.
  • Node.js 24 and npm.
  • Native SDK CLI 0.7.1.
  • macOS: Xcode Command Line Tools (xcode-select --install).
  • Linux: GTK4 and WebKitGTK 6.0 development packages. On Ubuntu, run sudo apt install pkg-config libgtk-4-dev libwebkitgtk-6.0-dev.

Run locally

git clone https://github.com/onyedikachi-david/oars.git
cd oars

npm install --global @native-sdk/cli@0.7.1
export NATIVE_SDK_PATH="$(npm root --global)/@native-sdk/cli"

npm ci --prefix frontend
zig build dev

This starts the Vite development server and the native desktop shell. You can also point NATIVE_SDK_PATH at a local SDK checkout or pass -Dnative-sdk-path=/path/to/native-sdk.

Common commands

Command Purpose
zig build dev Run the frontend dev server and native shell
zig build run Run the native shell with the built frontend
zig build test Run the Zig tests
npm --prefix frontend run typecheck Check frontend types
npm --prefix frontend test Run the frontend tests
zig build package -Dpackage-target=macos Build a macOS release package on macOS
zig build package -Dpackage-target=linux Build a Linux release package on Linux
native doctor --manifest app.zon Check desktop SDK and platform prerequisites

Packages are written to zig-out/package/. Run each package command on its matching operating system; the target option does not provide the other platform's WebView dependencies.

Build options and diagnostics

Common build options (see build.zig):

zig build run -Dplatform=macos -Dweb-engine=chromium
zig build run -Dplatform=macos -Dweb-engine=chromium -Dcef-auto-install=true
zig build run -Dnative-sdk-path=/path/to/native-sdk
native doctor --web-engine chromium

Diagnostics:

NATIVE_SDK_LOG_DIR=/tmp/oars-logs NATIVE_SDK_LOG_FORMAT=jsonl zig build run
Project layout and architecture
Path Contents
src/ Zig core, SSH sessions, storage, and native bridge
frontend/ React interface, terminal, and feature tabs
website/ Product website and redacted screenshots
third_party/ Vendored libssh2 and mbedTLS sources
scripts/ Development helpers and integration test fixtures
app.zon Application identity, permissions, and window configuration
build.zig Native build, frontend steps, and packaging
  • One worker thread per SSH session owns every libssh2 call (the library is not thread-safe). The main thread never blocks on the network.
  • Bridge RPC (oars.* in src/bridge.zig) is invoke/response only — no native-to-JS push. The frontend polls oars.ssh.poll (and feature-specific poll endpoints) with per-channel cursor deltas (cursor, dropped, rewind, 4 MB cap).
  • Streaming reuse — logs tail, deploy output, broadcast, and backup progress all reuse the same cursor-delta protocol.
  • Persistence — local JSON/JSONL stores (servers.json, history.jsonl, audit.jsonl, …) written atomically via temp+rename with 0600 file permissions; corrupt files are quarantined, not silently discarded.
  • WebView origins — zero://app (packaged) and zero://inline plus http://127.0.0.1:5173 in dev; external navigation is denied. VNC's WebSocket upgrade validates the packaged origin and the Sec-WebSocket-Key handshake.
Release process

Release Please reads Conventional Commits on main and automatically maintains a release pull request containing the next SemVer version and a detailed CHANGELOG.md. Merge that release PR when it is ready. The same workflow then creates the vX.Y.Z tag and GitHub Release, builds and launches the packages on Apple Silicon macOS, Intel macOS, and Linux x86_64, and attaches the macOS ZIPs, Linux tarball, and SHA-256 checksums. Do not create release tags manually.

The Homebrew tap checks for completed stable releases hourly and updates its cask after verifying all three packages and their checksums. Its Update Oars workflow can also be run manually after the release assets finish uploading. This uses the tap's own GitHub token and requires no additional secret in this repository.

The application version is synchronized through version.txt, app.zon, and build.zig. Repository settings must allow the release bot to write and open pull requests: Settings → Actions → General → Workflow permissions → Read and write permissions, then enable Allow GitHub Actions to create and approve pull requests.

Use Conventional Commit prefixes so the version and changelog category are calculated correctly: feat: for a minor release, fix: for a patch, and feat!:/fix!: or a BREAKING CHANGE: footer for a major release.

Contributing

Bug reports and pull requests are welcome. For a bug, include your operating system, Oars version, reproduction steps, and relevant logs with credentials and private server details removed.

For code changes, explain the problem and the resulting behavior, and run the checks relevant to your change. Use Conventional Commit titles such as fix: or feat: so releases can generate the changelog.

Support Oars

If Oars helps you manage your servers, consider sponsoring its development on GitHub. Your support helps fund maintenance and continued development.

You can also help by starring Oars on GitHub, reporting bugs, contributing fixes, or sharing it with other developers.

License

Oars is licensed under the MIT License. Vendored dependencies retain their own licenses.

About

Operate every Linux server from one local window. Open source server management for macOS and Linux. Free.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages