Push code. Get a green build.

CI/CD that writes its own pipeline.Loha reads your repo and opens a merge request with a .loha.yml. Review it, merge it, and it stays plain config in your own repo.

Free plan: 60 build minutes a month, no card needed

Add Loha pipeline!1

Loha opened this merge requestloha/pipeline/3f9c… → main

.loha.yml new fileDockerfile
1+ name: container-build
2+ on:
3+ push: { branches: [main] }
4+ pull_request: { branches: [main] }
5+ jobs:
6+ build:
7+ steps:
8+ - uses: loha/git-clone@v1
9+ - name: Test
10+ uses: loha/run-tests@v1
11+ with: { TEST_COMMAND: npm ci && npm run test }
12+ - name: Build & Push Image
13+ uses: loha/docker-build@v1
14+ with: { IMAGE: registry.example.com/team/api:${COMMIT_SHA} }
Mergethe merge commit starts build #1
✓ Clone Repository✓ Test✓ Build & Push Image

You connect and merge. Loha writes the rest.

  1. Connect your repo

    Pick a repository from your Git host.

    You

  2. Get a pipeline

    Loha reads the code and opens a merge request with a .loha.yml.

    Loha

  3. Review and merge

    Read it like any other change. The merge commit starts the first build.

    You

  4. Push as usual

    Every push is tested and built. Images go to your own registry.

    Loha

Your team pushes.Loha does the rest.

Checked before it ships

Every push is checked for leaked secrets. Add an image scan to the pipeline and any finding above your threshold blocks the release. Professional and up also sign images with an SBOM.

build #48 · security
✓ secret scan no leaked secrets
✗ image scan 2 critical
openssl 3.0.13 fixed in 3.0.15
libexpat 2.5.0 fixed in 2.6.3
■ release blocked (threshold high)

Rerun only what failed

One version of the test matrix fails. Retry failed jobs runs that job again, then the jobs waiting on it. The jobs that passed keep their results.

build #51 · jobs
✓ lint
✓ test node 22
✗ test node 24 exit 1
Retry failed jobs
✓ test node 24 retried
✓ image ran after the retry

See what will run before you push

loha plan reads your .loha.yml and lists every job, step and image the cluster would run for a branch, what it would skip, and why. Nothing is built.

$ loha plan --branch feat/login
Plan for .loha.yml on feat/login (pull_request)
build [micro 0.25 / 256Mi]
emu clone alpine/git
↳ Replaced by the staged working tree.
run Lint node:20-alpine
run Test node:20-alpine
skip Build & Push Image
↳ Condition `event == 'push'` is false for event pull_request.

For larger teams: workspaces with owner, admin, member and guest roles, service accounts for automation, an audit log, and build insights per repo. Enterprise adds custom limits and terms.

What teams run on Loha.

Real setups, step by step, with the .loha.yml behind them.

Library or API that has to work on several Node versions

  1. Add a matrix of Node versions
  2. Attach Postgres as a service to each instance
  3. Each version runs in its own workspace, in parallel
  4. One version fails? Rerun only that one
.loha.yml
test:
strategy:
matrix: { node: ['22', '24'] }
services:
postgres: { image: postgres:16 }
✓ node 22 ✗ node 24 (each version reports on its own)

Fits the stack you already run.

Keep your repo host, your registry, your databases and your chat. Loha plugs into them. Nothing to rip out.

Repo hosts
  • GitLab
  • GitHub
  • Gitea
  • Forgejo
Image registries
  • Docker Hub
  • Harbor
  • GHCR
  • Any OCI registry
Services in your builds
  • PostgreSQL
  • Redis
  • MySQL
  • MongoDB
Toolchains
  • Node.js
  • Python
  • Go
  • Java
Build security
  • Trivy
  • cosign
  • CycloneDX SBOM
Notifications
  • Slack
  • LINE
  • Email
  • Webhooks

Start free. Grow when you need to.

Plans
PlansPrice
FreeTry Loha on one project.60 build minutes / monthStart free฿0 / month
StarterRecommendedFor a small team shipping every day.5,000 build minutes / monthChoose Starter฿490 / month
ProfessionalBigger machines and signed images.20,000 build minutes / monthChoose Professional฿2,990 / month
EnterpriseCustom limits and terms.Unlimited build minutesContact usCustom

Your first green build starts with one merge.

Start free

Free plan: 60 build minutes a month on one project. Add your registry credentials to push images.