@holliacp/acp-cli
v1.0.6
Published
A command-line tool for managing Nacos configurations and AI skills
Downloads
168
Maintainers
Readme
ACP CLI
A powerful command-line tool for managing Nacos configuration center and AI skills, written in Go.
Features
- 🚀 Fast and lightweight - single binary with no dependencies
- 💻 Interactive terminal mode with auto-completion
- 🎯 Skill management - full lifecycle: upload → review → release, plus get/list/describe
- 🤖 AgentSpec management - full lifecycle: upload → review → release, plus get/list/describe
- 📝 Configuration management - list, get and set configurations
- 🌐 Namespace support for multi-environment management
- 📦 Batch operations - upload all skills and agent specs at once
- 🧾 Structured output -
--output jsonon list/describe for scripting
Installation
npm / npx
Use npx to run directly without installation:
npx @holliacp/acp-cli --help
npx @holliacp/acp-cli skill-list --host 127.0.0.1 --port 8848 -u nacos -p nacosOr install globally via npm:
npm install -g @holliacp/acp-cli
acp-cli --helpDownload Binary
Download the latest release from GitHub Releases.
Build from Source
# Clone the repository
git clone https://github.com/holliacp/acp-cli.git
cd acp-cli
# Build
go build -o acp-cli
# Or use make
make buildQuick Start
CLI Mode
Run commands directly:
# List all skills
acp-cli skill-list -s 127.0.0.1:8848 -u nacos -p nacos
# Get a skill
acp-cli skill-get skill-creator -s 127.0.0.1:8848 -u nacos -p nacos
# Upload a skill
acp-cli skill-upload /path/to/skill -s 127.0.0.1:8848 -u nacos -p nacosInteractive Terminal Mode
Start an interactive session:
acp-cli -s 127.0.0.1:8848 -u nacos -p nacosOnce in terminal mode, you can run commands interactively:
acp> skill-list
acp> skill-get skill-creator
acp> config-list
acp> helpCommands
AgentSpec Management
Agent specs follow a three-stage lifecycle aligned with the server:
upload (editing) → review (reviewing → reviewed) → release (online).
List AgentSpecs
# CLI mode (pretty output by default)
acp-cli agentspec-list -s 127.0.0.1:8848 -u nacos -p nacos
# With filters
acp-cli agentspec-list --name my-agentspec --page 1 --size 20
# Machine-readable output for scripts
acp-cli agentspec-list --output json
# Terminal mode
acp> agentspec-list
acp> agentspec-list --name my-agentspec --page 2
acp> agentspec-list --output jsonDescribe AgentSpec
Show detail + version history (latest / editing / reviewing / online, plus per-version status):
acp-cli agentspec-describe my-agentspec
acp-cli agentspec-describe my-agentspec --output json
# Terminal mode
acp> agentspec-describe my-agentspecGet/Download AgentSpec
Download an agent spec to local directory (default: ~/.agentspecs):
# CLI mode
acp-cli agentspec-get my-agentspec -s 127.0.0.1:8848 -u nacos -p nacos
acp-cli agentspec-get my-agentspec -o /custom/path
# Download specific version
acp-cli agentspec-get my-agentspec --version v1
# Download by route label
acp-cli agentspec-get my-agentspec --label latest
# Download multiple agent specs
acp-cli agentspec-get spec1 spec2 spec3
# Terminal mode
acp> agentspec-get my-agentspecUpload AgentSpec
Upload an agent spec from local directory (creates or updates the editing version):
# Upload single agent spec
acp-cli agentspec-upload /path/to/agentspec -s 127.0.0.1:8848 -u nacos -p nacos
# Upload all agent specs in a directory
acp-cli agentspec-upload --all /path/to/agentspecs/folder
# Terminal mode
acp> agentspec-upload /path/to/agentspec
acp> agentspec-upload --all /path/to/agentspecsReview AgentSpec
Submit the current editing version for review (editing → reviewing). The server-side
review pipeline is asynchronous and eventually marks the version as reviewed.
acp-cli agentspec-review my-agentspec
# Terminal mode
acp> agentspec-review my-agentspecRelease AgentSpec
Publish an approved (reviewed) version online:
acp-cli agentspec-release my-agentspec --version 0.0.2
acp-cli agentspec-release my-agentspec --version 0.0.2 --update-latest=false
# Terminal mode
acp> agentspec-release my-agentspec --version 0.0.2Note: if
agentspec-releasefails withHTTP 400 parameter validate errorright afteragentspec-review, the async review pipeline probably hasn't marked the version asreviewedyet. The CLI will print a hint telling you to wait a few seconds and re-check status viaagentspec-describe. Retry whenSTATUS=reviewed.
Publish AgentSpec (deprecated)
agentspec-publish is kept as a backward-compatible shortcut that runs
upload + review in sequence. It prints a deprecation warning and will
be removed in a future release — prefer the explicit lifecycle commands
above.
# Legacy shortcut (deprecated)
acp-cli agentspec-publish /path/to/agentspec
acp-cli agentspec-publish --all /path/to/agentspecs/folderSkill Management
Skills follow the same three-stage lifecycle as agent specs:
upload (editing) → review (reviewing → reviewed) → release (online).
List Skills
# CLI mode (pretty output by default)
acp-cli skill-list -s 127.0.0.1:8848 -u nacos -p nacos
# With filters
acp-cli skill-list --name skill-creator --page 1 --size 20
# Machine-readable output for scripts
acp-cli skill-list --output json
# Terminal mode
acp> skill-list
acp> skill-list --name skill-creator --page 2
acp> skill-list --output jsonDescribe Skill
acp-cli skill-describe skill-creator
acp-cli skill-describe skill-creator --output json
# Terminal mode
acp> skill-describe skill-creatorGet/Download Skill
Download a skill to local directory (default: ~/.skills):
# CLI mode
acp-cli skill-get skill-creator -s 127.0.0.1:8848 -u nacos -p nacos
acp-cli skill-get skill-creator -o /custom/path
# Terminal mode
acp> skill-get skill-creatorUpload Skill
Upload a skill from local directory (creates or updates the editing version):
# Upload single skill
acp-cli skill-upload /path/to/skill -s 127.0.0.1:8848 -u nacos -p nacos
# Upload all skills in a directory
acp-cli skill-upload --all /path/to/skills/folder
# Terminal mode
acp> skill-upload /path/to/skill
acp> skill-upload --all /path/to/skillsReview Skill
Submit the current editing version for review (editing → reviewing):
acp-cli skill-review skill-creator
# Terminal mode
acp> skill-review skill-creatorRelease Skill
Publish an approved (reviewed) version online:
acp-cli skill-release skill-creator --version 0.0.2
acp-cli skill-release skill-creator --version 0.0.2 --update-latest=false
# Terminal mode
acp> skill-release skill-creator --version 0.0.2Same async-pipeline note as
agentspec-release: ifskill-releasereturnsHTTP 400 parameter validate errorjust afterskill-review, wait and retry whenskill-describeshows the version asreviewed.
Publish Skill (deprecated)
skill-publish is kept as a backward-compatible shortcut that runs
upload + review in sequence. Prefer the explicit lifecycle commands.
# Legacy shortcut (deprecated)
acp-cli skill-publish /path/to/skill
acp-cli skill-publish --all /path/to/skills/folderConfiguration Management
List Configurations
# CLI mode
acp-cli config-list -s 127.0.0.1:8848 -u nacos -p nacos
# With filters
acp-cli config-list --data-id myconfig --group DEFAULT_GROUP
# With pagination
acp-cli config-list --page 1 --size 20
# Terminal mode
acp> config-list
acp> config-list --data-id myconfig --page 2Get Configuration
# CLI mode
acp-cli config-get myconfig DEFAULT_GROUP -s 127.0.0.1:8848 -u nacos -p nacos
# Terminal mode
acp> config-get myconfig DEFAULT_GROUPTerminal Commands
When in interactive terminal mode:
acp> help # Show all available commands
acp> server # Show server information
acp> ns # Show current namespace
acp> ns production # Switch to production namespace
acp> clear # Clear screen
acp> quit # Exit terminalGlobal Flags
| Flag | Short | Default | Description |
|------|-------|---------|-------------|
| --host | | acp-store.hollicube.com when --host and --port are both omitted; otherwise 127.0.0.1 when only --port is provided | Nacos server host |
| --port | | 8848 when omitted after --host; 80 is used by the generated default profile | Nacos server port |
| --server | -s | acp-store.hollicube.com:80 when no host/port/profile config is provided | Nacos server address (deprecated, use --host and --port) |
| --username | -u | | Nacos username |
| --password | -p | | Nacos password |
| --namespace | -n | (empty/public) | Nacos namespace ID |
| --config | -c | | Path to configuration file |
| --profile | | default | Profile name (~/.acp-cli/<profile>.conf) |
| --auth-type | | inferred from credentials or none | Auth type: nacos, aliyun, or sts-hiclaw |
| --access-key | | | AccessKey for aliyun/sts-hiclaw auth |
| --secret-key | | | SecretKey for aliyun/sts-hiclaw auth |
| --security-token | | | STS SecurityToken for sts-hiclaw auth |
| --verbose | | false | Enable verbose/debug output |
| --help | -h | | Show help information |
Profile Configuration
Use profile edit to create or update a profile configuration:
# Create or update the default profile
acp-cli profile edit
# Create or update a named profile
acp-cli profile edit dev
# Use the profile
acp-cli --profile dev skill-listProfile files are stored under ~/.acp-cli/<profile>.conf. They are YAML
files managed by the CLI, and sensitive fields are encrypted before they are
saved.
Example generated profile:
host: 127.0.0.1
port: 8848
authType: nacos
username: ENC[v1:aes-256-gcm:...]
password: ENC[v1:aes-256-gcm:...]
namespace: ""Sensitive fields (username, password, accessKey, secretKey, and
securityToken) are encrypted with AES-256-GCM before being saved by the CLI.
The local encryption key is stored at ~/.acp-cli/key with 0600
permissions. Existing plaintext config files remain readable for backward
compatibility; the next profile load or profile edit rewrites sensitive fields
in encrypted form.
Configuration Priority
Configuration values are applied in the following priority order:
- Command line arguments (highest priority)
- Configuration file
- Environment variables
- Default values (lowest priority)
Supported environment variables:
export HOLLIACP_HOST=127.0.0.1
export HOLLIACP_PORT=8848
export HOLLIACP_NAMESPACE=xxxFor example:
acp-cli --config ./local.conf --host 10.0.0.1- Uses10.0.0.1from command line, other values from config fileHOLLIACP_HOST=127.0.0.1 HOLLIACP_PORT=8848 HOLLIACP_NAMESPACE=xxx acp-cli skill-list- Uses environment variables when command line and config file values are not providedacp-cli- Uses defaultacp-store.hollicube.com:80when neither--hostnor--portis providedacp-cli --host 127.0.0.1- Uses127.0.0.1:8848because--hostwas provided without--portacp-cli --port 8849- Uses127.0.0.1:8849because only--portwas providedacp-cli --config ./local.conf- Uses all values from config file
Project Structure
acp-cli/
├── cmd/ # CLI commands
│ ├── root.go # Root command / global flags
│ ├── list_skill.go # skill-list
│ ├── describe_skill.go # skill-describe
│ ├── get_skill.go # skill-get
│ ├── upload_skill.go # skill-upload
│ ├── review_skill.go # skill-review
│ ├── release_skill.go # skill-release
│ ├── publish_skill.go # skill-publish (deprecated wrapper)
│ ├── list_agentspec.go # agentspec-list
│ ├── describe_agentspec.go # agentspec-describe
│ ├── get_agentspec.go # agentspec-get
│ ├── upload_agentspec.go # agentspec-upload
│ ├── review_agentspec.go # agentspec-review
│ ├── release_agentspec.go # agentspec-release
│ ├── publish_agentspec.go # agentspec-publish (deprecated wrapper)
│ ├── list_config.go # config-list
│ ├── get_config.go # config-get
│ ├── set_config.go # config-set
│ ├── profile.go # profile / config file handling
│ └── interactive.go # Interactive terminal entry
├── internal/
│ ├── client/ # Nacos client
│ ├── skill/ # Skill service
│ ├── agentspec/ # AgentSpec service
│ ├── config/ # Profile config and credential encryption
│ ├── listener/ # Config listener
│ ├── terminal/ # Interactive terminal implementation
│ ├── help/ # Help system
│ └── util/ # Path and output helpers
├── main.go
├── go.mod
└── README.mdLicense
MIT License
