Install the NeetoDesk CLI
macOS with Homebrew:
brew install neetozone/tap/neetodesk
macOS or Linux:
curl -fsSL https://neetodesk.com/cli/install.sh | sh
Windows (PowerShell):
irm https://neetodesk.com/cli/install.ps1 | iex
Next, sign in using your browser. No API key is required:
neetodesk login --subdomain your-workspace
To configure your AI coding assistant to use the CLI, run the appropriate command from your project folder:
neetodesk setup claude # Claude Code
neetodesk setup cursor # Cursor
neetodesk setup codex # Codex
neetodesk setup copilot # GitHub Copilot
neetodesk setup gemini # Antigravity CLI and Gemini CLI
neetodesk setup windsurf # Devin (formerly Windsurf)
Every command supports --json for scripting and --toon for compact, token-efficient output when working with AI assistants. See the NeetoDesk CLI reference for every command.
Automate with the CLI
Why use a CLI when MCP exists? Because some tasks don't need AI. You can run them on a schedule using the NeetoDesk CLI and familiar tools like jq, curl, and your cloud CLI. No AI subscription, no model usage costs, and consistent results every time.
Post the open queue every morning
Save this as ~/open-queue.sh and make it executable:
#!/bin/sh
neetodesk tickets list --status open --page-size 1 --json \
| jq '{text:
"Open tickets this morning: \(.pagination.total_records)"}' \
| curl -s -X POST -H "Content-Type: application/json" \
-d @- "$SLACK_WEBHOOK_URL"
Then add it to your crontab to run every weekday at 9am:
0 9 * * 1-5 ~/open-queue.sh
Alert on unassigned tickets
Every hour, post a list of open tickets that haven't been assigned.
neetodesk tickets list --status open --unassigned \
--page-size 100 --json \
| jq -r '.data[] | "#\(.number) \(.subject)"' \
| while read -r line; do
curl -s -X POST -H "Content-Type: application/json" \
-d "$(jq -n --arg text "Unassigned: $line" '{text: $text}')" \
"$SLACK_WEBHOOK_URL"
done
Create tickets from monitoring alerts
Turn an alert into a ticket straight from your alerting script.
neetodesk tickets create \
--email alerts@example.com \
--subject "Checkout error rate above 5%" \
--description \
"<p>Error rate crossed 5% at $(date -u +%H:%M) UTC.</p>" \
--priority high
Back up every ticket nightly
page=1
while :; do
out=$(neetodesk tickets list \
--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 > tickets.jsonl
aws s3 cp tickets.jsonl \
"s3://your-backup-bucket/neetodesk/$(date +%F).jsonl"
Export tickets to a spreadsheet
page=1
while :; do
out=$(neetodesk tickets list \
--page "$page" --page-size 100 --json) || exit 1
echo "$out" | jq -r '.data[]
| [.number, .subject, .status, .priority,
.customer.email, .assignee.email, .created_at]
| @csv'
total=$(echo "$out" | jq '.pagination.total_pages')
[ "$total" -le "$page" ] && break
page=$((page + 1))
done > tickets.csv
Save the weekly agent report
Every Monday, save last week's agent performance report and compare it with the previous week.
neetodesk reports agents --range-type last_week --json \
> "agent-report-$(date +%F).json"
Close a batch of tickets
After a fix ships, close every ticket you've linked to it.
for ticket in 1042 1047 1051; do
neetodesk tickets update "$ticket" --status closed
done
Set up a new agent
neetodesk team-members create --email priya@example.com \
--role Agent --send-invitation-email
Let a coding agent build it for you
You don't have to write these scripts yourself. Claude Code, Codex, and other coding agents can create automations using the open-source NeetoDesk CLI. Run neetodesk setup claude (or setup codex, setup cursor) once, then ask:
Every weekday at 9 AM, use the NeetoDesk CLI to post a summary of open and unassigned tickets to our Slack channel. Write the script, test it, and set up the cron job.
Using the NeetoDesk CLI, write a script that exports last month's tickets to CSV with the customer and assignee for each one.
You describe what you need in plain language and get a script you can review, run, and commit.

When to use the CLI and when to use MCP
Both work with the same tickets, customers, and reports. The right choice depends on how you want to work.
Use MCP when:
- The context is already in your conversation. Turn a Slack thread or email into a ticket without retyping anything.
- The work needs reading and judgment. Summarizing a ticket, triaging the queue, or drafting a reply means understanding the conversation.
- You need answers from your support data. Ask questions like "Which agent has the fastest response time this month?" and get an explanation.
- You don't use a terminal. NeetoDesk hosts the server. There's nothing to install.
Use the CLI when:
- You don't need AI. Run commands from cron jobs or CI pipelines without an AI model or model usage costs.
- The output feeds another program. The CLI prints raw JSON for
jq, a spreadsheet, a Slack webhook, or your own script. - You're working through thousands of tickets. The CLI pages through everything unattended.
- You need repeatable results. Run the same commands consistently, without relying on an AI model to interpret instructions.
You can also use both. Run neetodesk setup claude to let your AI assistant use the CLI. You can then describe what you need in plain language and get commands you can review and reuse.
Open source
The NeetoDesk CLI is open source. You can inspect the code on GitHub, see how it communicates with NeetoDesk, and customize it for your workflows. It's written in Go and runs on macOS, Linux, and Windows.
The CLI is built on neeto-cli-commons, the shared foundation for all Neeto CLI tools. Commands and conventions stay consistent across Neeto products.
Found a bug or need a new command? Open an issue or submit a pull request.
Frequently asked questions
Can I automate NeetoDesk without using AI?
Yes. The NeetoDesk 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 NeetoDesk CLI open source?
Yes. The NeetoDesk CLI is open source and available on GitHub. You can inspect the code, modify it, and contribute improvements.