Metadata-driven CLI for AI Agent Bots — 48 operations across 7 domains, structured JSON envelope I/O, zero interactive prompts.
# Add to your Claude Code skills
git clone https://github.com/Mininglamp-OSS/octo-cliGuides for using ai agents skills like octo-cli.
Last scanned: 7/1/2026
{
"issues": [
{
"file": "README.md",
"line": 93,
"type": "remote-install",
"message": "Install command (remote install script piped to a shell — review the source before running): \"curl -fsSL https://raw.githubusercontent.com/Mininglamp-OSS/octo-cli/main/instal\"",
"severity": "low"
}
],
"status": "PASSED",
"scannedAt": "2026-07-01T08:13:31.503Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how octo-cli compares with popular alternatives.
octo-cli is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Mininglamp-OSS. Metadata-driven CLI for AI Agent Bots — 48 operations across 7 domains, structured JSON envelope I/O, zero interactive prompts. It has 923 GitHub stars.
Yes. octo-cli passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/Mininglamp-OSS/octo-cli" and add it to your Claude Code skills directory (see the Installation section above).
octo-cli is primarily written in Go. It is open-source under Mininglamp-OSS on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh octo-cli against similar tools.
No comments yet. Be the first to share your thoughts!
From $49 · 30 days · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
octo-cli is the command-line interface for the Octo ecosystem — a thin,
single-binary REST client designed for AI Agent Bots to call via exec
from agent runtimes (OpenClaw, Claude Code, and similar). Every invocation
emits a structured JSON envelope on stdout; errors go to stderr with a
deterministic taxonomy. There is no interactive I/O.
octo-cli is metadata-driven. The command tree is auto-registered at startup from OpenAPI 3.x specs embedded into the binary. Adding or changing an endpoint means editing a spec, not the code.
OpenAPI specs ──► Registry ──► Service Engine ──► Factory ──► Client ──► Output
(embedded) (parsed) (cobra commands) (DI) (HTTP) (envelope)
Key properties:
OCTO_API_BASE_URL.internal/cmdutil.Factory is the dependency container.
No mutable package-level globals; tests inject stubs through ConfigFunc
/ CredentialFunc / ClientFunc / RegistryFunc.| Domain | Ops | Purpose |
|---|---|---|
docs |
45 | Documents, spreadsheets, whiteboards & PPT — lifecycle, full-text search, body content, worksheet discovery and scoped/paged reads, sheet edits (atomic replace, conditional formats, split/deduplication), board scenes, members, comments, versions, attachments |
html |
22 | Interactive HTML documents (octo-doc, separate backend from docs) — read source with its version, publish immutable versions, drafts, per-doc share codes & per-uid grants, media assets, inline comments, agent element read/replace |
drive |
47 | Network drive — spaces & members, folder/file tree, full-text search and creator selection, single-part and resumable-style multipart blob upload, signed download, online-document mounts, share links, invites, IM-attachment transfer. Six hand-written composites bring the command tree to 50 leaves |
matter |
14 | Todos/tasks — temporarily withheld while the backend API stabilizes |
summary |
4 | Personal-bot summaries — create owner-only summaries from explicit sources, then discover/read/cite. Temporarily withheld while the create backend (Mininglamp-OSS/octo-smart-summary#181) is merged, deployed, and enabled |
group |
9 | Groups — list, get, members, metadata; create/update (User Bot) |
thread |
8 | Threads — create, list, get, members, join/leave, metadata |
bot |
6 | Bot lifecycle — register, user-info, space-members, heartbeat |
message |
10 | Messaging — send, edit, sync, read-receipt; search (search/all/files/media/around/groups, in-channel or cross-channel) |
file |
4 | Files — upload, download, credentials, presigned URLs |
event |
2 | Event polling — list, ack |
loop |
126 | Fleet control plane — tasks and assignees, Loop projects/resources, Project member rosters, experts, expert teams, workspaces, runtimes, skills, automations, and attachments |
For Node-based agent runtimes (OpenClaw, etc.):
npm install -g @mininglamp-oss/octo-cli
# Or use the global package manager for your runtime:
bun install -g @mininglamp-oss/octo-cli
pnpm add -g @mininglamp-oss/octo-cli
The npm package resolves the matching platform sub-package, which already contains the prebuilt binary. Install does not download binaries from GitHub.
go install github.com/Mininglamp-OSS/octo-cli/cmd/octo-cli@latest
brew install Mininglamp-OSS/tap/octo-cli
Download the latest binary for your platform from GitHub Releases:
# Archives are named octo-cli_<version>_<os>_<arch>.tar.gz for every platform,
# including Windows. Pick the one for your platform and substitute <version>
# (e.g. 0.5.0):
curl -LO https://github.com/Mininglamp-OSS/octo-cli/releases/download/v<version>/octo-cli_<version>_linux_amd64.tar.gz
tar xzf octo-cli_<version>_linux_amd64.tar.gz
sudo mv octo-cli /usr/local/bin/
Windows release archives are .tar.gz as well; Windows 10+ includes tar.exe.
curl -fsSL https://raw.githubusercontent.com/Mininglamp-OSS/octo-cli/main/install.sh | sh
octo-cli upgrade --dry-run
octo-cli upgrade
upgrade identifies the npm, Bun or pnpm installation that owns the invoked
command and updates it to the configured registry's stable latest release.
An equal or newer installed version is a successful no-op. It verifies the
installed package, platform binary and command before reporting success.
Updates enable optional dependencies for npm/pnpm and explicitly install Bun's matching platform package, because its executable is required to run the CLI.
Registry mirrors, scoped registries and authentication use the owning manager's
native settings: npm's user/global .npmrc and environment, Bun's supported
.npmrc and global .bunfig.toml, or pnpm's native configuration. The invoking
project's registry settings do not redirect the upgrade.
Dry run checks local ownership without contacting a registry or installing.
Upgrade requires no Octo credentials and preserves --format / --jq.
Use the original installation method for raw binaries, go install, project-local
or temporary installs. Loop task mode does not allow upgrades. Package-manager
failures stop the command; an installation failure can leave partially changed
files, so inspect the structured error before retrying.
# Authenticate as a bot (`OCTO_BOT_TOKEN` remains a compatible alias).
export OCTO_TOKEN="bf_your_user_bot_token"
# Optional for test or self-hosted deployments; production is the default.
# export OCTO_API_BASE_URL="https://im-test.deepminer.com.cn"
# NOTE: the `matter` domain is temporarily withheld (backend API stabilizing).
# Messaging
octo-cli message send --data '{"channel_id":"chat-1","channel_type":1,"payload":{"type":1,"content":"hi"}}'
octo-cli message edit --data '{"message_id":"m-1","channel_id":"chat-1","channel_type":1,"content_edit":"{\"type\":1,\"content\":\"updated\"}"}'
# Message search (User Bot bf_ or user API key uk_ token; App Bot app_ is rejected locally).
octo-cli message search --chat-id chat-1 --keyword "quarterly report" # in-channel
octo-cli message search --keyword "quarterly report" # cross-channel (mixed feed)
octo-cli message search files --chat-id chat-1 --keyword "*.pdf" # files in a channel
octo-cli message search groups --keyword "quarterly report" # which channels matched (L1)
octo-cli message search all --keyword "budget" --on-behalf-of u-alice # OBO: as a real person
# Groups and threads
octo-cli group list
octo-cli group members group-abc
octo-cli thread list group-abc
octo-cli thread create group-abc --name "design review"
# Files
octo-cli file upload --file ./report.pdf
octo-cli file download abc123 --jq '.data.url'
# Drive — the server chooses single-part or multipart upload; the same command
# handles both. Its single prepare request declares multipart-v1; the server
# returns `single` below its threshold or a multipart snapshot above it.
# Multipart progress goes to stderr.
octo-cli drive upload file ./large.bin --space-id <drive-space-id>
# Agent Mail — policy-aware send; the server may accept it or save a Draft
# depending on the mailbox's current outbound mode.
octo-cli mail message send-intent \
--to recipient@example.com --subject "Status update" --text "Ready." \
--idempotency-key "send-example-001"
octo-cli mail thread get T123
octo-cli mail draft list
# Draft update replaces the entire Draft. Read it first and resend every field
# that must remain; omitted cc/bcc/text/html/attachments are removed.
octo-cli mail message read E123
octo-cli mail draft update E123 --draft-version 1 \
--to recipient@example.com --cc teammate@example.com \
--bcc archive@example.com --subject "Updated draft" --text "Updated body"
# Retaining attachments requires a complete attachments array containing the
# exact base64 content, supplied through --data.
# Send an ordinary human-authored Draft without --draft-version.
octo-cli mail draft send E120
# Send an Agent-prepared Draft with its current version.
octo-cli mail draft send E124 --draft-version 2
octo-cli mail draft delete E125
# Docs — create/list/search, then read and incrementally edit the live body.
octo-cli docs create --title "Design notes"
octo-cli docs list --sort updatedAt:desc
octo-cli docs search --keyword "quarterly plan" --doc-type doc --page-all
octo-cli docs get doc-123
octo-cli docs content get doc-123 # returns the body + base version token
octo-cli docs import doc-123 --file ./notes.md # replaces a doc from .md/.markdown/.docx
octo-cli docs export doc-123 --export-format pdf -o ./notes.pdf
# PPT: use the dedicated live revision API; preserve all fields when editing.
octo-cli docs create -