---
title: Arij (issue tracker)
---

# Arij (issue tracker)

> **Status:** shipped. Arij is a true multi-user tracker backed by Omniscio's
> cloud backend (`amc-back` `arij-api`), but it has **no login of its own** — you
> use it with your existing Omniscio account (Firebase Global Auth). Sign in to
> Omniscio once and Arij is signed in too.

## What it is

Omniscio's first-party, Jira-style issue tracker — boards, backlog, sprints,
issues, docs, dashboards, and automation — with one capability Jira doesn't
have: **issues can launch and track real Omniscio agent sessions**. It is NOT the
"Jira" integration (that one talks to Atlassian's Jira Cloud); Arij is its own
product surface with its own data.

## Where to find it

### How to use it

1. **Open it:** the **Arij** row in the sidebar. Your account's `arijEnabled`
   flag is set automatically (the 2026-05-23 data-presence migration turns it on
   for existing installs that already had Arij data) — there is **no Settings
   toggle**. The old Settings section is now a read-only landing, reachable only
   by a direct deep link (`?section=arij`); Settings → Features no longer lists
   Arij (owner declutter decision 2B, 2026-08-14).
2. **You're already signed in** — Arij uses your Omniscio account, so opening the Arij
   tab while signed in to Omniscio drops you straight in (no separate register/login).
   Your account gets a home **organization**; you can create more orgs, invite
   members (owner / admin / member roles), and switch orgs from the org switcher.
   An existing arij account is **linked by email** — sign in to Omniscio with the same
   email your arij account already uses and the two resolve to one user.
3. **Create a project** (key + name). Projects belong to an org; org
   owners/admins see every project, plain members need a per-project
   membership (added directly or via email invitation — cross-org invitations
   work).
4. Work the **Board** (drag-and-drop kanban, swimlanes, saved JQL boards),
   **Backlog** (sprints, bulk edit), **Issues** (types, priorities, points,
   labels, components, versions, worklogs, watchers, attachments, links,
   @mention comments), **Summary** (dashboard), and **Docs** (per-project page
   tree).

On the **Board**, cards are Jira-style — cover image, due chip, assignee
avatar, priority / subtask glyphs, and hover-to-rename. Click a card for a
**centered detail modal** (the List/Backlog open the same detail as a right
drawer); right-click or use the kebab for the **card menu** (move / change
status / copy link / flag / label / link / parent / select cover / archive /
delete). The space header's **⋯ More actions** covers star, linked teams,
background, archive, and delete. Card cover / flag / archive persist through
`arij-api` like every other issue field (the local agent-link mirror defaults
them — it is not the board's source of truth).

## How it behaves

### Agents work your issues

Every issue has a **Start agent** button (and sprints have a bulk
"start agents" action, capped + confirm-gated):

- The first start on a project asks you to **pick a local working folder** —
  Arij projects live in the cloud, so the folder mapping
  (`settings.arijProjectFolders`) tells Omniscio where the code lives.
- Omniscio spawns a real agent session in that folder, briefed with the issue's
  summary, description, and acceptance criteria.
- The session's live status mirrors back onto the issue card (Running /
  Needs You / Finished / Error) with system comments on meaningful
  transitions, and an acceptance-criteria checklist comment on a clean finish.
- Watchers get notified through Arij's notification inbox (bell icon).

### Account & profile

Arij has **no account of its own** — since the Firebase auth unification it
rides Omniscio's Global Auth. There is no arij register/login card, no
forgot-password flow, and no arij-specific sign-out: **signing in / out, and
password resets, are Omniscio-account concerns**, handled in Omniscio's own sign-in — not
inside Arij. Arij keeps exactly one account-scoped surface: editing your
**profile**.

- **Profile edit:** the avatar button in Arij's top bar opens **Account
  settings**, where you can change your **display name** and **avatar**.
  `PATCH /auth/me` (`arij-api`) persists both; the main process brokers the
  Firebase ID token for the call. There is no password field here anymore.
- **Avatars:** stored as an inline **data URL in `users.avatar_url`** (no blob
  store / CDN). The renderer shrinks the chosen image locally to a **128px
  thumbnail** before upload; server cap **64 KB**, PNG/JPEG/WebP. Member
  avatars across Arij (cards, issue detail, people page, member pickers) show
  the photo when set, initials otherwise.
- **Linking an existing arij account:** the backend is **dual-auth** — it
  verifies your Omniscio Firebase token and resolves it to an arij user,
  **auto-creating or linking by verified email**. An older arij account joins
  up automatically as long as its email matches your Omniscio sign-in email.
- **Omniscio IPC auth surface** (main owns every token): exactly
  `ARIJ_AUTH_STATUS`, `ARIJ_AUTH_ACCESS_TOKEN`, `ARIJ_AUTH_UPDATE_PROFILE`. The
  old `ARIJ_AUTH_LOGIN` / `_REGISTER` / `_FORGOT_PASSWORD` /
  `_CHANGE_PASSWORD` / `_LOGOUT` channels are **deleted**.

### Automation & integrations

- **Automation rules** per project or org-wide: "when an issue is created /
  updated / transitioned, if <conditions>, then assign / set priority /
  transition / comment / label".
- **Workflows:** Arij issues can trigger Omniscio Workflows
  (`trigger.arij_issue`) and workflow actions can create / transition /
  comment on Arij issues.
- **Email notifications** honor per-user preferences when the backend has
  SMTP configured; @mentions always land in the in-app inbox.
- **Import** a Jira JSON/CSV export into a project; **export** to JSON/CSV.

## For agents

### Key implementation facts (for agents)

- **Auth is Omniscio Firebase Global Auth end-to-end.** The renderer is gated on
  `useGlobalAuthStore` via `ArijAuthGate` (children mount on the Firebase `uid`;
  the arij backend profile hydrates late). The main process brokers Firebase ID
  tokens over `ARIJ_AUTH_ACCESS_TOKEN` (`src/main/services/arij/auth-client.ts` →
  `getFirebaseIdToken`, force-refresh → `refreshFirebaseToken`); the arij-api
  backend is dual-auth (Firebase-first, legacy JWT fallback) and links by verified
  email. Identity switches are always-on: `arij-store.ts` registers a
  `registerIdentityScopedReset('arij', …)` that stops realtime, clears
  `resetArijApiAuthCache()` + `resetArijStore()`, and the gate keys children by
  `uid`. No arij-owned credential store (`arij-auth.json` is deleted on first
  use), no login UI. Contract: `.claude/memory/contracts/arij-contract.md` I18/I19.
- Renderer data access is HTTP to `arij-api` via the `arijInvoke` chokepoint
  (`src/renderer/src/features/arij/arij-api.ts`) — NOT local SQLite. Live
  updates arrive over the `/realtime` WebSocket
  (`arij-realtime.ts`, exponential-backoff reconnect).
- The agent edge runs in Main (`src/main/services/arij/agent-link.ts` on
  `arij-http.ts`): GET issue → spawn via `createSessionWithPrompt` in the
  mapped folder → PATCH `sessionId`/`agentState` up; a session-status
  subscriber mirrors state via `GET /issues/by-session/:sessionId`.
- Theming: Arij follows the Omniscio theme — it does NOT own a fixed Jira palette.
  The `.arij-scope`-wrapped tree reads `--arij-*` tokens that `arij-theme.css`
  aliases onto Omniscio's surface / accent / status vars, so light/dark, every
  built-in theme, and custom themes recolour Arij like the rest of the app.
- Contracts: `.claude/memory/contracts/arij-contract.md` (invariants) and
  `docs/arij-http-migration-contract.md` (HTTP mapping).

## Related

Arij is Omniscio's own tracker, so it is not the same thing as [Jira board](jira-board.md),
which connects Omniscio to Atlassian's Jira Cloud instead. The sessions an issue starts
behave like any other agent session, and the [Agent Status Board](agent-status-board.md) is
the fleet-wide view of them.
