One command does what three meetings couldn't.
pncli gives AI coding agents (and humans) structured CLI access to Jira, Bitbucket, Confluence, SonarQube, SDElements, Azure DevOps Server, Jenkins, JFrog Artifactory, IBM UrbanCode Deploy, and Checkmarx. No MCP servers required. No meetings to schedule. No forms to fill out.
Your org blocked MCP. Your agents still need to review PRs, create issues, and manage code reviews. pncli is the shim layer that makes it work — one npm install and you're cutting through red tape.
npm install -g @kolatts/pncli# Configure your global auth (Jira, Bitbucket, Confluence)
pncli config init
# Add repo-level defaults (check this into git)
pncli config init --repoFor workflow patterns, command examples, and agent integration, see the Getting Started page or the raw copilot-instructions.md.
pncli uses a three-layer config system (highest priority wins):
| Layer | File | Contains | In Git? |
|---|---|---|---|
| Env vars | PNCLI_* |
Auth overrides, CI secrets | No |
| Repo config | .pncli.json |
Team defaults (project, issue type, priority, target branch) | Yes |
| Global config | ~/.pncli/config.json |
Auth, server URLs, personal defaults | No |
| Variable | Description |
|---|---|
PNCLI_EMAIL |
Your email address (used across Jira, Bitbucket, etc.) |
PNCLI_USERID |
Your user ID or username |
PNCLI_JIRA_BASE_URL |
Jira base URL |
PNCLI_JIRA_API_TOKEN |
Jira API token |
PNCLI_BITBUCKET_BASE_URL |
Bitbucket Server base URL |
PNCLI_BITBUCKET_PAT |
Bitbucket personal access token |
PNCLI_CONFLUENCE_BASE_URL |
Confluence base URL |
PNCLI_CONFLUENCE_API_TOKEN |
Confluence API token (falls back to Jira token if unset) |
PNCLI_SONAR_BASE_URL |
SonarQube Server base URL |
PNCLI_SONAR_TOKEN |
SonarQube personal access token |
PNCLI_SDE_CONNECTION |
SDElements connection string (api-token@hostname, e.g. mytoken@myorg.sdelements.com) |
PNCLI_ADO_BASE_URL |
Azure DevOps Server base URL |
PNCLI_ADO_PAT |
Azure DevOps Server personal access token |
PNCLI_JENKINS_BASE_URL |
Jenkins base URL |
PNCLI_JENKINS_USERNAME |
Jenkins username |
PNCLI_JENKINS_API_TOKEN |
Jenkins API token |
PNCLI_ARTIFACTORY_BASE_URL |
JFrog Artifactory base URL |
PNCLI_ARTIFACTORY_TOKEN |
Artifactory access token |
PNCLI_ARTIFACTORY_REPO_NPM |
Artifactory virtual npm repository name |
PNCLI_ARTIFACTORY_REPO_NUGET |
Artifactory virtual NuGet repository name |
PNCLI_ARTIFACTORY_REPO_MAVEN |
Artifactory virtual Maven repository name |
PNCLI_UDEPLOY_BASE_URL |
IBM UrbanCode Deploy base URL |
PNCLI_UDEPLOY_PAT |
IBM UrbanCode Deploy personal access token |
PNCLI_UDEPLOY_USERNAME |
IBM UrbanCode Deploy username (alternative to PAT) |
PNCLI_UDEPLOY_PASSWORD |
IBM UrbanCode Deploy password (used with PNCLI_UDEPLOY_USERNAME) |
PNCLI_CHECKMARX_BASE_URL |
Checkmarx One API base URL |
PNCLI_CHECKMARX_TENANT_NAME |
Checkmarx One tenant name |
PNCLI_CHECKMARX_API_KEY |
Checkmarx One API key |
PNCLI_CHECKMARX_CLIENT_ID |
Checkmarx One OAuth client ID (API key alternative) |
PNCLI_CHECKMARX_CLIENT_SECRET |
Checkmarx One OAuth client secret (API key alternative) |
PNCLI_CONFIG_PATH |
Override global config file path |
pncli is designed agent-first:
- Every command returns structured JSON to stdout
- Errors are JSON too — always check
"ok" --dry-runlets agents preview before executing- See
copilot-instructions.mdfor workflow patterns
--pretty Human-readable formatted output (default: compact JSON)
--verbose Include full API response metadata
--dry-run Print the API request without executing
--config <path> Override global config file location
--output-file <path> Write JSON output to file instead of stdout
This project uses Conventional Commits for automatic versioning:
fix: ...→ patchfeat: ...→ minorfeat!: ...→ major
| Service | Status | Designed for | Auth methods |
|---|---|---|---|
| Git (local) | ✅ Active | Any git version | — (local git commands) |
| Jira | ✅ Active | Jira Data Center 9.x / 10.x | email + API token |
| Bitbucket | ✅ Active | Bitbucket Server / Data Center 8.x–9.x | HTTP access token (PAT) |
| Confluence | ✅ Active | Confluence Data Center 8.x / 9.x | email + API token |
| SonarQube | ✅ Active | SonarQube Server 9.x / 10.x | user token |
| SDElements | ✅ Active | SDElements cloud + on-prem (REST API v2) | connection string (token@hostname) |
| Azure DevOps Server | ✅ Active | ADO Server 2020+ (REST API 7.1) | personal access token (PAT) |
| Jenkins | ✅ Active | Jenkins 2.x LTS (Data Center) | username + API token |
| JFrog Artifactory | ✅ Active | Artifactory 7.x | bearer token |
| IBM UrbanCode Deploy | ✅ Active | UCD 7.x | PAT or username + password |
| Checkmarx | ✅ Active | CxSAST 9.x (on-prem) | username + password (OAuth2 password grant — pncli handles token exchange) |