Unified Atlassian CLI for Jira and Confluence.
atla is a Rust single-binary CLI for day-to-day Atlassian Cloud work. It
provides Jira and Confluence commands with profile-based authentication,
human-friendly tables, and machine-friendly output formats.
- Work with Jira issues, boards, and sprints without leaving the terminal.
- Read and update Confluence spaces, pages, blogs, labels, comments, and attachments from scripts or interactive workflows.
- Automate reporting and CI with
table,json,csv, andkeysoutput, plus global--dry-runsupport for mutating commands.
Installer script:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/NeoHsu/atla/releases/latest/download/atla-installer.sh | shWindows PowerShell:
powershell -ExecutionPolicy Bypass -c "irm https://github.com/NeoHsu/atla/releases/latest/download/atla-installer.ps1 | iex"Direct release downloads:
| Platform | Asset |
|---|---|
| Apple Silicon macOS | atla-aarch64-apple-darwin.tar.xz |
| Intel macOS | atla-x86_64-apple-darwin.tar.xz |
| ARM64 Linux | atla-aarch64-unknown-linux-gnu.tar.xz |
| x64 Linux | atla-x86_64-unknown-linux-gnu.tar.xz |
| x64 Windows | atla-x86_64-pc-windows-msvc.zip |
Each archive contains the prebuilt atla executable plus README, license, and
changelog files. Checksums are published next to the release assets.
mise:
mise use -g github:NeoHsu/atlaIn mise.toml:
[tools]
"github:NeoHsu/atla" = "latest"From source:
cargo install --git https://github.com/NeoHsu/atla atlaatla auth login --instance https://example.atlassian.net --email you@example.com --token "$ATLASSIAN_TOKEN"
atla jira search "assignee = currentUser() order by updated desc" --limit 10
atla jira issue transition PROJ-123 --to Done --dry-run
atla confluence page view 67890 --format markdown
atla confluence search "type=page AND space=DEV" --output json| File | Description |
|---|---|
| Getting Started | Installation, first-time setup, shell completions, quick demo |
| Authentication | Auth commands, multi-profile management, token storage, env vars |
| Configuration | Config keys, aliases, config.toml schema, environment overrides |
| Jira | Full Jira command reference: projects, issues, boards, sprints |
| Confluence | Full Confluence command reference: spaces, pages, blogs, attachments |
| Output Formats | Global flags, output formats, scripting/CI patterns |
| Code Generation | Progenitor-based API client generation, spec filtering, update workflow |
| Agent Reference | Structured command reference for AI agents and automation |
Install the bundled AI agent skill to enable atla-aware assistance — JQL/CQL
patterns, all command flags, scripting idioms, and safety rules.
npx skills add NeoHsu/atla| Product | Resource | Commands |
|---|---|---|
| Core | Auth | login, logout, status, switch |
| Core | Config | set, get, list |
| Jira | Projects | list, view, issue-types |
| Jira | Search | JQL search with table, JSON, CSV, and key output |
| Jira | Issues | list, create, view, update, edit, delete |
| Jira | Issue fields | fields — list create-meta fields with required flag, type, and allowed values |
| Jira | Assignment | assign --to me, account ID, or user query |
| Jira | Transitions | List or apply transitions, with interactive selection when possible |
| Jira | Comments | comment add, comment list, comment update, comment delete |
| Jira | Attachments | attachment list, attachment upload, attachment download, attachment delete |
| Jira | Links | link add, link list, link remove, link github-links, link github-commits |
| Jira | Worklogs | worklog add, worklog list |
| Jira | Boards | board list with project, type, and name filters; board view |
| Jira | Sprints | sprint list, sprint active, sprint view, sprint create, sprint start, sprint close, sprint add, sprint remove, sprint issues |
| Confluence | Spaces | list, view, create, update, delete |
| Confluence | Pages | list, view, create, update, move, delete, children, copy |
| Confluence | Page content | Storage, wiki, Atlas Doc Format input; storage, ADF, markdown view output |
| Confluence | Page labels | label list, label add, label remove |
| Confluence | Page comments | comment add, comment list, comment delete |
| Confluence | Blogs | list, view, create, update, delete |
| Confluence | Blog labels | label list, label add, label remove |
| Confluence | Blog comments | comment add, comment list, comment delete |
| Confluence | Search | CQL search through scoped v1 REST endpoint |
| Confluence | Attachments | list, view, upload, download, delete |
| Output | Formats | table, json, csv, keys |
| Safety | Dry runs | Global --dry-run for mutating workflows |
atla stores profile configuration in ~/.config/atla/config.toml by default.
API tokens are stored through the OS keyring and are not written to config files.
Initial auth:
atla auth login --instance https://example.atlassian.net --email you@example.com --token "$ATLASSIAN_TOKEN"
atla auth status
atla config set default-project PROJ
atla config set alias.mine "jira search 'assignee = currentUser() order by updated desc'"
atla config list --output jsonatla stores API tokens in the OS keyring by default. In headless or container
environments where keyring access is unavailable, use an explicit file-backed
credential store or provide a token through the environment:
atla auth login --storage file --instance https://example.atlassian.net --email you@example.com --token "$ATLASSIAN_TOKEN"
ATLA_TOKEN="$ATLASSIAN_TOKEN" atla jira project listFile-backed credentials are stored separately from the main config in
~/.config/atla/credentials.toml by default. Override paths with ATLA_CONFIG
and ATLA_CREDENTIALS for isolated runs.
Aliases expand before command parsing, so the alias above can be used as:
atla mine --limit 25Shell completions:
atla completion bash > ~/.local/share/bash-completion/completions/atla
atla completion zsh > ~/.zfunc/_atla
atla completion fish > ~/.config/fish/completions/atla.fishJira examples:
atla jira project list
atla jira project list --query platform --limit 25 --output json
atla jira project view PROJ
atla jira search "project = PROJ order by created desc"
atla jira issue list --project PROJ --status "In Progress"
atla jira issue create --project PROJ --type Task --summary "Fix login"
atla jira issue update PROJ-123 --summary "Updated summary"
atla jira issue edit PROJ-123 --labels add:urgent,remove:low
atla jira issue view PROJ-123 --web
atla jira issue assign PROJ-123 --to me
atla jira issue transition PROJ-123 --to Done
atla jira issue comment add PROJ-123 "Ready for review"
atla jira issue delete PROJ-123 --yes
atla jira issue fields --project PROJ --type Bug --required-only
atla jira board list --project PROJ
atla jira sprint active --board 84Confluence examples:
atla confluence space list
atla confluence space create "Development" --key DEV --description "Team docs"
atla confluence page list --space DEV
atla confluence page view 67890 --format markdown
atla confluence page create --space DEV --title "Meeting Notes" --body-file notes.html
atla confluence page update 67890 --title "Updated Notes"
atla confluence page move 67890 --parent 12345
atla confluence page label add 67890 runbook urgent
atla confluence page comment add 67890 "Looks good"
atla confluence blog create --space DEV --title "Release Notes" --body-file release.html
atla confluence search "type=page AND space=DEV"
atla confluence attachment upload 67890 ./diagram.png --comment "Updated diagram"
atla confluence attachment download 13579 --save-to ./diagram.pngConfluence v2 remains the primary generated client. Confluence search, attachment upload, and page label mutation use scoped Confluence v1 REST endpoints where v2 does not expose the required operation.
mise trust
mise install
cargo check
cargo testRefresh Atlassian specs:
scripts/update-specs.sh
cargo check --workspaceOverride config paths for isolated test runs:
ATLA_CONFIG=/tmp/atla-config.toml cargo run -p atla -- config listReleases are automated via cargo-dist. Pushing a version tag builds Linux, macOS, and Windows binaries and publishes them to GitHub Releases.