gadak

package module
v0.17.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

README

gadak gadak

Latest Release CI License

Follow the thread.

English · 한국어

A local SQLite file of your Jira — so "which epic is stuck?" is one query, not an unaskable one.

gadak mirrors Jira and Confluence into one local SQLite file — issues, comments, history, wiki pages — indexed together and searchable locally. This window is where that work lives on your machine: triage it in the desktop app or a browser tab, or let a coding agent ask in plain SQL and point the same window at the answer. One binary, one app, no gadak account.

The mirror is a cache you can throw away. On a connected workspace, if this project stops tomorrow, you delete a directory and have lost nothing: Jira stays the source of truth.

▶  Open the live demo  —  534 issues, in your browser, right now.
Changelog  —  what shipped.

A connected site needs one API token — it covers Jira and Confluence on the same site. A standalone workspace needs no Atlassian account at all.

macOS app, CLI included:

brew install --cask midagedev/tap/gadak

CLI only — same UI in a browser tab via gadak serve:

brew install midagedev/tap/gadak-cli

Windows: from the latest release, download gadak_<version>_windows_amd64.zip (or windows_arm64), unzip, put gadak.exe on PATH. The desktop zip (Gadak-<version>-windows-x64.zip) is unsigned — if SmartScreen or Smart App Control blocks it, that is a missing signature, not a virus finding; use the CLI zip. Do not turn Smart App Control off.

Connect to Jira:

gadak init && gadak sync && gadak serve

Or start with no tracker:

gadak init --standalone
gadak create "the thing I just noticed"
gadak serve

gadak serve prints the address — open http://gadak.localhost:7777 and you should see your issues. Linux tarball, pairing, the signed macOS dmg: Install.

gadak sql "select epic_key, count(*) from issues_full where resolved_at is null
           and epic_key <> '' group by epic_key order by 2 desc"

That last query is the point: JQL has no GROUP BY. "Which epic is actually stuck?" is not a hard question — it is an unaskable one, until the data is a file. docs/RECIPES.md has the rest.

Run that query now, nothing installed: Datasette Lite loads the demo snapshot in this tab and the SQL runs client-side.

Measured 2026-08-23 against a live Cloud site (7,166 issues; medians, CLI startup included — method, the re-measurement history, and the losing rows):

Question REST API gadak
Simple filter, 100 issues 374 ms 17 ms 23×
One issue with its full history 687 ms 29 ms 24×
Free-text search 504 ms 22 ms 23×
A count over the change history not expressible — ≈ 109 min of crawling 14 ms

The last row is the point: past a page size, JQL answers stop being slow and start being unaskable. GROUP BY is the same story — on the 2026-08-15 corpus the epic rollup measured 3,924 ms across 7 API pages against one 24 ms query; this run the REST aggregation matched no rows at all, because the project's epic shape had changed, so that comparison stands on the August 15 numbers.

And the other side: the first full sync measured 26.4 s for 534 issues and 7.2 min for 2,865 (method and the losing rows), every watch tick costs ~4.7 s on a quiet site even when nothing changed, and the mirror trails Jira by one sync interval.

▶ 90-second tour of the paper list (GIF, 7 MB)


Generated from e2e/demo/web-demo.spec.ts against the demo snapshot.

Status: 0.17, still 0.x. Sync, read API, write-through, desktop, web, CLI, and MCP are verified against a live site. CHANGELOG.md.

Why

Jira search is a network round trip, and the wiki is a second search. An agent asked "what did we already fix, and what did we decide?" pages two REST APIs. Same cause: the data is not a file. docs/CONCEPT.md · docs/PAIN_POINTS.md.

⌘K is the one index — titles, bodies, comments, issues and pages. The chips on the list do not apply. That is why a comment-only word still finds the row.


Generated from e2e/demo/search-demo.spec.ts against the demo snapshot.

Two surfaces, one store

For Looks like
App + Web UI all-day triage desktop app (no port) or gadak serve. j/k walk, x selects, s/a/l/c change status, assignee, labels, or comment from the list.
CLI + SQL agents, scripts gadak issue, gadak search (FTS, --jql, a Jira URL, --explain), gadak sql, plus the file

