PABLO
Docs
Documentation home

Getting started

  • What is PABLO?
  • Quickstart
  • Installation
  • Your first project
  • Your first task

Guides

  • Managing tasks
  • Dashboard
  • Analytics
  • Backups & restore
  • Troubleshooting

Concepts

  • How it works
  • Task states
  • Agents
  • Sync & rebase

Reference

  • Commands
  • Configuration
  • Providers
  • Storage

Contributing

  • Development

Reference

Providers

PABLO talks to GitHub, Jira, Confluence and Linear through each service's own command-line tool. No API keys, no tokens in the configuration: every tool handles its own login, and when one isn't ready PABLO shows that tool's own message.

GitHub: gh#

Always required: pull requests and CI always go through GitHub, whatever the issue tracker. Log in once with gh auth login.

Used forCommand
Issuesgh issue view/list --json, matched against the repository's remote
Finding the pull requestgh pr list --head <branch> --json number,title,state,isDraft,mergedAt,url
CI statusgh pr view <n> --json statusCheckRollup
Reviews and the “ready for review” timegh api graphql (reviews, and READY_FOR_REVIEW_EVENT timeline items)
Draft / readygh pr ready <n>, gh pr ready <n> --undo
QA labelsgh api repos/<owner>/<repo>/issues/<pr>/events --paginate (labeled events)
Re-running CIgh run list, gh run rerun
Login checkgh auth status

Jira: acli#

Atlassian's own CLI. Log in once with acli auth login (a browser login); the same login covers Jira and Confluence. Run it again if Atlassian ever revokes access.

Used forCommand
An issueacli jira workitem view <KEY> --json --fields 'summary,status'
Your issuesacli jira workitem search --jql "project = <KEY> AND assignee = currentUser() ORDER BY updated DESC" --json --limit 50
Comments (QA feedback)acli jira workitem comment list --key <KEY> --json
Login checkacli jira auth status

How the QA signal works on Jira. acli doesn't expose an issue's history, so PABLO remembers the status it saw at each poll. The issue entering your testing.failure_signal status between two polls counts as one event. The precision is therefore your polling interval, and the baseline is set when the task enters needs-testing, so an old status never fires.

Every call has a 30-second timeout and shows acli's own error text when it fails.

Confluence: acli confluence#

Same tool, same login. Agents use it to read documentation pages an issue links to.

  • A page: acli confluence page view --id <id> --json --body-format storage. The body is Confluence's XHTML, passed as is: agents read it fine.
  • Spaces: acli confluence space list --json. A project's optional confluence.space tells agents where to look.
  • Both page URL shapes are understood (…/wiki/spaces/<KEY>/pages/<id> and …/wiki?pageId=<id>), as well as a bare page id.
  • Login check: acli confluence auth status, separate from Jira's so the doctor can tell you which one isn't ready.

Linear: linear#

Using schpet/linear-cli: linear issue view <KEY> --json, linear issue list --assignee <id> --json; the QA signal is a transition into your testing.failure_signal status in the issue's history; login check: linear auth status.

The Linear provider hasn't been tested end to end yet. If a command fails, compare with linear --help and adjust Linear.php.

The doctor#

pablo system:doctor checks that each required tool is installed (on your PATH) and ready (logged in, using the tool's own status command), one line per check, and exits with an error if anything fails. Which tools are required depends on your projects:

ToolRequired whenIn the background job
ghalwayshard: a failure stops the run
opencodeagent_runtime is opencode (the default); checked with opencode --versionhard
claudeagent_runtime is claude-code; checked with claude auth statushard
copilotagent_runtime is copilot; checked with copilot --version (Copilot has no non-interactive login check)hard
orcaagent_backend is orca (the default)soft: a warning
openchamberagent_backend is openchambersoft
acli (Jira)a project uses Jirasoft
acli (Confluence)a project sets confluence.spacesoft
lineara project uses Linearsoft

In the background job, a soft failure only affects the projects using that tool; the others carry on. Each check is limited to 30 seconds, since orca can hang outside an interactive session.

Before the tools, the doctor checks that the agent settings can work at all: an unknown agent_runtime, or agent_backend: openchamber with agent_runtime: claude-code or copilot, is a ❌ config line, and the background job refuses to run with it.

The doctor also compares each installed agent in ~/.config/opencode/agents/ (or, under Claude Code, ~/.pablo/claude/agents.json, the agents, the command and the skill in ~/.claude/; under Copilot, the agent files and skills in ~/.copilot/) with a fresh render: ✅ fresh, ⚠️ stale (run pablo system:generate-agents), ❌ missing, broken link, or a file PABLO doesn't manage.

PreviousConfiguration NextStorage

Edit this page on GitHub

On this page

  • GitHub: gh
  • Jira: acli
  • Confluence: acli confluence
  • Linear: linear
  • The doctor
PABLO

MIT licensed · made by Baptiste Leduc · GitHub · Docs