Install the NeetoKB CLI
macOS with Homebrew:
brew install neetozone/tap/neetokb
macOS or Linux:
curl -fsSL https://neetokb.com/cli/install.sh | sh
Windows (PowerShell):
irm https://neetokb.com/cli/install.ps1 | iex
Then sign in. This opens your browser, and there's no API key to manage:
neetokb login --subdomain your-workspace
To teach your AI coding assistant how to use the CLI, run one of these from your project folder:
neetokb setup claude # Claude Code
neetokb setup cursor # Cursor
neetokb setup codex # Codex
neetokb setup copilot # GitHub Copilot
neetokb setup gemini # Antigravity CLI and Gemini CLI
neetokb setup windsurf # Devin (formerly Windsurf)
Every command supports --json for scripts and --toon, a compact format that uses fewer tokens when an AI assistant reads the output. See the NeetoKB CLI reference for every command.
Automate with the CLI
Why have a CLI when MCP exists? Because some jobs shouldn't need an AI at all. These run on a schedule or in CI, with nothing but the neetokb binary and the tools you already use, such as jq, curl, and your cloud CLI. No model account, no cost per run, and the same result every time.
Publish release notes from CI
When a release ships, publish its notes as an article straight from your pipeline.
neetokb articles create \
--title "What's new in version $VERSION" \
--category "Release notes" \
--html-content "$(pandoc CHANGELOG.md)" \
--state published
Back up every article nightly
page=1
while :; do
out=$(neetokb articles list --state all \
--page "$page" --page-size 100 --json) || exit 1
echo "$out" | jq -r '.data[].id' | while read -r id; do
neetokb articles show "$id" --json | jq -c '.data.article'
done
total=$(echo "$out" | jq '.pagination.total_pages')
[ "$total" -le "$page" ] && break
page=$((page + 1))
done > articles.jsonl
aws s3 cp articles.jsonl \
"s3://your-backup-bucket/neetokb/$(date +%F).jsonl"
Report the most-viewed articles
Every Monday, post the ten most-viewed published articles to your team channel. The first step saves every published article to a file, and the next job reuses it.
page=1
while :; do
out=$(neetokb articles list --state published \
--page "$page" --page-size 100 --json) || exit 1
echo "$out" | jq -c '.data[]'
total=$(echo "$out" | jq '.pagination.total_pages')
[ "$total" -le "$page" ] && break
page=$((page + 1))
done > published.jsonl
jq -s '{text: ([sort_by(-.unique_views_count)[:10][]
| "\(.unique_views_count) \(.title)"] | join("\n"))}' \
published.jsonl \
| curl -s -X POST -H "Content-Type: application/json" \
-d @- "$SLACK_WEBHOOK_URL"
Flag articles nobody has touched in a year
cutoff=$(date -d "1 year ago" +%F) # on macOS: date -v-1y +%F
jq -r --arg cutoff "$cutoff" \
'select(.updated_at < $cutoff) | "\(.updated_at[:10]) \(.title)"' \
published.jsonl
Check that a search still finds the right answer
Run this in CI after content changes, and fail the build if a key question stops finding its article.
neetokb search --search-term "reset password" --json \
| jq -e '.data[] | select(.title == "How to reset your password")' \
> /dev/null \
|| {
echo "Search for 'reset password' no longer finds the article"
exit 1
}
Refresh a private link every week
neetokb articles unlisted-links regenerate enterprise-sso-setup \
--expiration-type seven_days
Add new writers
neetokb team-members create \
--emails oliver@example.com,sam@example.com --role Editor
Let a coding agent build it for you
You don't have to write these scripts yourself. Claude Code, Codex, or another coding agent can write the automation and use the open-source NeetoKB CLI to work with your knowledge base. Run neetokb setup claude (or setup codex, setup cursor) once, then ask:
Our docs live as Markdown files in the docs folder. Write a script that uses the NeetoKB CLI to publish any new or changed file as an article, and run it in our CI on every merge to main.
Using the NeetoKB CLI, write a weekly job that lists draft articles older than 30 days and posts them to our Slack channel.
You get the convenience of a chat, and the result is a script you can read, run, and commit.

When to use the CLI and when to use MCP
Both work with the same articles and categories. Pick based on how the work reaches NeetoKB.
Use MCP when:
- The source material is in your chat. A support thread, release notes, or a pasted document becomes an article with no copying.
- The work needs reading and writing. Finding gaps, rewriting for clarity, and reviewing drafts need someone to read the content.
- You're asking a question. "Do we have an article about Okta?" needs someone to search and explain.
- You don't use a terminal. NeetoKB hosts the server. There's nothing to install.
Use the CLI when:
- No AI should be in the loop. A CI step or cron job runs the CLI with nothing but the binary. No model account, no cost per run.
- Your docs live in a repository. Publish from your build pipeline, the same way every time.
- The output feeds another program. The CLI prints raw JSON for
jq, a report, or your own script. - The run has to be repeatable. A command records exactly what ran and does the same thing every time.
You can also have both. With neetokb setup claude, your AI assistant drives the CLI for you, so a plain-language request still ends in a command you can read and reuse.
Open source
The NeetoKB CLI is open source and available on GitHub. You can inspect its code, see exactly what it sends to NeetoKB, and customize it for your workflows. Written in Go, it runs on macOS, Linux, and Windows.
The NeetoKB CLI is built on neeto-cli-commons, the shared foundation for all Neeto CLI tools. This means the commands and conventions you learn in one Neeto CLI will feel familiar across the others.
Found a bug or have an idea for a new command? Open an issue or submit a pull request on GitHub.
Frequently asked questions
Can I publish NeetoKB articles from my docs repository?
Yes. The NeetoKB CLI lets you create and update articles directly from your terminal or CI pipeline. You can automatically publish Markdown files from your documentation repository whenever changes are merged.
Can I automate NeetoKB without using AI?
Yes. The NeetoKB CLI works directly from your terminal, shell scripts, cron jobs, and CI workflows. You don't need Claude, ChatGPT, or any other AI service to automate tasks.
Is the NeetoKB CLI open source?
Yes. The NeetoKB CLI is open source and available on GitHub. You can inspect the code, modify it, and contribute improvements.