Writes go through the origin, then the mirror refreshes. App and web: comment, transition, assign, labels, priority, title. CLI: create (single or --batch), attach, edit, comment, transition (--resolution), assign, link, dev link / dev scan, fields --apply, issue --editmeta, project create, and page create / page edit / page comment for the wiki (pages, titles, bodies and comments all through the origin). Hierarchy, item_refs, attachments: docs/CONCEPT.md. The window keeps one paper metaphor across four palettes — light, a neutral-cool dark, blue-black ink, and warm ember. The theme follows the system unless you pick one, and it belongs to the workspace, not the browser: gadak config set appearance.theme ink.

And two surfaces is not a closed list. Reading the mirror is one binary call (gadak search --json, ~20 ms), and opening anything in the app is one URL (gadak://view?issue=…the scheme), so whatever can do those two things becomes a surface. A launcher, say:


Each keystroke is one gadak search --json; Enter is the deep link. A saved view travels the same way — gadak views open prints its link.

That launcher exists: a Raycast extension that searches issues and wiki documents as you type, submitted to the Raycast Store. Until the review lands, one command installs it from the binary you already have (embedded, no checkout):

gadak raycast install

The macOS app has the same install as a button — Settings → Integrations lists Raycast, the agent skill and MCP, shows what is already installed, and runs the exact command it prints. Building on the extension itself: contrib/raycast/. And with no extension at all, a Raycast Quicklink pointed at gadak://view?issue={argument} covers the open-by-key half.

What's covered

Connected talks to Atlassian Cloud. Standalone (from 0.16) is a workspace with no Atlassian account — a minimal Jira origin that travels with the app. The mirror is a cache either way; every write goes through the origin. On standalone the durable file is the origin's persist file — issuetap.db in the workspace's origin folder (SQLite, WAL). Copy it while gadak is not running (include the -wal/-shm sidecars), or sqlite3 origin/issuetap.db ".backup dest.db".

Connected (Atlassian Cloud) Standalone (from 0.16)
Issue read and search (FTS, JQL, SQL) ✅¹ ✅¹
Create, comment, transition, assignee, labels, priority
Due date, description, custom-field edits (from 0.16) ✅² ✅²
Hierarchy ✅³ ✅³
Wiki documents ✅⁴ ✅⁵
Attachments
History / time in status ✅⁶ ✅⁶
Agent surfaces (skill, MCP, SQL)
Boards and sprints —⁸ —⁸
Dashboards
Jira notifications —⁷ —⁷
  1. SQL and FTS are local. --jql / a Jira URL maps a documented subset onto the in-memory filter; clauses gadak cannot express are listed, never dropped. Sprint-by-name, WAS, cross-field OR, and custom fields are among the refusals; numeric sprint = / sprint in and sprint in openSprints() are in the subset (decision 0007).
  2. Dedicated endpoints for due date and description. Custom fields: kinds text, number, date, option, user, multi_option / version_array, gated by the issue's editmeta and the configured field allowlist. Cascading selects and textarea custom fields have no editor.
  3. Epic grouping (epic_key, nearest hierarchy-level-1 ancestor) is first-class. Setting a parent is CLI create --parent / edit --parent only — there is no REST PUT {key}/parent. Sub-task create-meta flags are not surfaced, so create cannot tell that a type requires a parent.
  4. Confluence Cloud is mirrored; page create, edit (title/body) and page comments write through it — gadak page create|edit|comment, POST pages/, PUT pages/{id}/edit, POST pages/{id}/comment.
  5. Pages sync from the in-process origin. gadak page create|edit|comment and the REST verbs work here too; the UI has a page comment composer but no page editor yet.
  6. Changelog is mirrored. Time in status is computed from status_changed_at, not stored as a column.
  7. Jira's notification inbox, rules, and email are not mirrored. gadak has its own watch-feed OS alerts on macOS and Linux.
  8. No board UI and no sprint column on the list. Sprint fields (sprint_id / sprint_name / sprint_state) are in the mirror; SQL and JQL (sprint = / sprint in openSprints()) can query them. The versions catalog and fix_version_ids join the same way.

Linear. A Linear workspace mirrors and writes through the same verbs: add a "linear" block (apiKey, optional teamIds) to the workspace's config.json and run gadak sync --source linear. Writes route by the mirror's source for the key — comment, transition (the team's workflow states, id-keyed), summary/priority/due-date edits, assign/unassign, and file attachments all pass through Linear's API and refresh the mirror row. Not yet: label edits, clearing a due date, and state history (status_changed_at stays NULL) each refuse honestly rather than half-applying; inline comment media attaches the file and drops only the body embed. Field mapping: internal/linear/MAPPING.md.

For agents

This is half the reason gadak exists. Reference: docs/MIRROR.md. One paste per host: docs/AGENT_SETUP.md.

gadak skill install

Schema and query patterns, no extra process. For hosts without a shell (Claude Desktop):

gadak mcp install claude

Pins this binary and workspace into the registration.

gadak init and gadak install-cli install that skill automatically when ~/.claude already exists. A file gadak did not write is left in place.

Both installs (and the Raycast one) are also buttons in the macOS app, with install state shown honestly: Settings → Integrations.

Setup is not a screen an agent has to click, either. Every field the settings dialog edits is a CLI verb over the same validation:

gadak config list

Every editable path and its value.

gadak config set appearance.theme ink

Per workspace, applied live.

SQL answers; the window presents. Filter on status_category / priority_rank (1 = most urgent, 0 = unset), never on a display name — Jira translates those per account, so priority = High is silently zero rows on a Korean-language site. --jql is Jira's own language and stores the literal, so prefer gadak sql when the filter is a rank or category:

gadak sql --no-header "select key from issues_full where status_category = 'inprogress'
                       order by status_changed_at asc limit 5" | gadak views open --keys -

If you already have JQL, the clauses land as chips. This one keys on a project key and emptiness, not a localized name:

gadak views open --jql 'project = NMA AND resolution is EMPTY'


gadak views open writes a one-shot hash; the running app or serve tab applies it. The recording adds a priority clause — in --jql a priority or status name is matched as the literal string your Jira stores, which is localized, so the example above leaves it out. Generated from e2e/demo/agent-demo.spec.ts.

When the answer is a wall rather than a list, author a dashboard — one HTML document plus registered datasources, rendered sandboxed in the web tab: docs/DASHBOARDS.md.

For hosts without a shell (Claude Desktop), the same mirror is an MCP server. Ask the thing Jira cannot answer at all, because the wiki is a second search: "what do we know about X?" One index holds both, so the answer can put a ticket and the design doc that drove it in the same sentence.

Claude Code registers gadak as an MCP server, is asked to search Jira and the wiki for idempotency, calls gadak, and answers with an issue and the Confluence brief that drove it
Five tools; no writes to the mirror or to Jira. A host with a shell can use gadak sql instead. Setup: docs/MCP.md.

gadak views open is the "open in gadak" verb; gadak open KEY leaves for Jira. The list box takes the same JQL paste as gadak search --jql; clauses gadak cannot express are listed, never dropped. What JQL still cannot ask stays in gadak sql and docs/RECIPES.md. gadak sql opens the file mode=ro; MCP's gadak_query rejects anything that is not a SELECT. gadak api is the pass-through for endpoints the mirror does not model — read-only unless --write, never on MCP.

An agent that reads your mirror sends what it reads to whatever model it talks to. gadak itself sends nothing (SECURITY.md). Scope the mirror to what the agent should see. When gadak does touch the network — sync, writes, the pairing model that lets a tailnet or a whole team share one workspace — docs/NETWORK.md walks every connection and its off switch.

Install

Atlassian Cloud, or (from 0.16) a standalone workspace with no Atlassian account. A connected site needs one API token — it covers Jira and Confluence on the same site.

1. The desktop app.

macOS: download Gadak-<version>-arm64.dmg from the latest release, drag to Applications. Signed and notarized. First launch walks through site, email, token, and projects. The CLI is inside the bundle; macOS does not put an app on your PATH:

/Applications/Gadak.app/Contents/Resources/bin/gadak install-cli

2. The CLI, on Linux, Windows, or for the same UI in a browser tab.

macOS + Linux:

brew install midagedev/tap/gadak-cli

Windows: from the latest release, download gadak_<version>_windows_amd64.zip (or windows_arm64) and checksums.txt. Unzip, put gadak.exe on PATH. This is the reliable Windows route. How to check the sha256: docs/WINDOWS-SIGNING.md.

The desktop zip (Gadak-<version>-windows-x64.zip, or windows-arm64) is unsigned (signing is GDK-211). If Windows shows Windows protected your PC or Smart App Control blocked an app that may be unsafe, that is a missing signature, not a virus finding — use the CLI zip above. Do not turn Smart App Control off. Install: docs/INSTALL.md. Code signing policy (why the warning, SHA256): docs/WINDOWS-SIGNING.md.

No Atlassian account:

gadak init --standalone
gadak create "the thing I just noticed"
gadak serve

gadak serve prints the address — open http://gadak.localhost:7777 and you should see your issues.

Already have Jira:

gadak init && gadak sync && gadak serve

gadak serve prints the address — open http://gadak.localhost:7777 and you should see your issues.

Pair another machine. Home gadak serve is the origin. On the home machine, mint an offer (stdout is one offer line):

gadak pairing mint --label laptop

On the remote, paste the offer:

gadak --workspace laptop init --pairing-code-stdin

Confirm with gadak --workspace laptop status (paired with "laptop"). gadak pairing list is the token table on home and one status line on the remote. gadak pairing revoke laptop is home only.

_home is this machine's routing token, not a device (revoke refuses it; mint --label _home rotates). Same verbs on the remote; a pairing: error is the whole message. --profile is an alias of --workspace. The gate is in SECURITY.md.

A Scoop manifest lives in contrib/scoop. The bucket is not published and scoop install has not been run on a Windows machine (docs/INSTALL.md).

Linux without Homebrew: from the latest release, download gadak_<version>_linux_amd64.tar.gz (or linux_arm64) and checksums.txt. One archive is the whole install — the web UI is inside the binary. Replace <version> with the tag from that release, without the leading v. Verify, unpack, and put gadak on PATH:

sha256sum --ignore-missing -c checksums.txt
tar -xzf gadak_<version>_linux_amd64.tar.gz
gadak serve

gadak serve prints the address — open http://gadak.localhost:7777 and you should see your issues.

Optional, to survive reboot (systemd --user):

gadak install-service

Arch Linux: a checked PKGBUILD lives in contrib/aur/gadak-binmakepkg -si there. Not in the AUR yet; upstream registration is closed (docs/INSTALL.md).

On Omarchy, the bar can answer the one question no cloud plugin can — what changed in your mirror. A shell-plugin widget in contrib/omarchy shows open·stuck straight from the local mirror (no token, no network) and click-opens the app. Run once on a real guest.

▶ The widget on a real Omarchy guest (PNG) — the bar badge is gadak sql's own numbers


Captured on the Arch + Hyprland verification guest (contrib/omarchy/README.md).

Install script, release archive, source, Docker, wiki mirroring, workspaces, upgrades: docs/INSTALL.md.

The rest

Making it yours. Two axes, no forking: docs/EXTENDING.md. Config: docs/CONFIGURATION.md. Enrichments: docs/PLUGINS.md.

How it works. One binary, one SQLite file; incremental sync plus a reconcile pass. docs/ARCHITECTURE.md. Why not an extension or Forge app: docs/decisions/0003-local-process.md.

Good fit / bad fit. Daily search latency, an agent over tracker and wiki, offline reads — yes. Boards, admin, a page editor in the UI, or a minute of staleness — stay in Jira. CLI and REST already write wiki pages. docs/CONCEPT.md.

How it compares. jira-cli talks to the live API per command. Linear is a different tracker, and also a gadak source (see above). Rovo MCP searches both sources too, but it is hosted: no aggregate, no offline, and every call spends tokens. docs/FAQ.md.

More sources later. Confluence proved the spine is neutral. Next source, ranked by demand: docs/ROADMAP.md.

Documentation

Who makes this

One person, currently. Weigh that — and the other side: the mirror is a disposable cache of your own Jira, the 0.x contract is the three promises in data-model.md (issues_full and the RECIPES queries, gadak sql stdout, and gadak views open --keys -), the license is Apache-2.0, and the file is plain SQLite. Hard questions: docs/FAQ.md. What you do not have to take on trust, each with the command that checks it: PROMISES.md.

Contributing and feedback

CONTRIBUTING.md — and docs/GOOD_FIRST_ISSUES.md to start. Bug reports need your Jira deployment type (Cloud), the gadak commit, and the command you ran. Never paste real issue data, tokens, or site URLs into a public issue.

Commit GDK-nnn keys resolve on the public backlog. To file something, open a GitHub issue — the maintainer mirrors it into the backlog.

Using gadak with an agent and hitting friction? Open an issue with the question you asked and what the agent did.

License

Apache-2.0. See LICENSE and NOTICE.

Documentation

Overview

Vendor assets for agent-authored dashboards (GDK-792): the pinned chart library a dashboard may load from /api/v1/dashboards/vendor/ instead of a CDN. Embedding it keeps the dashboards CSP free of external hosts (no outbound rule change — the bytes ship inside the binary), and pinning the version once means every dashboard sees the same library instead of whatever a CDN serves that day.

[GDK-808] three.js no longer ships embedded (−750 KB): anything bigger or less universal than uPlot belongs in the user-managed lib cache (`gadak dashboards lib add <url>` — sha384-pinned at download, re-hashed at serve, see internal/dashboards/libs.go), not in every binary gadak ships. uPlot stays embedded: one chart library is the norm the example dashboard sets.

The HTTP whitelist is DashVendorFile's table, not the directory: the license is embedded for NOTICE/NPB purposes but is not served.

Package gadak embeds the built web UI so a release is one self-contained binary. `npm run build` writes web assets to dist/app before `go build`; without that step the embed carries only the committed placeholder and WebUI reports ok=false, which `gadak serve` turns into a helpful error.

It also embeds the Claude Code skill (skills/gadak/SKILL.md) so `gadak skill install` works for brew installs without a source checkout.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DashVendorFile added in v0.17.2

func DashVendorFile(name string) ([]byte, string, bool)

DashVendorFile returns the embedded bytes and content type for a whitelisted vendor filename. ok is false for anything not in the table — unknown names, subdirectories, license files — and the route answers 404 in that case. Callers must not modify the returned slice.

func SkillMarkdown

func SkillMarkdown() []byte

SkillMarkdown returns the embedded Claude Code skill body (skills/gadak/SKILL.md). Callers must not modify the returned slice.

func WebUI

func WebUI() (fs.FS, bool)

WebUI returns the embedded web assets rooted at the app directory. ok is false when the binary was built without a web build (placeholder only).

Types

This section is empty.

Directories

Path Synopsis
cmd
gadak command
export-static freezes the demo mirror into static JSON + attachment bytes for the zero-install hosted demo (GitHub Pages).
export-static freezes the demo mirror into static JSON + attachment bytes for the zero-install hosted demo (GitHub Pages).
contrib
raycast
Package raycastext embeds the Raycast extension source so the gadak binary can install it without a checkout (gadak raycast install).
Package raycastext embeds the Raycast extension source so the gadak binary can install it without a checkout (gadak raycast install).
internal
adf
Package adf inspects Atlassian Document Format (ADF) JSON without importing Jira types, so store, origin, and CLI can share it without crossing the store/jira firewall (docs/ARCHITECTURE.md).
Package adf inspects Atlassian Document Format (ADF) JSON without importing Jira types, so store, origin, and CLI can share it without crossing the store/jira firewall (docs/ARCHITECTURE.md).
apprun
Package apprun is the single owner of the long-lived process boot sequence shared by `gadak serve` and gadak-desktop.
Package apprun is the single owner of the long-lived process boot sequence shared by `gadak serve` and gadak-desktop.
atlhttp
Package atlhttp is the shared HTTP transport for Atlassian Cloud clients (Jira, Confluence): path safety, Authorization host pinning, and the Do/DoRaw loop.
Package atlhttp is the shared HTTP transport for Atlassian Cloud clients (Jira, Confluence): path safety, Authorization host pinning, and the Do/DoRaw loop.
attachcache
Package attachcache stores attachment bytes on local disk.
Package attachcache stores attachment bytes on local disk.
calendar
Package calendar is the single owner of "which calendar day is this?".
Package calendar is the single owner of "which calendar day is this?".
claim
Package claim is the single owner of the gadak claim write (CLI today, REST later), the way internal/transition owns the transition write.
Package claim is the single owner of the gadak claim write (CLI today, REST later), the way internal/transition owns the transition write.
clitool
Package clitool installs the gadak binary onto PATH.
Package clitool installs the gadak binary onto PATH.
config
Package config loads and saves ~/.gadak/config.json.
Package config loads and saves ~/.gadak/config.json.
config/tokencheck
Package tokencheck validates user color-token overrides (GDK-769 wave, GDK-785) with the same color math tools/theme-check.mjs asserts the shipped palettes with at build time.
Package tokencheck validates user color-token overrides (GDK-769 wave, GDK-785) with the same color math tools/theme-check.mjs asserts the shipped palettes with at build time.
confluence
Package confluence is a thin REST client for Confluence Cloud: enough of the API to fill the page mirror, plus the user-initiated page writes that go through the origin (create / update).
Package confluence is a thin REST client for Confluence Cloud: enough of the API to fill the page mirror, plus the user-initiated page writes that go through the origin (create / update).
create
Package create is the single owner of project, issue-type, and priority resolution for gadak create (CLI and REST).
Package create is the single owner of project, issue-type, and priority resolution for gadak create (CLI and REST).
dashboards
Package dashboards owns the interpretation of dashboard rows: the config document (HTML + named datasources) and its validation rules, name→row resolution, and datasource execution into the {columns, rows, truncated, warning?} document the render iframe draws from (GDK-781).
Package dashboards owns the interpretation of dashboard rows: the config document (HTML + named datasources) and its validation rules, name→row resolution, and datasource execution into the {columns, rows, truncated, warning?} document the render iframe draws from (GDK-781).
deeplink
Package deeplink parses and builds the gadak:// URLs that hand a piece of gadak to someone — a link in chat or on a web page instead of a shell, a running serve, and a command with side effects.
Package deeplink parses and builds the gadak:// URLs that hand a piece of gadak to someone — a link in chat or on a web page instead of a shell, a running serve, and a command with side effects.
fields
Package fields holds source-neutral field helpers — coalesce, fill checks, slugs, and write-payload shaping — so internal/store can use them without importing Jira types.
Package fields holds source-neutral field helpers — coalesce, fill checks, slugs, and write-payload shaping — so internal/store can use them without importing Jira types.
fsperm
Package fsperm is the single owner of private-directory creation.
Package fsperm is the single owner of private-directory creation.
httppolicy
Package httppolicy is the host-neutral HTTP retry and usage policy shared by origin clients (Atlassian via atlhttp, Linear).
Package httppolicy is the host-neutral HTTP retry and usage policy shared by origin clients (Atlassian via atlhttp, Linear).
integrations
Package integrations is the desktop Settings catalog: which local agent/host tools gadak can install, how to detect them, and which gadak CLI argv installs each one.
Package integrations is the desktop Settings catalog: which local agent/host tools gadak can install, how to detect them, and which gadak CLI argv installs each one.
jira
Package jira is the Atlassian Cloud REST client: read paths plus user-initiated writes.
Package jira is the Atlassian Cloud REST client: read paths plus user-initiated writes.
jirafields
Package jirafields classifies and discovers Jira custom fields for the mirror.
Package jirafields classifies and discovers Jira custom fields for the mirror.
jql
Package jql translates a documented JQL subset to and from gadak's in-memory filter (the same shape the web UI serializes into the URL).
Package jql translates a documented JQL subset to and from gadak's in-memory filter (the same shape the web UI serializes into the URL).
linear
Package linear is the GraphQL client for a Linear workspace: viewer, teams, workflow states, cursor-paged issues with an updatedAt watermark filter, and — since GDK-360 — the three write verbs (create issue, update issue, comment) the origin.Writer adapter routes through.
Package linear is the GraphQL client for a Linear workspace: viewer, teams, workflow states, cursor-paged issues with an updatedAt watermark filter, and — since GDK-360 — the three write verbs (create issue, update issue, comment) the origin.Writer adapter routes through.
mcp
Package mcp implements a thin stdio MCP server over the local gadak mirror.
Package mcp implements a thin stdio MCP server over the local gadak mirror.
origin
Package origin is the single owner of "this workspace's origin clients".
Package origin is the single owner of "this workspace's origin clients".
originbind
Package originbind owns one invariant: a workspace is bound to one origin.
Package originbind owns one invariant: a workspace is bound to one origin.
pairing
Package pairing owns the device tokens that gate a serve's origin passthrough once it is exposed beyond loopback (GDK-433).
Package pairing owns the device tokens that gate a serve's origin passthrough once it is exposed beyond loopback (GDK-433).
parenthint
Package parenthint is the single owner of parent-rejection detection and the mirror hierarchy hint that follows it (CLI create/edit and REST PUT parent / POST create).
Package parenthint is the single owner of parent-rejection detection and the mirror hierarchy hint that follows it (CLI create/edit and REST PUT parent / POST create).
secretscan
Package secretscan holds the credential-shaped string patterns that every outbound artifact is checked against before it is written.
Package secretscan holds the credential-shaped string patterns that every outbound artifact is checked against before it is written.
selfupdate
Package selfupdate answers one question — is a newer release published? — with one GitHub API call a day, cached on disk.
Package selfupdate answers one question — is a newer release published? — with one GitHub API call a day, cached on disk.
server
Package server is the loopback HTTP mux for the web UI and the API (specs/000-product/contracts/api.md).
Package server is the loopback HTTP mux for the web UI and the API (specs/000-product/contracts/api.md).
snapshot
Package snapshot builds shareable mirror copies for demos and benchmarks.
Package snapshot builds shareable mirror copies for demos and benchmarks.
sqlhint
Package sqlhint is the shared SQL-error help used by gadak sql and gadak_query (MCP), and the owner of SQL comment stripping (StripComments) used by the group-query and MCP SELECT gates.
Package sqlhint is the shared SQL-error help used by gadak sql and gadak_query (MCP), and the owner of SQL comment stripping (StripComments) used by the group-query and MCP SELECT gates.
statuscat
Package statuscat is the single owner of the status-category contract: the three tokens data-model.md documents (new | inprogress | done), their mapping from Jira's REST statusCategory keys, and the reverse.
Package statuscat is the single owner of the status-category contract: the three tokens data-model.md documents (new | inprogress | done), their mapping from Jira's REST statusCategory keys, and the reverse.
store
Package store owns the SQLite mirror: schema, migrations, transactions, full-text index and the derived fields the source does not provide.
Package store owns the SQLite mirror: schema, migrations, transactions, full-text index and the derived fields the source does not provide.
sync
Package sync fills the mirror from the configured sources (Jira, and Confluence when enabled).
Package sync fills the mirror from the configured sources (Jira, and Confluence when enabled).
teamconfig
Package teamconfig builds and applies team-shareable gadak configuration files (views, field maps, group rules, …) without credentials or personal machine prefs.
Package teamconfig builds and applies team-shareable gadak configuration files (views, field maps, group rules, …) without credentials or personal machine prefs.
transition
Package transition is the single owner of the gadak transition write (CLI, including `gadak close`, and REST).
Package transition is the single owner of the gadak transition write (CLI, including `gadak close`, and REST).
uifocus
Package uifocus is the one-shot handoff from the CLI to a running UI.
Package uifocus is the one-shot handoff from the CLI to a running UI.
views
Package views owns the interpretation of view names: how the Jira filters and saved views inside a store are listed, and how one name resolves to exactly one of them.
Package views owns the interpretation of view names: how the Jira filters and saved views inside a store are listed, and how one name resolves to exactly one of them.
workspace
Package workspace mounts additional gadak profiles under /w/<name>/ and lists them at GET /api/v1/workspaces.
Package workspace mounts additional gadak profiles under /w/<name>/ and lists them at GET /api/v1/workspaces.
tools
bench-fixture command
Command bench-fixture builds a deterministic synthetic gadak.db for latency benchmarks (T6.7 / G5).
Command bench-fixture builds a deterministic synthetic gadak.db for latency benchmarks (T6.7 / G5).
seed-demo command
Command seed-demo populates a throwaway Jira Cloud site with a realistic demo backlog for gadak screenshots and examples/demo.db.
Command seed-demo populates a throwaway Jira Cloud site with a realistic demo backlog for gadak screenshots and examples/demo.db.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL