Skip to content

Releases: amroja-biz/rockysurf

v0.1.6

Choose a tag to compare

@jbdamask jbdamask released this 15 Sep 19:14
eff59d7

Rocky Surf 0.1.6 fixes the Connect GitHub button. Install or upgrade with one command:

npx -y rockysurf

Rocky Surf needs Node 24 or newer.

What changed

  • Connect GitHub works as soon as you save the client ID. Saving OAuth App client ID on Settings said the value was applied, but the button stayed disabled until Rocky Surf restarted. Two things were wrong: the routes behind the button kept reading the configuration Rocky Surf started with, and the Settings page never asked again after a save. Both are fixed, so the button enables the moment the save lands, with no restart and no page refresh. (#510, #511)
  • The setup steps no longer say to restart, and the self-hosting guide says which value to paste: the one labelled Client ID on your OAuth App's page, not the number in that page's address. (#510, #511)

Everything else

Features, the Provider capability matrix, the security posture, and the roadmap are in the v0.1.0 release notes and are unchanged by this release.

v0.1.5

Choose a tag to compare

@jbdamask jbdamask released this 12 Sep 13:49
e58d798

Rocky Surf 0.1.5 puts herdr on every box. Install or upgrade with one command:

npx -y rockysurf

Rocky Surf needs Node 24 or newer.

What changed

  • herdr is part of every Surge Pack. herdr is a terminal workspace for coding agents: sessions live in a background server on the box, survive a dropped SSH connection, and each agent pane shows working, blocked or idle. It joins the base toolchain every pack installs, pinned to a tagged release and checked against the vendor's digests. tmux stays alongside it. (#498, #503)
  • Each agent gets its herdr integration. Claude Code, Codex, OpenCode, Grok Build, Cursor CLI, OMP and Pi each carry a Tool that wires the agent's status into herdr's pane list, so a box shows what its agents are doing without you opening each one. Amp has no target in herdr 0.9.0 and gets herdr alone. (#498, #503)
  • The Kitchen Sink Surge Pack. One box with every shipped terminal agent, herdr, and every integration, for the case of one server running several agents that you manage from one herdr window. Twelve packs now ship in the box. (#498, #503, #504)
  • Attach a box in one copy. Once a Server is running, its page shows herdr machine add rocky@<ip> --label <name>, ready to paste on your own machine, with a note about the SSH key. The HTTP API and the MCP server return the same string, so an agent that created a Server can hand you the attach command. Several boxes across several clouds then show up in one local herdr window. (#500, #501)
  • Every pack guide has a Herdr section, covering reattaching on the box and attaching it from your machine. (#498, #503)
  • The shared base toolchain has its own file. The fourteen Tools every pack references moved out of the Claude Code pack into packs/base.yaml. A mistake in one agent's pack file no longer empties the pack picker, and a community pack author no longer finds curl defined under "Claude Code". No pack's install plan changed. (#499, #502)
  • A changelog. CHANGELOG.md records every release, newest first, and the Help page links it. (#505)

Everything else

Features, the Provider capability matrix, the security posture, and the roadmap are in the v0.1.0 release notes and are unchanged by this release.

v0.1.4

Choose a tag to compare

@jbdamask jbdamask released this 10 Sep 13:42
e711548

Rocky Surf 0.1.4 is a fix release on top of 0.1.3. Install or upgrade with one command:

npx -y rockysurf

Rocky Surf needs Node 24 or newer.

What changed

  • hono 4.13.1 to 4.13.5. The web framework under the HTTP API picks up two upstream security fixes. One stops query-string parsing at the URL fragment, so an installation behind a reverse proxy can no longer read a parameter the proxy never saw. The other is in a static site generation function Rocky Surf does not use. (#492)
  • The READMEs say how to pick a port. npx -y rockysurf --port 3080 has worked since 0.1.0, and now both READMEs say so. (#496)
  • The READMEs name the cloud CLIs as prerequisites. AWS, Azure, and Google Cloud need their CLI installed and signed in. Hetzner needs only an API token. (#496)

Everything else

Features, the Provider capability matrix, the security posture, and the roadmap are in the v0.1.0 release notes and are unchanged by this release.

v0.1.3

Choose a tag to compare

@jbdamask jbdamask released this 10 Sep 01:18
efed914

Rocky Surf 0.1.3 is a fix release on top of 0.1.2. Install or upgrade with one command:

npx -y rockysurf

Rocky Surf needs Node 24 or newer.

What changed

  • The npm page links to rockysurf.com. The package's homepage was the GitHub README, so npmjs.com showed two links to the same place. Homepage is now the site, Repository is still GitHub. (#493)
  • The npm README is shorter. It now leads with the web app, frames MCP as the way to manage Servers from inside a coding agent, and drops the contributor material that lives in the repository. (#493)

No code changed in this release.

Everything else

Features, the Provider capability matrix, the security posture, and the roadmap are in the v0.1.0 release notes and are unchanged by this release.

v0.1.2

Choose a tag to compare

@jbdamask jbdamask released this 10 Sep 00:13
ca1897a

Rocky Surf 0.1.2 is a fix release on top of 0.1.1. Install or upgrade with one command:

npx -y rockysurf

Rocky Surf needs Node 24 or newer.

What changed

  • The New Server page has a Personal tab under Surge Pack. A pack you uploaded or wrote yourself used to appear under Community, next to packs installed from the Shop, and the Surge Packs page disagreed. The picker now has the same three tabs as that page: Official, Community, Personal. "Launch a server with this pack" opens on whichever tab holds the pack. (#487)
  • The README starts over. The opening now says what Rocky Surf is for, in the words from rockysurf.com, followed by install, features, MCP setup, and the Agent Skills. The npm page carries the same opening instead of contributor notes. (#488)
  • The backup section says what a backup holds. It never held cloud credentials; Rocky Surf does not store them. It holds the SSH keys Rocky Surf generates for your Servers and a GitHub token if you connected one, encrypted, next to the key that decrypts them.

Everything else

Features, the Provider capability matrix, the security posture, and the roadmap are in the v0.1.0 release notes and are unchanged by this release.

v0.1.1

Choose a tag to compare

@jbdamask jbdamask released this 08 Sep 21:19
8c99b20

Rocky Surf 0.1.1 is a fix release on top of 0.1.0. Install or upgrade with one command:

npx -y rockysurf

Rocky Surf needs Node 24 or newer.

What changed

  • npx -y rockysurf on an older Node now tells you what to do. On Node 20 and 22, npm's version picker skipped 0.1.0 and ran an empty placeholder package, which failed with "could not determine executable to run". 0.1.1 prints "rockysurf needs Node 24 or newer" with the install command instead. (#470)
  • The setup wizard sets things up. Choosing a cloud now shows that cloud's fields in place, saves them, and checks the credentials, showing "ready" or the exact reason it is not. Every step has Back. There is a "Your SSH key" step for people who already have a key. Nothing in the wizard refers to a config file or a documentation path. (#474)
  • "Use my current IP" on the SSH allow-list field, in the wizard and on Settings.
  • Region and zone fields validate as you type, and Save waits until they look right.
  • AWS is called AWS. Providers are named by the account you sign in to: AWS, Azure, Google Cloud, Hetzner Cloud, DigitalOcean.

Everything else

Features, the Provider capability matrix, the security posture, and the roadmap are in the v0.1.0 release notes and are unchanged by this release.

v0.1.0

Choose a tag to compare

@jbdamask jbdamask released this 08 Sep 21:22
265c390

Rocky Surf creates a Linux server on a cloud account you own, installs your coding agents on it,
and hands you an SSH command. It is one process you run on your own computer, and installing it is
one command: npx -y rockysurf.

What's in 0.1.0

  • Create a server, watch it build, then SSH in. You pick a cloud, a machine size and a software
    bundle. Rocky Surf launches the machine, installs the software over SSH, streams the install log
    to your browser, and gives you the SSH command at the end.
  • Four clouds ship with the release. Hetzner Cloud, AWS, Azure and Google Cloud. Every cloud is
    off until you switch it on, and each one authenticates with credentials you already have.
  • Surge Packs are the software bundles. A Surge Pack is a YAML file listing tools and install
    scripts, so you can read the whole thing before you trust it. Eleven ship in the release,
    covering Claude Code, Codex CLI, Amp, OpenCode, Gas Town, Pi and others.
  • Stop a box tonight, start it tomorrow. Your repositories, branches and shell history are
    where you left them. On most clouds a stopped machine costs storage rather than compute, and the
    stop dialog names the clouds that keep charging.
  • Three ways to drive it. A web UI on 127.0.0.1, an HTTP API, and a command line.
  • An MCP server, so a coding agent can do the work. rockysurf mcp exposes the server
    lifecycle as tools. What an agent may do comes from your config file, not from the agent's
    launch command, and the default grant is read and stop only.
  • Guardrails enforced on the server. A maximum number of servers, a limit on creates per hour,
    and a monthly spend cap. They apply to the web UI, the command line and the MCP tools alike.
  • Clone your GitHub repositories onto a new box. Public URLs clone anonymously. Private ones
    use a token you paste or a GitHub account you connect, and a box receives only the tokens its own
    repositories need.
  • Personal Providers. A cloud Rocky Surf does not ship can be an npm package you install under
    your data directory and name in the config file. DigitalOcean is the worked example.
  • A Shop tab. Community Surge Packs and Providers can be installed from a registry inside the
    app, with every install script shown to you first.
  • Backup and Restore on the Settings page. The backup holds encrypted rows and no key to them.
  • Bring your own cloud, keys and repositories. Rocky Surf resells nothing and proxies nothing.
    The cloud account and the bill are yours, and you sign your agents in yourself.

Providers

Provider Status Notes
Hetzner Cloud Ships in the CLI An API token read from an environment variable. No cloud firewall in 0.1, so SSH is reachable from anywhere and protected by key-only login and a pinned host key.
AWS Ships in the CLI The standard AWS credential chain. sshAllowedCidr is required and has no default. A server's public address changes when you stop and start it.
Azure Ships in the CLI A service principal, a managed identity, or az login. sshAllowedCidr is required. Needs a resource group you create yourself.
Google Cloud Ships in the CLI Application Default Credentials, or a service-account key file. sshAllowedCidr is required. A server's public address changes when you stop and start it.
DigitalOcean Personal provider, installed separately Not bundled in the CLI. Install @rockysurf/provider-digitalocean from npm under your data directory and name it in your config file. Its README has the steps. DigitalOcean bills for a droplet that is stopped.

Full capability details are in docs/providers/capability-matrix.md, which marks every value as
measured against a real cloud or reasoned from vendor documentation.

Packages on npm

  • rockysurf is what npx rockysurf installs, and the only package with a command.
  • @rockysurf/core is the control plane, for someone building their own composition root.
  • @rockysurf/provider-sdk is the frozen v0 contract a provider implements.
  • @rockysurf/provider-aws is the AWS provider.
  • @rockysurf/provider-azure is the Azure provider.
  • @rockysurf/provider-gcp is the Google Cloud provider.
  • @rockysurf/provider-hetzner is the Hetzner Cloud provider.
  • @rockysurf/provider-conformance is the acceptance suite a provider runs against itself.
  • @rockysurf/provider-digitalocean is the personal DigitalOcean provider, published because
    installing it is the only way to have it.

Security

SECURITY.md is the full statement, including the residual risks. The short version:

  • Nothing is hosted and nothing is reported. One process, one SQLite file, one admin, no
    accounts to sign up for and no telemetry. It listens on 127.0.0.1 by default and has no TLS of
    its own, so widening that should be paired with a reverse proxy or a firewall.
  • Rocky Surf stores no cloud credentials. There is no database table for them, and the setup
    route refuses a credential by name. Each cloud authenticates through its own path, and the config
    file names an environment variable rather than holding a value.
  • Stored secrets are encrypted. AES-256-GCM under a local master key, with each row's identity
    bound into the authentication data. No HTTP route returns decrypted secret material. There is one
    audited exception, the private-key download for a server you own, and a test enforces the rule
    rather than review.
  • Session tokens are opaque and only their hash is stored. A database leak yields hashes, not
    live sessions. The admin password is stored as a scrypt hash.
  • The MCP server has no privileges of its own. It speaks to the control plane over the same
    HTTP API a browser uses, so every limit applies to it by construction. It authenticates with a
    token you mint, and the token is not a capability. Scopes live in your config file, default to
    read and stop, and are re-checked when a tool is called.
  • SSH is opened to networks you name. AWS, Azure and Google Cloud require sshAllowedCidr and
    refuse to load without it. Opening SSH to the whole internet needs a second, separate setting.
    Hetzner has no cloud firewall in this release.
  • Host keys are pinned with no trust-on-first-use window. Core mints the host keypair before
    the instance exists and injects it, so the first connection is verified against a key it
    generated. rockysurf ssh pins too, and refuses to downgrade silently.
  • Every package is published from CI with provenance. npm trusted publishing lets the registry
    accept a publish only from this repository's release workflow, authenticated by a short-lived
    token GitHub mints for the run. No npm token exists anywhere, and each release waits for a human
    approval.

Known limitations

  • The MCP token is a full admin session valid for a year. Revoking it means signing out
    everywhere, which drops every session.
  • Scopes are a guardrail against mistakes and prompt injection, not a sandbox. An agent that can
    run shell commands on the same machine can read the token and call the API directly. The
    server-side limits are what still stop it.
  • The spend cap is an estimate from bundled price data, not a bill. An offering your cloud quotes
    no price for spends money the cap cannot see. Reaching the cap blocks new servers without
    stopping running ones.
  • Repositories attach only when a server is created. There is no way to add one to a running box,
    so the remedy is to terminate and recreate.
  • Backup and Restore are on the Settings page only. There are no command-line wrappers yet.
  • Connect GitHub works with github.com, not with GitHub Enterprise Server.
  • Master key rotation is not implemented. Rotating the key means recreating servers.
  • Region choice is not exposed for every cloud yet.
  • Rocky Surf is deliberately small. There are no devcontainers, no throwaway per-task sandboxes, no
    Windows support, and no multi-tenancy.

Roadmap

Tracked in issues #243 and #131.

  • A project website, and launch videos covering an overview, creating a Surge Pack, adding one to
    the Shop, and writing a Provider.
  • Serving the Help pages over MCP, so an agent can learn how to drive Rocky Surf on its own.
  • Signing the Surge Pack registry index, so trusting a community pack no longer rests on write
    access to the registry repository.
  • Per-token MCP scopes, so a token can be narrower than a full admin session.
  • Adding a repository to a server that is already running.
  • Command-line wrappers for Backup and Restore.
  • Region support for the clouds that still lack it, and an approximate-cost note everywhere a price
    is shown.
  • A shared tool library that no Surge Pack owns, so one bad file stops cascading into every pack
    that references it.

Install

Requires Node 24 or newer.

npx -y rockysurf

It prints an admin password once on first boot, so save it. Open http://127.0.0.1:3000 and sign
in. With no cloud configured it runs an in-memory provider, so you can create a server, watch it
boot and terminate it before pasting a real token.

Docker Compose, the agent quick start and the per-cloud setup pages are in the
README.

@rockysurf/provider-digitalocean 0.1.0

Choose a tag to compare

@jbdamask jbdamask released this 06 Sep 15:09
948c969