Skip to content
 
 

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

                                                               
eeee eeee eeeee  eeeee eeeee  eeeee eeeee  eeeee eeeee e  eeee 
8    8    8   8  8   8 8   8  8  88 8   8  8  88   8   8  8  8 
8eee 8eee 8eee8e 8e  8 8eee8e 8   8 8eee8e 8   8   8e  8e 8e   
88   88   88   8 88  8 88   8 8   8 88   8 8   8   88  88 88   
88   88ee 88   8 88  8 88   8 8eee8 88eee8 8eee8   88  88 88e8 
                                                               

skip the compute factor, run your robotics sim out in the cloud

Install

Install the native Fern CLI through Bun:

bun install --global @coolcmyk/fern
fern --help

Or run a temporary cached copy:

bunx @coolcmyk/fern --help

See the installation guide for supported platforms and configuration. The package uses a platform-specific native Rust binary and does not run a download script during installation.

Status

Fern deploys the Drone Sim UE5.8/Cosys-AirSim runtime to a standard GPU Runpod Pod. The published image is interactive: Fern can create a fresh Pod and expose a protected noVNC desktop, while the user starts the simulator inside that Pod. See the implementation plan.

Configure Runpod

Set the API key once in your shell startup file so every Fern invocation can use it. Add this line to ~/.bashrc when using Bash or ~/.zshrc when using Zsh:

export RUNPOD_API_KEY="your-runpod-api-key"

Reload the matching shell configuration:

# Bash
source ~/.bashrc

# Zsh
source ~/.zshrc

Keep that file private and never commit it to a repository. Fern also supports RUNPOD_ACCOUNT_API_KEY, which takes precedence when both variables are set.

The current CLI provides Runpod discovery and a reversible stop operation:

fern config check
fern pod list --compute cpu
fern pod get <pod-id>
fern pod stop <pod-id>

Fern never prints either credential.

For a project-local setup instead, put the credential in an ignored .env file at the repository root:

RUNPOD_API_KEY=your-runpod-api-key

Drone Sim runtime image

.github/workflows/drone-sim-stack-image.yml builds the current coolcmyk/drone-sim main source on GitHub-hosted runners and publishes the complete Fern runtime as:

ghcr.io/coolcmyk/drone-sim:stack-main
ghcr.io/coolcmyk/drone-sim:stack-<fern-commit>

The workflow pulls the EULA-gated Epic UE base directly while building, then publishes only the completed runtime. EPIC_GHCR_USERNAME and EPIC_GHCR_PUBLISH_TOKEN must therefore grant the same account read access to Epic's package and write access to Coolcmyk GHCR. Fern selects stack-main by default; use --image to pin a tested digest. MAVLink, DDS, raw VNC and simulator-control ports remain private to the Pod.

QGroundControl noVNC viewer

Fern publishes only the password-protected noVNC viewer. It never exposes raw VNC, MAVLink, DDS, or simulator-control ports. Create the fresh GPU Pod with:

fern deploy --profile drone-sim-stack --vnc-viewer --yes

Fern returns https://<pod-id>-6080.proxy.runpod.net/vnc.html?autoconnect=true. The desktop and terminal are available immediately; enter the password (default: root) and run:

/opt/drone-sim/scripts/sim_up_local.sh --detach

That starts the local simulator services without Docker. Set FERN_VNC_PASSWORD before deploy to override the default for any shared deployment.

Develop

bun install
bun run test

Rust-only checks remain available through Cargo:

cargo test --all-targets
cargo clippy --all-targets -- -D warnings

About

Skip the hardware limits, run your robotics simulations in the cloud.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages