Configuration
This configuration model applies to Atlassian Jira Cloud Automation only. ajat does not support Jira Server or Jira Data Center.
Released builds are available for macOS and Linux. The config file lives in the platform’s standard user-config directory on both.
ajat applies configuration from four sources, in order of increasing priority:
| Priority | Source | Example |
|---|---|---|
| 1 (lowest) | Built-in defaults | |
| 2 | Config file | (see below) |
| 3 | AJAT_ environment variables | AJAT_JIRA_DOMAIN |
| 4 (highest) | CLI flags | --log-level debug |
In practice, this lets teams keep durable workstation defaults in the config file, inject secrets through environment variables in CI/CD, and reserve CLI flags for per-run overrides and debugging.
Config file location
The default config file location depends on your operating system. Run:
ajat config whereTo create a config file with all defaults filled in:
ajat config createThe config file is a YAML file named config.yaml, stored alongside the
machine-bound license.bin in the platform’s standard user-config directory:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/ajat/config.yaml |
| Linux | ~/.config/ajat/config.yaml (or $XDG_CONFIG_HOME/ajat/config.yaml) |
macOS
~/Library/Application Support/ajat/
- config.yaml
- license.bin
You can point ajat at a different file for the current run with the global
--config-file flag or the AJAT_CONFIG_FILE environment variable.
Full config file reference
# Jira Cloud connection
jira:
domain: acme.atlassian.net # Bare hostname, no https:// or trailing slash
username: you@acme.com # Your Atlassian account email
api_token: YOUR_API_TOKEN # API token from id.atlassian.com (masked in output)
type: cloud # Jira deployment type (cloud)
# HTTP client behaviour
http:
client:
max_retries: 3 # Retry attempts for non-Automation HTTP calls
base_timeout: 1s # Initial request timeout
max_timeout: 30s # Maximum request timeout after retries
proxy: "" # HTTP/HTTPS proxy URL (e.g. http://proxy.corp:8080)
# Logging
log:
level: info # debug | info | warn | error
format: text # text | json
file: "" # stdout | stderr | /path/to/file.log
# Debug mode
debug:
enabled: false # Enables verbose debug output
dir: debug # Directory for debug artefactsjira.domain is the bare hostname. Do not include https://, a trailing
slash, or a /wiki suffix. jira.type defaults to cloud, matching the only
supported deployment model.
Setting credentials
ajat needs three connection values — jira.domain, jira.username, and
jira.api_token — before any operational command can reach the tenant. You can
supply them three ways.
1. Config file (workstation)
Edit config.yaml directly, or write the values with config set:
ajat config set jira.domain acme.atlassian.net
ajat config set jira.username you@acme.com
ajat config set jira.api_token <api-token>2. ajat config set (persisted, no manual YAML)
config set writes to the same config file but avoids hand-editing YAML. If the
file does not exist yet, it is created with defaults first. This is the simplest
way to establish repeatable workstation setup with a clear audit trail. See
Config Commands.
3. AJAT_ environment variables (CI/CD)
For CI/CD runners and shared systems, prefer environment variables so secrets never touch a config file on disk:
export AJAT_JIRA_DOMAIN=acme.atlassian.net
export AJAT_JIRA_USERNAME=you@acme.com
export AJAT_JIRA_API_TOKEN=<api-token>Create the API token for the operating Atlassian account at
id.atlassian.com/manage-profile/security/api-tokens. Jira Cloud API
auth uses the account email as jira.username, not a display name.
Environment variables
Every config key can be set with an environment variable by prefixing AJAT_
and replacing . with _:
| Environment variable | Config key | Description |
|---|---|---|
AJAT_CONFIG_FILE | config.file | Override the config file path |
AJAT_JIRA_DOMAIN | jira.domain | Bare Jira Cloud hostname |
AJAT_JIRA_USERNAME | jira.username | Atlassian account email |
AJAT_JIRA_API_TOKEN | jira.api_token | API token; keep secret |
AJAT_JIRA_TYPE | jira.type | Deployment type (defaults to cloud) |
AJAT_HTTP_CLIENT_PROXY | http.client.proxy | HTTP/HTTPS proxy URL |
AJAT_HTTP_CLIENT_MAX_RETRIES | http.client.max_retries | Retry count for non-Automation calls |
AJAT_HTTP_CLIENT_BASE_TIMEOUT | http.client.base_timeout | Base request timeout (e.g. 1s) |
AJAT_HTTP_CLIENT_MAX_TIMEOUT | http.client.max_timeout | Max request timeout (e.g. 30s) |
AJAT_LOG_LEVEL | log.level | Log level |
AJAT_LOG_FORMAT | log.format | Log format |
AJAT_LOG_FILE | log.file | Log output target |
AJAT_DEBUG_ENABLED | debug.enabled | Enable debug logging |
Global CLI flags
These persistent flags are available on every command:
| Flag | Default | Description |
|---|---|---|
--config-file | (see config where) | Path to a custom config file |
--log-level | info | Log verbosity: debug, info, warn, error |
--log-format | text | Log format: text or json |
--log-file | (discard) | Write logs to stdout, stderr, or a file path |
--debug | false | Shorthand for --log-level=debug |
--no-progress | false | Disable progress bars for CI, scripting, or recordings |
--version-extended | false | Print extended build metadata and exit |
Credential validation
Validate the effective configuration without contacting Jira or making any network call:
ajat config validateAdd --require-credentials to also confirm that jira.domain,
jira.username, and jira.api_token are set — the same check the export and
report commands run before they connect to Jira:
ajat config validate --require-credentialsThe command exits 0 when the configuration is valid and non-zero with an
actionable message when it is not, which makes it a useful gate in setup scripts
and CI pipelines. To validate live credentials and connectivity end-to-end, run
ajat doctor.
Token masking
jira.api_token is always masked in command output. ajat config get,
ajat config list, and the ajat support bundle all
show the token redacted, so the effective configuration is safe to share when
reporting an issue or reviewing a setup.
ajat config list
ajat config get jira.domainSecure configuration practices
- Prefer
AJAT_environment variables for API tokens on shared, managed, or CI/CD systems. - Use
config createto establish the expected file shape before editing manually. - Run
doctorafter configuration changes so license, credentials, and connectivity are validated together. - Use a custom
--config-filewhen you need isolated test and production configurations on the same machine.
Behind a corporate proxy
ajat config set http.client.proxy "http://proxy.corp.example.com:8080"With authentication:
ajat config set http.client.proxy "http://user:password@proxy.corp.example.com:8080"Avoid storing proxy credentials in the config file if it is shared or
version-controlled. Use the AJAT_HTTP_CLIENT_PROXY environment variable
instead.
Logging to a file
ajat export --output-dir ./jira-automations-backup --log-file ajat.logUse --log-format json for structured logs in regulated or CI/CD environments,
and stdout or stderr to stream logs to your terminal:
ajat export --output-dir ./jira-automations-backup --log-file stdout --log-format jsonNext steps
- Config Commands — manage the config file from the CLI.
- Utilities — validate the workstation with
doctorand inspect the command surface. - Getting Started — the full path from install to first export.