NeetoKB CLI

Work with your knowledge base from your terminal, your scripts, and your coding agent. Open source, and it runs on macOS, Linux and Windows.

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
  }
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.

Terminal recording of Claude Code. It reads the knowledge base with the neetokb CLI, writes a script that publishes new or changed Markdown files as articles, adds a GitHub Actions workflow that runs it on every merge to main, and tests the script.
Claude Code builds the docs publishing script with the NeetoKB CLI and adds it to CI.

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.

Bereit, Ihr Wissensdatenbank nützlicher zu machen?

Beginnen Sie noch heute mit NeetoKB.