Actions & workflows

Write workflows, choose environments, run jobs, and inspect logs.

ActionsRunner beta

How to use Ramuvo Actions

A workflow is a YAML file in the repository. Ramuvo checks it out into a disposable runner, runs each step in order, stores logs, then removes the temporary workspace and containers. Actions is currently free on every plan.

    1Open the Actions tab
    In any repository you can write to, open Actions. The editor reads .ramuvo/workflows/ on the default branch.
    2Start from a starter
    Choose Node, Python, Go, Java, Web, or Discord bot. Edit the commands so they match your package scripts. Commit the file.
    3Add secrets if you need them
    Paste a .env into Development, Preview, or Production. Values are write-only. Pick that same environment when you run.
    4Run it
    Under Run on Ramuvo, choose the workflow and environment, then press Run workflow. Watch each step’s logs. Cancel if you need to stop it.
When a workflow runs

Run workflow always starts a run. That is workflow_dispatch.

If the file also lists push, Ramuvo starts it when that branch is pushed. Omit branches to limit this to the default branch, or set on.push.branches: [main, release/*]. A failed reservation or rate limit does not reject the git push.

pull_request starts when a pull request is opened or its source branch is pushed. Automatic runs on a fork wait for approval, same as production.

schedule uses a UTC cron, checked every five minutes: schedule: [{ cron: "0 4 * * *" }].

YAML that works today

name: Verify Node project
on:
  push:
  workflow_dispatch:
environment: development

jobs:
  verify:
    runner: basic
    timeout-minutes: 20
    steps:
      - uses: ramuvo/checkout@v1
      - uses: ramuvo/setup-node@v1
        with:
          node-version: "22"
      - name: Install
        run: npm ci
      - name: Test
        run: npm test
File location
One YAML file per workflow, named like verify.yml, under .ramuvo/workflows/.
Jobs and steps
At least one job. Each job must use runner: basic. A step is either uses or a shell run, not both.
Working directory
Optional working-directory is relative to the repository root. It cannot leave the tree.
env
Job or step env maps names to strings. Repository secrets for the selected environment are injected automatically.

Built-in actions

Other uses: values are rejected. Put extra setup in a run step.

ramuvo/checkout@v1
The selected commit is materialized before steps start. Use relative paths from the repository working directory.
ramuvo/setup-node@v1
The current runner includes Node 22. This helper checks Node and enables Corepack; requesting another version does not guarantee a version switch.
ramuvo/setup-python@v1
Installs Python 3, pip, and venv.
ramuvo/setup-go@v1
Requires Go to be available in the runner image. System package installation is unavailable in the non-root runner; this helper is not yet supported by the current Node runner.
ramuvo/setup-java@v1
Installs Java 21 and Maven.
ramuvo/cache@v1
Restore and save a folder between runs. with.key and with.path, 32 MiB max.

Publish files as a release

release.files
After every step succeeds, Ramuvo copies up to ten exact paths from the runner and attaches them to the repository Releases tab. Private repo permissions apply to downloads. Example: target/app.jar.
Release API
List releases with GET /api/repositories/:owner/:repo/releases. For private repositories, send Authorization: Bearer $RAMUVO_TOKEN. Each asset includes its name, absolute download URL, size, content type, and SHA-256 hash. Send the same bearer header when downloading a private asset.

Keep a process running

Actions jobs always stop. For a Discord bot or other always-on process, add ramuvo.yaml with service.type: worker and use Deploy ramuvo.yaml on the Actions tab, or let a successful workflow promote that commit. See the hosting guide. Node frontends and Hono/Wrangler apps belong on the Hosting tab - they deploy to Workers or Pages instead of a long-running process.

Secrets and free Actions

Write-only variables
Lock & save a .env. Values never come back through the API. Logs and failure text scrub secret strings. A workflow env cannot replace a secret of the same name, or set PATH / LD_PRELOAD.
Personal repository
Actions is free. No balance or subscription is required.
Organization repository
Actions is free for organizations and their collaborators.
Pro
Pro adds portfolio tools and longer workflow log retention. Actions stays free on every plan.

If a run fails

Read the failing step
Open the run. Red text is stderr. Exit codes come from your command, not from Ramuvo.
Common causes
Missing setup-node before npm ci, a script name that does not exist, or a secret that was saved to the wrong environment.
Cancel
Cancel pending or running work. Execution stops and its temporary workspace is removed. External effects already performed cannot be undone.
Editor validation
The editor will not commit a file that uses an unknown action, leaves the working directory, or has no jobs.

Runner limits and run controls

Git pushes trigger matching workflows according to their push configuration. Open Actions to inspect the new run and its step output. Cancel stops queued or running work. Rerun creates a new run of the selected workflow at the current default-branch commit and environment, with a fresh workspace; it does not replay a historical commit automatically.

The current runner uses Docker with gVisor, a non-root user, a read-only root filesystem, and a temporary shared workspace between steps. Limits are 2 CPUs and 2 GiB memory per step, a 512 MiB workspace, and one hour per job. Capacity is shared and runs may queue. Source snapshots are limited to 100 MiB and 5,000 files. Each output stream is capped at 128 KiB per step.

Public HTTP, HTTPS, and DNS access is available. Private networks, host access, SSH egress, privileged containers, nested Docker, and system package installation are unavailable. Use the provided toolchain or install tools into writable workspace paths. Only the listed Ramuvo built-ins are supported; GitHub Marketplace actions and full GitHub Actions syntax are not supported.

Keep credentials in repository secrets, review workflow changes before execution, and avoid printing secrets or encoded versions. Logs and stored execution payloads expire through scheduled cleanup after 30 days, or 90 days for qualifying active paid accounts; terminal history expires after one year. Caches and releases remain until replaced or deleted, including repository or account deletion. See workflow privacy and execution terms.

Browse all guides

Ramuvo is in early access. Access and available controls depend on your account and repository role.