Your repo's
night watch.

Your autonomous engineering hand

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
Integrations

Works with your stack.

Agents
ClaudeCodexCopilotAntigravity
Trackers
LinearJiraGitHub Issues
Notify
TelegramSlackDiscord
Review
Gemini
The loop

One ticket in. One PR out.

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.

poll trigger source → resolve repo → worktree → agent backend → review gate → push → open PR → watch ↺ review + CI + Telegram/Slack/Discord
01

Poll for work

Finds issues from Linear, Jira, or GitHub Issues.

02

Resolve repo

Routes per-ticket from the project's Repo: directive.

03

Dispatch agent

Claude Code, OpenAI Codex, GitHub Copilot, or Antigravity CLI implements in an isolated worktree, on its own branch.

04

Review & open PR

Optional second-model gate, then gh pr create.

05

See it through

Watches the PR, fixes feedback and CI, notifies all configured platforms (Telegram, Slack, Discord), and accepts Telegram commands.

What's under the hood

Built to be left unattended.

Bounded, observable, and safe to point at real repos — the guardrails matter more than the autonomy.

🔄

Self-iterating PRs

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.

Telegram · Slack · Discord

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.

🧹

Autonomous maintenance sweeps

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.

Multi-source triggers

Poll Linear, Jira, GitHub Issues, or any mix at once. In Linear, run from the Next column or switch to the noctra label.

🧠

Learns each repo

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.

🧰

Installable CLI

Install via go install or a prebuilt binary. noctra setup writes your config; noctra doctor preflights tokens, tools, repos, and models.

📊

Live dashboard

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.

🗂️

Multi-repo by ticket

One Noctra, many repos. Each ticket routes from a Repo: directive on its Linear project — owner/name or any git URL — cloned on demand.

Two minds, not one

Your agent implements; an optional Gemini gate independently reviews the diff before the PR opens — a second model catches what the first missed.

🛡️

Safe to leave alone

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.

🍓

Runs on a Pi

A single static Go binary, cross-compiled for arm64 — it can live on a Raspberry Pi in your house, working overnight.

Why Noctra

It doesn't just open the PR. It finishes the job.

🌙 Noctra

  • Sees the PR through — answers reviews + fixes CI
  • Telegram, Slack & Discord notifications; two-way Telegram control
  • Second model reviews before the PR opens
  • Routes to many repos, one per ticket
  • Linear, Jira & GitHub Issues triggers
  • Installable Go CLI with setup + doctor

Typical Linear→PR agents

  • Stops at “PR opened” (or auto-merges)
  • Single-channel alerts, if any
  • One model, no independent review
  • Single target repo per instance
  • Single-source trigger only
  • Manual clone/build/config steps
You wake up. Three PRs are waiting. CI is green. You review, you merge.
Get started

Up and running before midnight.

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.

  1. 1

    Install the CLI

    Pick your flavor — install script, brew on macOS, go install, or a prebuilt binary from GitHub Releases.

  2. 2

    Run setup

    noctra setup writes config under ~/.noctra/.

  3. 3

    Point each project at a repo

    Add a Repo: line to the Linear project's description — that's all the routing Noctra needs.

  4. 4

    Trigger a ticket

    Move it to your trigger state or add the noctra label and watch it become a PR.

install noctra
# 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/
then — first run
# guided setup → ~/.noctra/
noctra setup

# preflight checks
noctra doctor

# start the night watch
noctra
Linear project description — route tickets to a repo
# In the Linear project's description:
Repo: your-org/your-repo
Branch: main   # optional — defaults to the repo's default branch