Install Dante and every command: the complete guide
Exactly what to click, what to type and what you should see. Every command has a Copy button. You do not have to understand anything first.
The short version
If Node.js is already on your computer, open a terminal, paste this line and press Enter:
npx dante-watch@latestThe first time, npm may ask Ok to proceed? (y). Type y and press Enter. Dante opens and waits. Then say what you want in a normal sentence, for example check my computer. The rest of this page explains each step slowly.
What you need
- A Mac, a Windows PC or a Linux machine.
- Node.js version 18 or higher, a free program that many tools already need. Step 1 shows how to get it or check that you have it.
- A terminal, a program that is already on your computer. Step 2 shows where.
Nothing you type in a terminal can break anything by itself. Dante only reads. Before he changes anything he shows the exact command and waits for your yes.
Step 1: Node.js
First check whether you already have it. Open a terminal (Step 2 shows how) and paste:
node -vv22.12.0
If you see a version number that starts with 18 or higher (like v22.12.0 above), skip to Step 3. If you see command not found or a number below 18, install Node.js:
sudo apt install nodejs npm. Check with node -v. Below 18? Use the installer from nodejs.org or nvm instead.Step 2: open a terminal
Terminal, press Enter.PowerShell, press Enter.A window with a blinking cursor opens. That is all. To paste a copied line: ⌘+V on Mac, right-click or Ctrl+V in PowerShell, Ctrl+Shift+V on most Linux terminals. Then press Enter.
Step 3: start Dante
Copy this line, paste it into the terminal and press Enter:
npx dante-watch@latest@latest makes sure you get the newest version and not an old copy that npx kept from last time.
You may see a question like this. It is normal:
Need to install the following packages:
dante-watch@0.1.26
Ok to proceed? (y)
Type y and press Enter. After a few seconds Dante opens:
___ _ _ _ _____ ___
| \ /_\ | \| ||_ _|| __|
| |) | / _ \ | .` | | | | _|
|___/ /_/ \_\|_|\_| |_| |___|
I am Dante. I walk through hell and bring back the map.
● awake · I watch over localhost. Say help when you need the words.
user ❯
The line starting with user ❯ is where you talk. Type a sentence and press Enter. The version number in the example differs from yours; that is fine.
What happens on the first start
- Language. Dante answers in German, English or Spanish, in the language you write. To fix it:
language en,language deorlanguage es. He remembers. - "May I look around?" He asks before he reads anything. If you answer
yes, he reads the names of your project folders and the hosts in your SSH config (no file contents) and writes them into~/.dante/user.md, a plain text file you can open and edit. If you answerno, he does not look, and everything else still works. - He offers a check. Say
check my computer(or justyeswhen he offers). Each result carries the real line it came from. If he cannot see something, he says unknown, never "safe".
Summon him with one word
With npx you type the long line every time. To start Dante by typing only dante, install him once on your computer:
npm install -g dante-watchFrom then on, open any terminal and type:
dantedante-watch works too. The first line needs permission to install globally; if npm answers with EACCES, do not use sudo: keep using npx dante-watch@latest, or install Node.js through nvm.
npx dante is a different, unrelated package. Do not type it. The one-word command dante only exists after npm install -g dante-watch. To use npx, the name is always npx dante-watch@latest.Update to the newest version
With npx, npx dante-watch@latest already fetches the newest. If you installed him globally:
npm install -g dante-watch@latestCheck which version runs:
dante --versionor npx dante-watch@latest --version. The newest version number is also shown on npm. This updates the program; the knowledge packs are updated separately with update inside Dante (see Packs).
Every command you can say
Type these inside Dante, at the user ❯ line. You can also use normal sentences, in German, English or Spanish: check my computer, what is my system?, who else has a key to my server?, check my server root@host, show me the report. The words below are the plain ones; each language works in each language.
| English | Deutsch | Español | What happens |
|---|---|---|---|
check | prüf | revisa | Look at this machine for known holes. Read only; nothing is changed. |
server <target> | server <ziel> | server <destino> | Check a server you own, e.g. server root@203.0.113.7. Needs an SSH login that already works from your terminal. |
key <path> | key <pfad> | key <ruta> | Tell him which SSH key file to use for server, e.g. key ~/.ssh/id_ed25519. |
fix | fix | fix | After a finding: shows the plan and the exact commands. Nothing runs until you answer yes. |
demo | demo | demo | A harmless practice hole: see the whole loop (finding, plan, yes/no, fix, proof) without any risk. |
map | karte | mapa | What Dante knows about this target: the proof lines so far. |
look around | umschauen | mirar | He gets to know you: reads folder names and SSH hosts on this machine (never file contents) and writes ~/.dante/user.md. |
deep | tief | profundo | Deep run: searches your project folders for keys and secrets in code and configs. |
models | modelle | modelos | Checks AI models and agents on this machine (needs the Hugging Face pack). |
arm | scharf | armar | Schedule him to patrol 4 times a day. Asks for your yes first and shows what it sets up. |
disarm | abschalten | desarmar | Takes the schedule out again. |
watch | wachschutz | vigilancia | The bait watch: lays bait files, mails you if someone uses them. First month free. |
update | aktualisier | actualiza | Fetches the newest rules pack: one call, shown first, after your yes. |
pack <file> | pack <datei> | pack <archivo> | Installs a pack you downloaded, with no network call at all. |
license <token> | lizenz <token> | licencia <token> | Saves the token you get on the shop page. |
buy | kaufen | comprar | Looks at the public pack catalog (the command is shown first) and offers to open the shop page. |
language <de|en|es> | sprache <de|en|es> | idioma <de|en|es> | Sets the language. It is remembered. |
help | hilfe | ayuda | Shows this list inside Dante. |
bye | raus | salir | Puts Dante to sleep. |
Two more ideas worth knowing: report (bericht, informe) shows what he checked and found, writes it as a PDF to ~/.dante/reports/ and offers a copy in your Downloads folder. keys in a sentence ("who still has a key to my server?") lists the SSH keys that give access, never the keys themselves.
Command-line options
These go after the command in the terminal, before Dante opens (useful for scripts and automatic runs):
| Option | What it does |
|---|---|
npx dante-watch@latest | Starts Dante and waits for what you say. |
--ssh user@host [--key /path] | Checks a server you own, then exits. |
--fix | On a finding: show the plan and close it after your yes. |
--demo | The harmless practice loop. |
--patrol | One patrol (what the schedule starts): checks, writes the diary, changes nothing. |
--deep | One deep run over your project folders (what the weekly schedule starts). |
--json | Machine-readable output. |
--sarif | SARIF 2.1.0 output for GitHub Code Scanning. |
-y, --yes | Do not ask back (for automatic runs and cron). |
--version, -v | Which version is running. |
--help, -h | The option list. |
Example: a server check without opening the chat:
npx dante-watch@latest --ssh root@203.0.113.7 --key ~/.ssh/id_ed25519Check a server
Dante checks servers you own. What you need: a login that already works from your terminal, for example ssh root@203.0.113.7 without a password prompt (or with your key). Then, inside Dante:
server root@203.0.113.7key ~/.ssh/id_ed25519Replace the address and the key file with yours. The first line points him at the server; the second says which key to use if your SSH does not pick it by itself. He then checks the SSH settings, readable secrets, files anyone can write, web shells and the PHP version, and every result shows the real line from that server. The server section of Is my server hacked? explains what a read-only check can and cannot prove.
He learns your servers
From version 0.1.25 on, Dante does not just show a list of servers, he remembers them. Check your version with dante --version; update with npm install -g dante-watch@latest (or just use npx dante-watch@latest).
- He looks, read only. When he visits a server he reads which services run, which ports listen, which containers and which websites are there and which database versions are installed. He keeps what he saw with the day, for example "nginx, PostgreSQL 15.5 (seen 2026-10-28)". He says what runs, never what it is for.
- You tell him what it is for. Say it in a normal sentence, and he writes it down as your words:
the second one is the tillder zweite ist die kasseel segundo es la caja(Use any word that fits: db is the database, web is the shop.) Questions ("is the second one the till?") and states ("web is down") are not saved as roles.
- You can ask him. He answers from what he keeps, and shows what is your word and what he saw:
what is the second onewas ist der zweitequé es el segundo- Tell him which key to use. Say
use ~/.ssh/id_ed25519 for the first one(replace the file). Dante tries the key once with a harmless test login that changes nothing on the server, and writes it down as checked only if the login worked. If not, he tells you why and changes nothing: a broken key never replaces one that works. This is the only place where Dante tries something on a server because you said so, and never as a scan. - Follow-up questions work. After he shows a list,
which others?(welche noch?) shows the rest andwhat are these servers?(was sind diese server?) explains what the entries are.
Everything is kept in ~/.dante/user.md, a plain file you can read and edit. Each server there has separate fields for the system, your role word, what he saw (with the date) and whether the key is checked, so the three sources never get mixed.
Let him patrol on a schedule
Say arm. He explains what he would set up (a patrol 4 times a day, a deep run once a week), shows it and waits for your yes. He changes nothing without that. To remove it: say disarm. Each run is written into a diary in ~/.dante/.
Packs, license, shop
The program and all built-in checks are free and work offline. Packs are signed data files with fresh knowledge. The newest costs 4 EUR, older ones 0.80 EUR each, the first one is free, no subscription. How it works:
- Say
buy. Dante shows the one command that looks at the public catalog and, after your yes, offers to open the shop page. - Pay on the shop page. You receive a token.
- Say
license YOUR-TOKENto save it, thenupdateto fetch the pack. Or download a pack and install it without any network call:pack ~/Downloads/pack-4.json.
More on prices and what each pack contains: Install, packs and what they cost.
The bait watch
Say watch. Dante lays fake secret files (a bait .env, mcp.json, .npmrc or AWS file) where attackers look first. If someone uses a bait, you get a mail. First month free, then 1.99 EUR a month. Dante shows the one call that registers him and runs it only after your yes. Details and limits: Bait files that warn you.
What touches the network
Dante makes no network calls on his own. Exactly three things can reach out, and each one starts only after you answer yes to the command Dante prints first: update (fetch the newest pack), buy (look at the public catalog) and the bait watch. Everything else runs on your machine, and the source is open: github.
If something does not work
| What you see | What to do |
|---|---|
command not found: npx | Node.js is not installed, or the terminal was open during the install. Do Step 1, then close the terminal and open a new one. |
| Node version below 18 | Update Node.js: download the LTS version from nodejs.org. |
Ok to proceed? (y) | Normal. Type y, press Enter. |
Windows: npx.ps1 cannot be loaded because running scripts is disabled | Type npx.cmd dante-watch@latest instead. It does the same without changing any setting. |
| An old Dante starts | npx dante-watch@latest with @latest. If you installed globally: npm install -g dante-watch@latest. |
The one-word dante says command not found | Install globally first: npm install -g dante-watch, then open a new terminal. |
EACCES on a global install | No sudo. Use npx dante-watch@latest or install Node.js through nvm. |
server cannot connect | Check ssh root@203.0.113.7 works in the same terminal first. Dante uses the same login. He tells you the reason (wrong key, changed host key, no answer) instead of guessing. |
Remove it
Inside Dante, say disarm first if you set a schedule. Then:
npm uninstall -g dante-watch(only needed if you installed globally) and delete the folder ~/.dante. Dante keeps all his files there, so he is gone.