Early development
Coding agents that ship pull requests, not surprises.
Halinka is a self-hostable platform for automating your software lifecycle. Workflows live in your repo, agents run in isolated sandboxes on your own machines, every step is checked by deterministic gates, and every change lands as a PR for a human to approve.
How it works
-
01
Trigger
A labeled issue, a schedule, or a click in the portal.
-
02
Implement
An agent works in a devcontainer sandbox on your worker.
-
03
Gate
Typecheck, tests, lint. Fail, and the agent tries again.
-
04
Review
Reviewer agents loop with the implementer until they approve.
-
05
Approve
You sign off in the inbox. Halinka opens the PR.
Workflows as code
YAML in your repo, edited in a visual builder.
Definitions live in .halinka/ and are
loaded from your default branch, so a pull request can never rewrite the run it
triggers. Non-developers edit drafts in the portal; publishing opens a PR.
# .halinka/workflows/issue-to-pr.yml
steps:
- id: fix_loop
type: loop
until: ${{ steps.review.outcome == 'approve' }}
steps:
- id: implement
type: agent
agent: claude-code
gates:
- run: pnpm test
on_fail: retry
- id: review
type: agent
agent: codex
permissions: { write: false }
- id: approve
type: approval
Built for trust
Your machines
Workers run on a homelab, a laptop or CI and only open outbound connections. No open ports.
Any ACP agent
Claude Code and Codex out of the box, over the Agent Client Protocol.
Isolated sandboxes
One devcontainer per run, with your services. Secrets never reach the agent.
Agents never merge
Every change is a checkpointed branch and a pull request. Humans decide.
Human in the loop
Answer questions, approve steps, or message a running agent from the inbox.
Fully observable
Live transcripts, a timeline, the diff per step and cost for every run.