Automation

Connect a runner

konnos Actions is Stage 2: self-hosted runners, workflows on push (and pull request), logs in the UI, secrets/variables, plus cancel and re-run on a finished run. Not a marketplace — shell steps you control.

What works today — and what does not

Does: register runners, discover workflows on push and pull_request, claim jobs, show logs, list runs, cancel a running/queued run, re-run a finished workflow, and inject account secrets and variables into job steps. PR pages show a checks strip when runs exist.

Does not (yet): matrix builds, marketplace actions, or hosted runners. Keep workflows to plain shell steps.

1. Register a runner

  1. 1

    Open Runners in settings

    Sign in, go to Settings → Actions → Runners, and register a runner with a short name (for example laptop-linux).

  2. 2

    Copy the one-time token

    After register, konnos shows a token once. Copy it — it cannot be recovered later. If you lose it, remove the runner and register a new one.

  3. 3

    Start konnos-runner

    On the machine that will run jobs, build and start the runner binary with that token:

    cd apps/runner
    go build -o konnos-runner .
    ./konnos-runner --server https://code.konnos.org --token <your-token>

    Leave it running. When it is online, the Runners page shows Online (last poll within about a minute).

2. Add a workflow

Put a YAML file under .konnos/workflows/ or .github/workflows/. Stage 1 only runs workflows that trigger on push, and only shell steps (run:).

# .konnos/workflows/hello.yml
name: Hello
on: push
jobs:
  greet:
    runs-on: self-hosted
    steps:
      - name: Say hello
        run: echo "hello from konnos Actions"

3. Push and watch

Push to a branch. The engine creates a run; your online runner claims the job, clones the repo, runs each step, and streams logs back.

Open the repository's Actions tab to see runs, then open a run for job logs. If a run stays queued, check that the runner is still online.

Private repositories

By default the runner uses whatever git credentials already exist on the host. For private repos you can pass --git-token (and optionally --git-user) so the clone URL can authenticate over HTTPS.

Secrets and variables

Secrets store sensitive values (encrypted, never shown again after save). Variables store plain config you can still see and edit. Both become environment variables on the runner; if the same name exists in both, the secret wins.

# .konnos/workflows/with-env.yml
name: With env
on: push
jobs:
  check:
    runs-on: self-hosted
    steps:
      - name: Use a variable
        run: echo "region=$DEPLOY_REGION"
      - name: Check a secret is set (do not echo real tokens in public logs)
        run: test -n "$API_TOKEN" && echo "secret is set"

Where things live in the UI