Noctra reads tickets from Linear, Jira, or GitHub Issues, writes the code, and opens the pull requests — then sees them through: answering review feedback, fixing failing CI, and taking direction from Telegram. The engineering hand that works while you sleep.
go install github.com/ahmadAlMezaal/noctra/cmd/noctra@latest Every tick, Noctra picks up tickets from Linear, Jira, or GitHub Issues, and runs each to a pull request in its own git worktree — so several tickets ship in parallel without stepping on each other.
Finds issues from Linear, Jira, or GitHub Issues.
→Routes per-ticket from the project's Repo: directive.
→Claude Code, OpenAI Codex, GitHub Copilot, or Antigravity CLI implements in an isolated worktree, on its own branch.
→Optional second-model gate, then gh pr create.
→Watches the PR, fixes feedback and CI, notifies all configured platforms (Telegram, Slack, Discord), and accepts Telegram commands.
Bounded, observable, and safe to point at real repos — the guardrails matter more than the autonomy.
With AUTO_ITERATE_PRS on, Noctra watches its open PRs and pushes follow-up commits for review feedback, inline threads, and failing CI — bounded by a per-PR cap.
Status pings fan out to Telegram, Slack, Discord, or all three. Telegram is two-way too — check status, nudge work, and steer the night from chat.
On a schedule, Noctra sweeps repos for upkeep no one filed a ticket for — lint, dead code, dependency bumps, doc drift, bug fixes — a PR each, spread across repos round-robin. Scope it with SWEEP_REPOS.
Poll Linear, Jira, GitHub Issues, or any mix at once. In Linear, run from the Next column or switch to the noctra label.
When a PR merges, Noctra distills the human edits into durable per-repo conventions — fed back on the next run, so it stops repeating mistakes.
Install via go install or a prebuilt binary. noctra setup writes your config; noctra doctor preflights tokens, tools, repos, and models.
Set DASHBOARD_ADDR for a live night-shift UI — active runs, queues, skips, and budget stats streamed over SSE, with per-run log tails. Operator auth adds kill, requeue, pause, and retry.
One Noctra, many repos. Each ticket routes from a Repo: directive on its Linear project — owner/name or any git URL — cloned on demand.
Your agent implements; an optional Gemini gate independently reviews the diff before the PR opens — a second model catches what the first missed.
Iteration caps, timeouts, dispatch limits, rate-limit detection, a trusted-reviewer allowlist, and auto-archival of no-op tickets — bots don't get blind trust.
A single static Go binary, cross-compiled for arm64 — it can live on a Raspberry Pi in your house, working overnight.
You wake up. Three PRs are waiting. CI is green. You review, you merge.
Open source, written in Go, no daemon to babysit. Install the CLI, run the wizard, pass preflight, then point it at a trigger state or label.
Pick your flavor — install script, brew on macOS, go install, or a prebuilt binary from GitHub Releases.
noctra setup writes config under ~/.noctra/.
Add a Repo: line to the Linear project's description — that's all the routing Noctra needs.
Move it to your trigger state or add the noctra label and watch it become a PR.
# recommended — installs the latest release binary, no Go toolchain curl -fsSL https://raw.githubusercontent.com/ahmadAlMezaal/noctra/main/scripts/install.sh | sh
# macOS — via Homebrew brew install ahmadAlMezaal/tap/noctra
# build from source with the Go toolchain go install github.com/ahmadAlMezaal/noctra/cmd/noctra@latest
# grab a prebuilt tarball for your OS/arch, then put it on your PATH # → https://github.com/ahmadAlMezaal/noctra/releases tar -xzf noctra_*.tar.gz && sudo mv noctra /usr/local/bin/
# guided setup → ~/.noctra/ noctra setup # preflight checks noctra doctor # start the night watch noctra
# In the Linear project's description: Repo: your-org/your-repo Branch: main # optional — defaults to the repo's default branch