Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
One inbox for the tickets, reviews and threads that need you, and your coding agent taking each one to a pull request in a worktree you control. Runs on your machine.
Developer toolsTypeScript · HTMLGitHub @orynx-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Orynx is a developer-first, plug-and-play app on your machine. Connectors bring the Jira tickets and GitHub reviews that need you into one inbox, and the coding agent you plug in, Claude today, builds a ticket in its own git worktree. You choose how far it goes: ask before every command, or push the branch and open the pull request on its own.
Taken from the repository README
Loading the full README.
Read the full README ↗Hand your agent the ticket. Keep your flow.
Orynx is a developer-first, plug-and-play app on your laptop. Connectors bring the tickets, reviews and messages that need you into one inbox, and the coding agent you plug in, Claude or Codex today, builds a ticket in its own git worktree. You choose how far it goes: ask before every command, or push the branch and open the pull request on its own.
Orynx reads your assigned tickets, review requests, your own pull requests and the messages that name you, then shows only what is waiting on you. Each row says why it is there and how long it has waited, so the next step is obvious.
Board or list, filtered by assignee, status, type, priority and due date. Every card shows where its agent session stands, and any card can start one.
A session takes a ticket from brief to pull request in five visible steps: plan, build, test, review and pull request. Step in at any of them, or let it run.
Pick a level in Settings › Coding agent, then set any kind of call to Allow, Ask or Block. The agent checks your settings before every call.
There is no Orynx cloud. Orynx is a small server and a web app, both on your laptop.
https://orynx.local through a front door that asks for the password you choose when you set up Orynx (see Install).Inside the repo the code name is DevHub: the @devhub/* packages, the DEVHUB_* settings, the ~/.devhub folder and the keychain item keep that name, so saved tokens and settings carry over.
On macOS or Linux, clone orynx-ai/orynx and run its install script:
git clone https://github.com/orynx-ai/orynx.git
cd orynx
./install.sh
It uses Node 24 (through nvm, if you have it), builds Orynx, makes a certificate for orynx.local in ~/.devhub/tls and asks for your computer's password once so this computer trusts it. Then it starts Orynx whenever you log in (a LaunchAgent on macOS, a systemd user service on Linux). install.sh builds the folder it sits in, so it needs the clone: there is no curl | sh.
Open http://127.0.0.1:4317 on this computer. The first time, Orynx asks who you are (name, bio and a picture) and for a password, then opens. Your profile shows the same on every device.
Forgot the password? Delete ~/.devhub/password and restart Orynx (see below): setup opens again on this computer, with your profile filled in.
To update, press Update in Settings › About, or run git pull && ./install.sh in the clone. An Orynx installed before Update was there needs ./install.sh run once more by hand first. You still need Claude Code or Codex signed in on this computer, and a Jira Cloud API token and GitHub (the gh CLI or a token) to connect in Settings.
Orynx installs as an app from the browser (a PWA), with its own window and icon:
The certificate comes from a certificate authority made on your computer, so each other device trusts it once. Until it does, the browser warns before opening Orynx and won't install it as an app. On the device, open http://orynx.local/orynx-ca.crt, then:
/usr/local/share/ca-certificates/ and run sudo update-ca-certificates. Chrome and Firefox may want it imported in their own settings too.The certificate authority can sign only for orynx.local and localhost, so trusting it lets nobody pose as any other site.
orynx.local.~/.devhub/password, readable by you alone. After 10 wrong passwords in 15 minutes, from any device, it stops checking until the oldest is 15 minutes old.~/.devhub/password and restart Orynx (launchctl kickstart -k gui/$(id -u)/dev.orynx.server on macOS, systemctl --user restart orynx on Linux), then set it up again with a new password.http://orynx.local only hands out the certificate and redirects to https.See learn/local-security.md for how the front door works.
macOS:
launchctl bootout gui/$(id -u)/dev.orynx.server
rm ~/Library/LaunchAgents/dev.orynx.server.plist
sudo security remove-trusted-cert -d ~/.devhub/tls/ca.crt
Linux:
systemctl --user disable --now orynx && rm ~/.config/systemd/user/orynx.service
sudo rm /usr/local/share/ca-certificates/orynx-local-ca.crt /etc/sysctl.d/60-orynx.conf && sudo update-ca-certificates
Your settings, cache and certificate stay in ~/.devhub until you delete it.
To work on Orynx, or try it without installing, clone it (git clone https://github.com/orynx-ai/orynx.git) on macOS or Linux. You need:
nvm use # Node 24 (see .nvmrc)
corepack enable # pnpm 10, pinned in package.json
pnpm install
pnpm dev # server on 127.0.0.1:4317, web app on http://localhost:4318
To run it the way a user does (one production build, one port):
pnpm start # http://127.0.0.1:4317
Set up Orynx on the first page that opens, then connect Jira and GitHub in Settings, add a repository, and start your first session from Home.
| Path | What it is |
|---|---|
apps/web | Browser host: Vite, index.html, the web Platform |
apps/server | Node host: env config, session token, serves the web app in production |
apps/desktop | Desktop host: Electron; pnpm --filter @devhub/desktop package --dir packs it |
apps/landing | The public landing page: static Vite site; pnpm --filter @devhub/landing dev serves it on localhost:4319 |
packages/contracts | zod schemas for every HTTP body and server event |
packages/api-client | axios client, typed endpoints, TanStack Query options, event stream |
packages/ui | The DevHub design system: tokens, Tailwind theme, shadcn-based components, Storybook |
packages/app | The product UI: shell, routes, features, zustand stores |
packages/core | The local server's logic: Fastify routes, integrations, agent runtime, storage |
specs/ | One folder per feature: spec, plan, tasks |
docs/ | Product spec, roadmap, design system, screens, architecture, rules |
learn/ | Explainer pages: how a request flows, local security, live updates, tokens and the keychain, connecting your tools |
scripts/ | Gates (one rule each), the gate runner, Claude hooks |
.claude/ | Agent kit: settings and hooks, skills, slash commands, helper agents |
The packages are split so the desktop app is a third host without a rewrite. See docs/architecture.md.
This repo is agent-first: Claude writes the code, people decide what to build and approve the result. Every rule that matters is checked by a program.
docs/product/roadmap.md and runs /spec <number>. Claude writes specs/<NNN-slug>/spec.md with its assumptions, Given/When/Then acceptance criteria and open questions, then stops./plan splits the spec into small tasks, each with the check that proves it./build does one task at a time: failing test first, then the code, then one commit. Gates and hooks catch broken rules as it goes, and their messages say how to fix them./review reads the whole branch with helper agents (code, security, design) and writes a review stamp that fits only that exact change. The pre-push gate blocks a push without it.People still decide what to build, answer the spec's questions, design the screens, approve user-visible wording, approve the pull request, and accept any skipped rule.
| Command | What it does |
|---|---|
./install.sh | Install or update Orynx as a service, on your wifi at orynx.local |
pnpm dev | Server and web app with hot reload |
pnpm start | Production build, served on 127.0.0.1:4317 |
pnpm verify | Everything a push needs: gates, typecheck, lint, tests |
pnpm test [path] | Vitest; pass a path to run only what you touched |
pnpm test:changed | Tests related to files changed since origin/main |
pnpm test:coverage | Full suite with the 90% coverage thresholds |
pnpm test:e2e | Playwright against the real server and web app |
pnpm gates / pnpm gate <id> | Every gate at once, or one gate |
pnpm gates:test | The gates' own tests |
pnpm storybook | The design system gallery |
pnpm agent-rules | Regenerate AGENTS.md and the Copilot and Cursor rules from CLAUDE.md |
pnpm lint / pnpm format | ESLint / Prettier |
DEVHUB_PORT (server) or DEVHUB_WEB_PORT (Vite) for one run, for example DEVHUB_PORT=4417 pnpm dev. Every setting is listed in .env.example.pnpm exec playwright install fails with UNABLE_TO_GET_ISSUER_CERT_LOCALLY. A proxy on your network re-signs TLS. Let Node trust the macOS keychain: NODE_OPTIONS=--use-system-ca pnpm exec playwright install chromium.UNABLE_TO_GET_ISSUER_CERT_LOCALLY means a proxy re-signs TLS with a root your OS doesn't trust either. See learn/connecting-jira.md.which gh there, or connect with a personal access token. See learn/connecting-github.md../install.sh says Orynx didn't answer. Read ~/.devhub/orynx.log (macOS) or journalctl --user -u orynx (Linux). "can't listen on port 443" or "80" means another web server holds it. A pnpm start left running holds 4317..local names from Android 12. A second computer running Orynx on the same wifi can't take the name; its log says so.DEVHUB_HOME at a temporary folder: DEVHUB_HOME=$(mktemp -d) pnpm dev.CLAUDE.md — the handbook every agent session starts with (rules, workflow, done checklist)docs/product/spec.md and docs/product/roadmap.md — what DevHub is and the build orderdocs/design/design-system.md and docs/design/screens/ — how it looksdocs/architecture.md, docs/feature-layout.md, docs/design-map.md, docs/engineering-rules.md — how the code is built