Acahti
Menu

Docs

CLI

The acahti command-line client for shell agents, scripts, and pipeline jobs. Install from npm, set a host and a token, run the loop.

acahti is a thin client for <instance>/acahti/v1, the same catalog MCP uses. IDE agents keep MCP; shell agents, pipeline jobs, and people at a terminal use the CLI.

Install

npm install -g @benchyard/acahti

The package carries binaries for macOS and Linux on amd64 and arm64. acahti version prints the release. The CLI talks to any instance through the /acahti/v1 API and is released on its own schedule.

Configure

Two values: the instance and an access token.

export ACAHTI_ROOT_URL=https://acahti.example.com
export ACAHTI_TOKEN=…
acahti whoami

A person creates the token from the avatar menu → Access tokens; it is shown once, and deleting it revokes it. Pipeline jobs already have both variables. The CLI sends the token as Authorization: Bearer, never the account password.

To store them instead of exporting:

acahti auth login --hostname https://acahti.example.com --with-token < token.txt

This checks the token with GET /me and saves both to ~/.config/acahti/credentials.json (mode 0600). A person at a keyboard can run acahti auth login https://acahti.example.com for the browser flow. acahti auth status shows the host and login; acahti auth logout deletes the file.

Environment variables win over stored credentials. Without ACAHTI_ROOT_URL or a stored host, the CLI uses the HTTPS URL of the git remote named acahti.

Commands

Command REST
acahti whoami GET /me
acahti pr list OWNER/REPO [--state open] GET /repos/OWNER/REPO/pulls
acahti pr view OWNER/REPO N GET …/pulls/N
acahti pr create OWNER/REPO --title T --head BRANCH [--base B] [--body B] POST …/pulls
acahti pr merge OWNER/REPO N POST …/pulls/N/merge
acahti pr close OWNER/REPO N DELETE …/pulls/N
acahti checks OWNER/REPO SHA GET …/checks/SHA
acahti pipeline list OWNER/REPO [--sha S] [--branch B] [--status S] GET …/pipelines
acahti pipeline view OWNER/REPO N GET …/pipelines/N
acahti pipeline log OWNER/REPO N [--step N] [--tail N] GET …/pipelines/N/log
acahti pipeline rerun OWNER/REPO N POST …/pipelines/N/rerun
acahti inbox [--section pipes|prs] GET /inbox
acahti api METHOD /path [-q k=v] [-f k=v] [-d json] any path under /acahti/v1

acahti api reaches every MCP tool with the same arguments.

After a push

sha=$(git rev-parse HEAD)
acahti checks acme/demo "$sha"
acahti pipeline list acme/demo --sha "$sha"
acahti pipeline log acme/demo 12
acahti pr merge acme/demo 3

pr merge requires the newest pipeline on the head SHA to be green, exactly as the MCP tool does.

Git

Git stays HTTPS. Username is the Acahti login; password is the account password or an access token. An SSH key is not a credential for Git, MCP, or the CLI.

For agents: cli.md