Skip to main content

Remote development environment CLI

Project description

Remo

Spin up a fully-configured development environment in minutes. One command gives you a persistent, secure coding environment with Dev Containers support.

Prerequisites

  • uv (install: curl -LsSf https://astral.sh/uv/install.sh | sh)
  • SSH client
  • Ansible 2.14+ (installed automatically by remo init)

Installation

# Clone and install
git clone https://github.com/get2knowio/remo.git ~/.remo
cd ~/.remo
uv sync                         # Base install
uv sync --all-extras            # With all provider SDKs (boto3, hcloud)
uv sync --extra aws             # AWS only (boto3)
uv sync --extra hetzner         # Hetzner only (hcloud)

# Initialize (installs Ansible collections)
uv run remo init

After installation, update with:

uv tool upgrade remo-cli

Choose Your Platform

Hetzner Cloud AWS Incus
Type Cloud VM Cloud VM Local container
Location EU/US datacenters Global regions Your hardware
Cost ~€4/month ~$30/month Your electricity
Storage Block volume Root volume (SSM) / EBS (direct) Host mounts
Access Server IP SSM (default) / Elastic IP LAN hostname
Best for EU, budget hosting US, enterprise, spot instances Local dev, homelab

All platforms give you the same dev workflow and tooling described below.


The Dev Workflow

SSH in and you're greeted with an interactive project menu:

ssh remo@your-host

  Remote Coding Server
  --------------------

> my-project - active
  another-project
  [Clone new repo]
  [Exit to shell]

Select a project and you're in a persistent Zellij session. Devcontainer projects auto-start their container. Disconnect anytime—your session survives.

Project Menu

The fzf-powered menu shows your projects from ~/projects:

  • Arrow keys or 1-9: Select a project
  • Enter: Launch/attach to the project's Zellij session
  • c: Clone a new repository
  • x: Exit to shell

Persistent Sessions

Zellij keeps your terminal sessions alive:

  • Detach: Ctrl+d returns to the project menu
  • Reconnect: SSH back in, select the same project to resume

What's Installed

Every remo environment includes:

Tool Description
Docker + Compose Official Docker CE with compose plugin
Dev Containers CLI devcontainer up, devcontainer exec, etc.
Node.js 24 LTS From NodeSource repository
GitHub CLI gh for GitHub workflow integration
Zellij Terminal multiplexer for persistent sessions
fzf Fuzzy finder powering the project menu (server-side)

CLI Quick Reference

# Connect to environment
remo shell                          # Auto-connect (or picker if multiple)
remo shell -L 8080                  # Shell + forward remote :8080 to local :8080
remo shell -L 9000:8080             # Shell + forward remote :8080 to local :9000
remo shell -L 8080 -L 3000          # Shell + forward multiple ports
remo shell -L 8080 --no-open        # Skip auto-opening browser

# Setup
remo init                           # Install dependencies

# Hetzner Cloud
remo hetzner create                 # Provision VM
remo hetzner list                   # List registered VMs
remo hetzner sync                   # Discover existing VMs
remo hetzner update                 # Update dev tools
remo hetzner destroy [--yes]        # Tear down (keeps volume)

# AWS (SSM access — no inbound ports)
remo aws create                     # Provision EC2 via SSM
remo aws create --spot              # Use spot instance (~70% savings)
remo aws list                       # List registered instances
remo aws sync                       # Discover existing instances
remo aws update                     # Update dev tools
remo aws stop [--yes]               # Stop instance (pause billing)
remo aws start                      # Start a stopped instance
remo aws destroy [--yes]            # Tear down (keeps storage)
remo aws info                       # Show instance info

# Incus Containers
remo incus create <name> [--host H] # Create container
remo incus list                     # List registered containers
remo incus sync [--host H]          # Discover existing containers
remo incus update <name>            # Update dev tools
remo incus destroy <name> [--yes]   # Destroy container
remo incus bootstrap                # Initialize Incus on host

# Updates
uv tool upgrade remo-cli            # Update to latest version

# Help
remo --help
remo <command> --help

See platform-specific docs for full options:

Environment Variables

Variable Description
REMO_HOME Config directory for remo state (default: ~/.config/remo)

Troubleshooting

Installed remo on a new machine with existing instances?

remo aws sync       # Discover AWS instances with 'remo' tag
remo hetzner sync   # Discover Hetzner VMs with 'remo' label
remo incus sync     # Discover Incus containers

SSH connection fails?

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Ansible collection not found?

remo init  # Reinstalls dependencies

Platform-specific issues? See troubleshooting sections in:


Uninstalling

To fully remove remo from your machine:

# 1. Remove the remo installation (cloned repo + venv)
rm -rf ~/.remo

# 2. Remove the symlink
rm -f ~/.local/bin/remo

# 3. Remove remo config and state (known_hosts registry)
rm -rf ~/.config/remo
Path Contents
~/.remo/ Cloned repo, virtual environment (.venv/), Ansible collections
~/.local/bin/remo Symlink to ~/.remo/remo
~/.config/remo/ Runtime state: known_hosts (environment registry)

These paths can be customized during install via REMO_INSTALL_DIR, REMO_BIN_DIR, and REMO_HOME environment variables.

Note: Uninstalling remo does not destroy any cloud resources (EC2 instances, Hetzner VMs, Incus containers). Run remo <platform> destroy first if you want to tear those down.


License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remo_cli-0.8.0rc1.tar.gz (272.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

remo_cli-0.8.0rc1-py3-none-any.whl (43.5 kB view details)

Uploaded Python 3

File details

Details for the file remo_cli-0.8.0rc1.tar.gz.

File metadata

  • Download URL: remo_cli-0.8.0rc1.tar.gz
  • Upload date:
  • Size: 272.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for remo_cli-0.8.0rc1.tar.gz
Algorithm Hash digest
SHA256 af49eb19ac8816b138ee2a1bf2ca11101dbc753ab73bb350053aba35258c8386
MD5 47b47d4fbf411f6a5b66531c8647401a
BLAKE2b-256 a42306383334bebef851314970d4746d9d7e343f0eef3ad48a7c93f6a7da61a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for remo_cli-0.8.0rc1.tar.gz:

Publisher: release.yml on get2knowio/remo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file remo_cli-0.8.0rc1-py3-none-any.whl.

File metadata

  • Download URL: remo_cli-0.8.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 43.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for remo_cli-0.8.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 fa82b4345113a9026bf57683db1e6424f80fc68c1166217bbdf02e2590a5478f
MD5 48d33b9d448388b1f48de8d0e4d44ead
BLAKE2b-256 f82126c7c54a2769b9439987f62b930e81133b119aa47d21cad8c1a51e5fb5cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for remo_cli-0.8.0rc1-py3-none-any.whl:

Publisher: release.yml on get2knowio/remo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page