Skip to main content

Overview & Installation

The ProjectAchilles CLI (achilles) is a terminal-based management tool for the continuous security validation platform. It provides full control over agents, tasks, schedules, analytics, builds, certificates, and integrations -- all from the command line.

Dual-Mode Architecture

The CLI operates in two modes:

  • Command Mode (achilles <command> [subcommand] [flags]): Traditional CLI commands with structured output. Ideal for scripting, CI/CD pipelines, and quick operations.
  • Chat Mode (achilles chat): AI-powered conversational interface that understands natural language and can execute any platform operation through tool calling.

Requirements

The CLI is built on Bun -- a fast JavaScript runtime. Bun is required to run the CLI.

# Install Bun (if not already installed)
curl -fsSL https://bun.sh/install | bash

Installation

# Clone the repository (if you haven't already)
git clone <repo-url> ProjectAchilles
cd ProjectAchilles/cli

# Install dependencies
bun install

# Run directly
bun run bin/achilles.ts

# Or use the dev script
bun run dev
tip

You can create a shell alias for convenience:

alias achilles="bun run /path/to/ProjectAchilles/cli/bin/achilles.ts"

Building a Standalone Binary

cd cli
bun run build
# Output: dist/achilles

Available Commands

CommandAliasDescription
statusstHealth check -- backend connectivity, auth, and fleet summary
loginAuthenticate with the backend (OAuth2 Device Flow)
logoutClear stored authentication tokens
configView and modify CLI configuration and profiles
agentsaManage enrolled agents
tokensManage enrollment tokens
taskstManage security test tasks
schedulesManage recurring test schedules
versionsManage agent binary versions
browserBrowse the security test library
analyticsanQuery security analytics from Elasticsearch
defenderMicrosoft Defender integration
buildsManage test builds and dependencies
certsManage code signing certificates
integrationsConfigure Azure AD and alerting
riskRisk acceptance workflow management
usersTeam member and invitation management
helpShow help
chatLaunch AI conversational agent

Global Flags

These flags work with any command:

FlagShortDescription
--jsonOutput structured JSON instead of human-readable text. Useful for scripting, CI/CD, and LLM integration.
--help-hShow help for the current command or subcommand.
--version-VShow CLI version.

JSON Mode

Every command supports --json for machine-readable output. This is especially useful for:

  • Scripting: Parse output with jq or other JSON tools
  • CI/CD pipelines: Reliable structured data for automation
  • AI agents: Consistent schema for LLM consumption
# Human-readable output
achilles agents list

# JSON output for scripting
achilles agents list --json

# Pipe to jq for filtering
achilles agents list --json | jq '.agents[] | select(.status == "active")'

Quick Start

# 1. Check connectivity and status
achilles status

# 2. Authenticate
achilles login

# 3. List your agents
achilles agents list

# 4. Check defense score
achilles analytics score

# 5. Launch AI chat for natural language interaction
achilles chat

Getting Help

# Global help
achilles --help

# Command-specific help
achilles agents --help

# JSON-formatted help (for tooling)
achilles agents --help --json

The help system is auto-generated from command definitions, so it always reflects the current state of available commands, flags, and arguments.