Athenode CLI reference
The Athenode CLI reference lists every command of athenode, with its synopsis, its options, what it prints and an example, for use in a terminal or in a script. The athenode command comes with the athenode package, which also holds the athenode daemon: the local Athenode server that keeps your projects on your machine and serves the web UI and the Athenode MCP server at http://127.0.0.1:3717. Install Athenode sets both up.
How the Athenode CLI runs
The Athenode CLI requires Node.js 22.16 or later. It runs on macOS, Linux and Windows. Install it with the athenode package:
npm i -g athenode@athenode/cli is an alias package of the same version, so npx @athenode/cli <command> runs any command below without a global install. athenode service install is the exception: it needs the global athenode package. Install one of the two packages globally, not both, because both provide the athenode command. The package also has the command athenode-server, which takes the daemon commands only.
The commands fall into two sets:
| Set | Commands | What they work on |
|---|---|---|
| Client commands | init, sync, use, service, backup, restore, project, logout |
Your repository, the service, the data folder and project archives |
| Daemon commands | start, stop, status, doctor, mcp-config, library, version, help |
The daemon itself |
init, sync, use and project read and write .athenode/config.json in the current directory, the file that records which server and project the directory is bound to. Run them in the directory where you ran init, which is normally the root of your repository.
Output and errors
A command prints its result on standard output. Warnings start with "Warning:" and notes with "Note:", and both go to standard error. A client command that fails prints one line starting with "Error:" on standard error, followed by the reason and, where there is one, the command or option that fixes it. A daemon command used wrongly, such as with an unknown option, prints the problem followed by the list of daemon commands and their options.
Global options
| Option | Description |
|---|---|
-h, --help |
athenode --help, athenode -h and athenode help print the client commands and then, under "Daemon commands:", the daemon commands. athenode <command> --help prints the options of one client command. After a daemon command, --help prints the list of daemon commands. |
-v, --version |
athenode --version, athenode -v and athenode version print the installed version, such as 0.12.1. |
--data-dir <dir> |
The data folder of the daemon the command works with. The default is ATHENODE_DATA_DIR, else ~/.athenode. Every daemon command takes it, and so do the client commands that use the local daemon. |
--port <n> |
The port of the daemon, from 1 to 65535. The default is ATHENODE_PORT, else port in the data folder's config.json, else 3717. Every daemon command takes it, and so do init, service and project. A daemon that is running is found through its data folder, whatever port it uses. |
Commands without a terminal
In a script, in CI or in any run without a terminal, the CLI asks nothing. A command that would need an answer either takes it from an option or from the last install, or stops with an error that names the option.
| Situation | What the CLI does |
|---|---|
init or use would ask about the project, the plugin, the AI tools, .gitignore or the MCP modules |
Takes the stored answer, else the default. Run init without questions lists the defaults. |
| A plan is ready to apply | Stops with "Confirmation required but stdin is not a TTY. Re-run with --yes to apply the plan, or --dry-run to only print it." unless you passed --yes. |
The daemon is not running when init starts |
Stops with a message that names athenode service install and athenode start. It does not offer to install the service. |
| Claude Code has the public Athenode plugin package enabled | Stops before the plan and names --public-plugin replace and --public-plugin keep. |
use would replace a plugin installed with init |
Stops and names --force. |
| A command needs a sign-in to an Athenode Pro server and has none | Fails, because the sign-in opens a browser. Sign in once in a terminal on the same machine, or set ATHENODE_PRO_TOKEN to a personal access token. |
--yes and --dry-run make init and use behave the same way in a terminal. sync, backup, restore, project, logout, service and the daemon commands never ask a question.
Exit codes of the Athenode CLI
| Exit code | Meaning |
|---|---|
0 |
The command succeeded. athenode stop also exits with 0 when no daemon runs. |
1 |
The command failed: an error, an unknown option or a missing argument of a client command, a question left with Ctrl+C, a check of athenode doctor that failed, or a daemon that could not start or stop. |
2 |
A daemon command was used wrongly: an unknown command, an unknown option or an invalid value. athenode service with an unknown action also exits with 2. |
3 |
athenode status: the daemon is not running. athenode service status: the service is not installed, the Node.js binary it runs is missing, or the daemon is not running. |
The new-version notice
After every client command except service, the CLI checks npm for a newer athenode at most once every 24 hours. When there is one, it prints on standard error "A new version of athenode is available:", the new version and the one you run, and the commands that update: npm i -g athenode, then athenode service restart. The check never runs when ATHENODE_NO_UPDATE_CHECK is 1, true or yes, or when the variable CI is set. A failed check prints nothing. Update Athenode describes the update.
Environment variables the CLI reads
| Variable | What it sets |
|---|---|
ATHENODE_DATA_DIR |
The data folder, when --data-dir is not given. |
ATHENODE_PORT |
The daemon's port, when --port is not given. It wins over port in the data folder's config.json. |
ATHENODE_NO_UPDATE_CHECK |
With 1, true or yes, turns off the new-version notice of the CLI and the version check of the daemon. |
CI |
When set to any value, turns off the new-version notice of the CLI. |
ATHENODE_PRO_TOKEN |
A personal access token, created on the Account page of an Athenode Pro server, that the CLI sends to that server in place of its stored sign-in, for example in CI. |
ATHENODE_CREDENTIALS_STORE |
With file, the CLI keeps its Pro sign-ins in ~/.athenode/credentials.json and not in the system's keychain. |
ATHENODE_MASTER_KEY, ATHENODE_MASTER_KEY_FILE |
The master key, or the file that holds it. backup puts the key in effect into the archive, and restore prints a note when one of them overrides the restored key. |
The variables of the daemon itself, with their precedence, are in Configuration. ATHENODE_PRO_TOKEN and ATHENODE_CREDENTIALS_STORE are described with the sign-in in Connect to Athenode Pro.
athenode init and athenode sync: install a plugin
A plugin is a named bundle of what your AI coding tools work with: skills, agents, rules, MCP servers and plugin files. init binds a directory to a project and installs one of its plugins, and sync brings the installed files up to date after the plugin changes. Install a plugin describes the questions, the plan and the files both commands write.
athenode init
athenode init binds the current directory to a project of the local daemon or of an Athenode Pro server, and installs a plugin of that project for the AI tools you choose. athenode i is the same command.
athenode init [--server <url>] [--project <id>] [--name <name>] [--plugin <id-or-slug>]
[--targets <ids>] [--gitignore | --no-gitignore] [--modules <ids>]
[--public-plugin <replace|keep>] [--data-dir <dir>] [--port <n>]
[-y | --yes] [--dry-run]| Option | Description |
|---|---|
--server <url> |
Bind a project of the Athenode Pro server at this http or https address, in place of the local daemon. The CLI signs you in through the browser the first time. Later runs in the directory use the bound server without the option. |
--project <id> |
Bind this project. A project the server does not have stops init. Without it, init uses the bound project; else it asks you to choose a project or create one, and without a terminal it creates one. |
--name <name> |
The name of a project that init creates. The default is the directory's name. |
--plugin <id-or-slug> |
Install this plugin of the project. Without it, init asks when the project has more than one plugin, and otherwise installs the installed plugin, else your project's copy of the standard plugin. |
--targets <ids> |
Install for these AI tools, as a comma-separated list of the ids on the supported AI tools page. The selection is stored. Without it, init asks; without a terminal it uses the stored selection, else claudecode,codexcli. |
--gitignore |
List the installed files in .gitignore without asking. The answer is stored. Excludes --no-gitignore. |
--no-gitignore |
Leave the installed files out of .gitignore without asking, and remove a list an earlier run added. The answer is stored. Excludes --gitignore. |
--modules <ids> |
Give your AI tools the MCP tools of these modules, as a comma-separated list of plugins, specs and gateway. The tools that read the project and the server's status are always included. The choice is stored. Without it, init asks; without a terminal it uses the stored choice, else every module of the server. |
--public-plugin <replace|keep> |
Answer the question about the public Athenode plugin package in Claude Code: replace installs your plugin in its place, keep installs the rules only. Not stored. On an Athenode Pro server, keep is refused. |
--data-dir <dir> |
The data folder of the local daemon. |
--port <n> |
The port of the local daemon. When init installs the service, it stores this port. |
-y, --yes |
Apply the plan without the confirmation and without the other questions. |
--dry-run |
Print the plan and write nothing. No question is asked and no project is created, so an unbound directory needs --project. |
A plugin package is the package that seven AI tools load a plugin from, named after the plugin's slug. The public Athenode plugin package is the standard plugin as published in the Claude Code marketplace.
When the local daemon is not running, init asks "The Athenode daemon is not running. Install it as a service for your user and start it now (athenode service install)?" and waits for the daemon after you confirm. init refuses a server of another major version and prints a warning for one of another minor version.
init prints these results:
| Message | When |
|---|---|
| "Created the project", followed by the project's name and id | init created a project. |
| "Applied. Plugin 'atn' is installed.", with the plugin's slug | The plan was applied. "Still to do in your tools:" follows, with the steps each AI tool needs. |
| "Already up to date (plugin 'atn')." | The installed files match the plugin. |
| "Cancelled. Nothing was changed." | You answered no to "Apply this plan?". |
| "Dry run: nothing was written." | --dry-run was given. |
| "Warning: the installed plugin", followed by both plugins' names | init is about to replace the installed plugin with another one. |
| "Warning: the bound project", followed by its id and "no longer exists" | The bound project was deleted. Choose another project. |
init stops with an error, and changes nothing, in these cases:
| Error | What to do |
|---|---|
| "--server must be a URL such as https://athenode.example.com" | Give the server's full address. |
| "The server at", the address, "has no project", the id | Check the id in the project's settings in the web UI, or run init without --project. |
| "Unknown agent id(s):", followed by "Valid ids:" and the list | Correct --targets. |
| "Unknown module(s) for --modules:", followed by "Modules of this server:" and the list | Correct --modules. |
| "Unknown --public-plugin value:" | Pass replace or keep. |
The project has no copy of the standard plugin, and the message names athenode service restart and --plugin |
Restart the daemon, which gives the project its copy, or name a plugin with --plugin. |
--dry-run in a directory that is bound to no project, because a dry run creates none |
Pass --project, or run init without --dry-run. |
| The server runs another major version | Install the same major version of the CLI and the daemon, then run athenode service restart. |
After the plan, and also after a dry run, init lists on standard error the environment variables that the installed MCP servers refer to and that are not set, under "Missing MCP environment variables (not set in this shell):".
athenode init --project <project-id> --plugin atn --targets claudecode,cursor --yesInstall a plugin explains each question and the plan. Connect to Athenode Pro covers --server and the sign-in.
athenode sync
athenode sync installs the plugin again from the bound server, with the plugin, the AI tools, the MCP modules and the .gitignore answer of the last init, and asks no question.
athenode sync [--dry-run]| Option | Description |
|---|---|
--dry-run |
Print the plan and write nothing. |
sync applies its plan without a confirmation. It prints "Already up to date" with the plugin's slug when nothing differs, and otherwise the plan, "Applied." and "Still to do in your tools:", as init does. On an Athenode Pro server it replaces the public Athenode plugin package in Claude Code and prints a note that says so.
sync stops with an error and tells you to run athenode init when the directory is not bound to a server ("This repository is not bound to an Athenode server: run athenode init."), when nothing has been installed from the bound server, or when the last install came from athenode use. When the directory is bound to the local daemon and the daemon is not running, sync names the commands that start it.
athenode syncSync after the plugin changes says when to run it.
athenode use: install a library entry
The plugin library is the shared catalogue of plugins that projects have published. use installs one of its entries without a project and without an account.
athenode use
athenode use installs the latest version of a library entry whose public display is on into the current directory, for the AI tools you choose.
athenode use <entry-slug> [--targets <ids>] [--gitignore | --no-gitignore]
[--public-plugin <replace|keep>] [--force] [-y | --yes] [--dry-run]| Option | Description |
|---|---|
<entry-slug> (required) |
The slug of the entry, as in its address on lib.athenode.com. |
--targets <ids> |
Install for these AI tools, as for init. The selection is stored. |
--gitignore |
List the installed files in .gitignore without asking. Excludes --no-gitignore. |
--no-gitignore |
Leave the installed files out of .gitignore without asking, and remove a list an earlier run added. Excludes --gitignore. |
--public-plugin <replace|keep> |
Answer the question about the public Athenode plugin package, as for init. Not stored. |
--force |
Replace a plugin that athenode init installed in the directory without asking. |
-y, --yes |
Apply the plan without the confirmation and without the other questions. |
--dry-run |
Print the plan and write nothing. |
use asks no question about a project or MCP modules and needs no daemon. Running it again updates the install to the entry's latest version, or prints "Already up to date (library entry 'web-shop-review', version 3)." with the entry's slug and version. When the directory holds a plugin installed with init, use asks whether to replace it, with no as the suggested answer.
| Error | What to do |
|---|---|
| "Library entry 'web-shop-review' is not available: it does not exist or is no longer shown publicly. Nothing was changed." | Check the slug on the library site. |
| "Too many installs from this network for now (429).", followed by the time to wait | Try again after that time. |
| "Re-run with --force to replace it with the library entry" | Pass --force, or run use in a terminal to be asked. |
| The CLI says that its version is not supported and names the minimum version | Update with npm i -g athenode and run the command again. |
athenode use web-shop-review --targets claudecode,codexcliInstall with the CLI describes use, its limits and what it records.
athenode service: run the daemon as a service
The service runs the daemon as a service of your user, which starts it at every login without administrator rights: a systemd user unit on Linux, a launchd agent on macOS and a Startup entry on Windows. Every action takes --data-dir <dir>, and install takes --port <n>. An unknown action prints "Error: unknown service action" with the list of actions and exits with 2. On another operating system, the command stops and names athenode start. Run the daemon as a service describes the service on each operating system.
athenode service install
athenode service install registers the service and starts the daemon.
athenode service install [--data-dir <dir>] [--port <n>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the daemon the service runs. The service passes it on to the daemon. |
--port <n> |
Store this port as port in the data folder's config.json. The CLI prints "Stored port", the port and the file. |
install refuses to run from a temporary install, such as a run through npx, and from any install outside the global npm folder, and tells you to install the package globally with npm i -g athenode. It writes the service entry again on every run, so run it again after you switch to another Node.js version. It then waits up to 20 seconds and prints "The daemon is running at", followed by the daemon's address. When the daemon does not answer in that time, it tells you to check athenode service status and the logs. On Linux it also prints the command loginctl enable-linger, which keeps the daemon running without a login session, and it stops with a message when the system has no systemd user instance, as in WSL without systemd and in containers. When a daemon of the ssh-gateway package holds the data folder, install stops and asks you to stop that daemon first.
athenode service installathenode service uninstall
athenode service uninstall stops the daemon and removes the service entry.
athenode service uninstall [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the daemon. |
The CLI prints "Uninstalled the service; the daemon no longer starts at login.", or "The service is not installed." when there was none. The data folder is left as it is.
athenode service uninstallathenode service restart
athenode service restart restarts the daemon through the service, for example after an update.
athenode service restart [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the daemon. |
The CLI waits up to 20 seconds and prints "Restarted: the daemon is running at", followed by the address. It stops with "The service is not installed: run athenode service install." when there is no service, and tells you to run athenode service install again when the Node.js binary the service runs no longer exists.
athenode service restartathenode service status
athenode service status shows whether the service is installed, which Node.js binary it runs and whether the daemon is running.
athenode service status [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the daemon. |
The output has a "Service:" line with the service file and its state, a "Node:" line with the path of the Node.js binary, and a "Daemon:" line with the address, the process id and the data folder. The command exits with 0 when all three are in order and with 3 otherwise.
athenode service statusathenode backup and athenode restore: back up the data folder
A backup archive is a copy of the daemon's whole data folder: the database with every project, the master key and the data folder's config.json. Backup and restore describes when to make one and how to restore it on another machine.
athenode backup
athenode backup writes the data folder into one archive that only you can read, with the daemon running or stopped.
athenode backup [--output <path>] [--data-dir <dir>]| Option | Description |
|---|---|
--output <path> |
The archive file, or a folder to write it into. The default is athenode-backup-<version>-<time>.tar.gz in the current directory. |
--data-dir <dir> |
The data folder to back up. |
The CLI prints "Backed up the data folder to", the archive's path and "(readable only by you; it holds the master key: keep it safe).". It stops without writing a file when the data folder holds no database, and when a daemon of the ssh-gateway package holds the data folder.
athenode backup --output ~/backupsathenode restore
athenode restore puts a backup archive back into the data folder.
athenode restore <archive> [--force] [--data-dir <dir>]| Option | Description |
|---|---|
<archive> (required) |
A file written by athenode backup. |
--force |
Move the data folder's database, master key and config.json into backups/pre-restore-<time>/ in the data folder, then restore. |
--data-dir <dir> |
The data folder to restore into. |
The CLI prints "Restored the backup of", the version and the data folder, and the commands that start the daemon. With --force it first prints where it moved the previous files. When ATHENODE_MASTER_KEY or ATHENODE_MASTER_KEY_FILE is set, a note says that it overrides the restored key at the next start.
restore refuses, and changes nothing, while a daemon runs on the data folder, for a backup of a newer version or one with data the installed version does not know, for an archive that does not exist, and for a data folder that holds a database or a master key unless you pass --force.
Warning
Restoring replaces every project of the daemon with the projects in the archive. With --force, the previous data is kept only in backups/pre-restore-<time>/.
athenode restore athenode-backup-0.12.1-20261029080000.tar.gz --forceathenode project: move a project with an archive
A project archive is a file that carries one project, with its specifications, ToDo cards and plugins, to any daemon or Athenode Pro server as a new project. Athenode Pro is the Athenode server a team runs itself, with accounts, project roles and a licence. Both commands work on the server the current directory is bound to, else on the local daemon, and on Athenode Pro they use the CLI's sign-in. Move a project to another server gives the steps, and Projects describes what an archive holds.
athenode project export
athenode project export writes the archive of one project, readable only by you.
athenode project export [--project <id>] [--output <path>] [--data-dir <dir>] [--port <n>]| Option | Description |
|---|---|
--project <id> |
The project to export. The default is the project the current directory is bound to. Outside a bound directory the option is required. |
--output <path> |
The archive file, or a folder to write it into. The default is <name>.athenode-project.tgz in the current directory, after the project's name. |
--data-dir <dir> |
The data folder of the local daemon. |
--port <n> |
The port of the local daemon. |
The CLI prints "Exported the project", the project's name and id, and the archive's path. A project id the server does not have stops the command with "The server has no project", followed by the id.
athenode project export --project <project-id> --output ~/archivesathenode project import
athenode project import creates a new project, with new ids, from a project archive.
athenode project import <file> [--name <name>] [--data-dir <dir>] [--port <n>]| Option | Description |
|---|---|
<file> (required) |
An archive written by athenode project export or by Export project in the web UI. |
--name <name> |
The new project's name. The default is the name in the archive, with " (imported)" added when a project of that name exists. |
--data-dir <dir> |
The data folder of the local daemon. |
--port <n> |
The port of the local daemon. |
The CLI prints "Imported the archive as the project", the new project's name and id, then the number of warnings and each warning as [part] message, and finally the athenode init --project command that binds a repository to the new project. A path with no file stops the command with "No archive at", followed by the path.
athenode project import web-shop.athenode-project.tgz --name "Web shop"athenode logout: sign out of Athenode Pro
The Athenode CLI signs in to an Athenode Pro server through the browser and keeps its sign-in in the system's keychain, or in ~/.athenode/credentials.json where there is none. The local daemon needs no sign-in.
athenode logout
athenode logout forgets the CLI's sign-in to an Athenode Pro server and ends it on the server when the server can be reached.
athenode logout [--server <url>]| Option | Description |
|---|---|
--server <url> |
The Pro server to sign out of. The default is the server the current directory is bound to. |
The CLI prints "Signed out of", or "Not signed in to", followed by the server's address. Outside a directory bound to a Pro server and without --server, it stops with "This repository is bound to no Pro server" and asks you to name the server with --server. When ATHENODE_PRO_TOKEN is set, a note says that the CLI goes on sending the token of that variable.
athenode logout --server https://athenode.example.comConnect to Athenode Pro describes the sign-in.
Daemon commands: run and check the daemon
The daemon commands start, stop and inspect the daemon of one data folder. One daemon runs per data folder. athenode with no command runs start.
athenode start
athenode start runs the daemon in the foreground of the terminal until you stop it with Ctrl+C or athenode stop.
athenode start [--open] [--port <n>] [--data-dir <dir>]| Option | Description |
|---|---|
--open |
Open the web UI in your browser once the daemon runs. When a daemon already runs on the data folder, open its web UI and exit with 0. |
--port <n> |
The port of the web UI and the MCP server. |
--data-dir <dir> |
The data folder. The daemon creates it when it does not exist. |
The daemon prints "Athenode 0.12.1 is running." with its version, then the address of the web UI, the address of the MCP server and the data folder, followed by "Connect an MCP client: athenode mcp-config" and "Stop: Ctrl-C here, or athenode stop". The first start in a data folder also prints "Created a new master key:" with the path of the key file and asks you to back it up separately from your data.
When a daemon already runs on the data folder, start without --open prints its address and exits with 1. A value in the data folder's config.json or in the environment that the daemon cannot use stops it with "Athenode cannot start:" and the reason. On Linux and macOS, a data folder that other users can read prints a warning with the chmod command that fixes it.
athenode start --openRun the daemon in a terminal and Configuration describe the daemon's settings.
athenode stop
athenode stop stops the daemon of the data folder.
athenode stop [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the daemon to stop. |
The CLI prints "Stopping athenode" with the process id and then "athenode stopped". It asks the daemon to shut down and, when the daemon has not stopped after 15 seconds, ends the process. When no daemon runs, it prints "athenode is not running" with the data folder and exits with 0. A process that cannot be ended prints "Could not stop athenode" and exits with 1.
athenode stopathenode status
athenode status tells whether the daemon of the data folder is running.
athenode status [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the daemon. |
A running daemon prints "athenode 0.12.1 is running at http://127.0.0.1:3717", with the process id, then the address of the MCP server with (add ?project=<PROJECT_ID>) and where to copy a project's id, the data folder and the time it started. The command then exits with 0. Otherwise it prints "athenode is not running" with the data folder, or the other program that holds the data folder, and exits with 3.
athenode statusathenode doctor
athenode doctor checks the installation and the data folder, and changes nothing.
athenode doctor [--data-dir <dir>] [--port <n>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder to check. |
--port <n> |
The port to check. |
Each line is one check, marked [ok], [warn], [FAIL] or [info], with its detail:
| Check | What it reports |
|---|---|
| Node.js | The version you run and the versions Athenode requires. |
config.json, Configuration |
Keys the daemon does not know, and values it cannot use. |
| Data folder | Permissions that let other users read the data folder or its files. |
| Master key, Master key check | Where the master key comes from, and whether it matches your data. |
Database, pg_trgm, Migrations |
Whether the database opens, and whether it needs converting at the next start, reported as "pending (applied with a backup at the next start)". A database written by a newer version is a [FAIL]. |
| Port | Whether the daemon answers on its port, or whether the port is free. A port another program uses is a [FAIL] that names --port <n>. |
| ssh-agent, SSH | The parts the SSH gateway needs on your machine. The SSH gateway is the part of Athenode through which your AI agent runs commands and transfers files on your SSH hosts. |
While the daemon runs, doctor skips the database checks and says so under [info]. It ends with "No problems found." and exits with 0, or with the number of failed checks and exit code 1.
athenode doctorathenode mcp-config
athenode mcp-config prints how to add the Athenode MCP server of the daemon to an MCP client by hand, and writes nothing.
athenode mcp-config [--client <name>] [--project <id>] [--port <n>] [--data-dir <dir>]| Option | Description |
|---|---|
--client <name> |
Print the snippet of one client only: claude-code (or claude), cursor, vscode or json. Without it, all four are printed. |
--project <id> |
The project the MCP address names. Without it, the address holds the placeholder <PROJECT_ID>, and the CLI says where to copy a project's id. |
--port <n> |
The port in the address. The default is ATHENODE_PORT, else port in config.json, else the port of the running daemon, else 3717. |
--data-dir <dir> |
The data folder whose config.json and running daemon are read. |
The output holds a claude mcp add --transport http athenode command for Claude Code, a snippet for Cursor (~/.cursor/mcp.json, or .cursor/mcp.json in a project), a snippet for VS Code (.vscode/mcp.json) and a generic snippet for other clients, each with the address http://127.0.0.1:3717/api/mcp?project=<id>, or with the daemon's public URL in place of http://127.0.0.1:3717 when config.json sets one, as requests from other machines and containers describes. athenode init writes these entries for the AI tools it installs for, so mcp-config is for a client that init does not configure.
athenode mcp-config --client cursor --project <project-id>Add the Athenode MCP server to an AI tool by hand describes the address and its parameters.
athenode version and athenode help
athenode version prints the installed version, as --version and -v do. athenode help prints the client commands and the daemon commands, as --help and -h do. Neither takes an option.
athenode versionathenode library: sign the daemon in to Athenode
The daemon signs in to your Athenode account to publish plugins to the plugin library and to manage your entries. The three commands need a running daemon, and each takes --data-dir <dir>. Without a running daemon they print "The daemon is not running", with the data folder, and exit with 1. library-login, library-logout and library-status are aliases of the three commands.
athenode library login
athenode library login signs the daemon in to your Athenode account.
athenode library login [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the running daemon. |
The CLI prints "Open", an address, "and enter the code", the code and "to sign this daemon in to Athenode.". It waits until you confirm the code on that page, then prints "Signed in to Athenode as" with your name. When the code expires or the sign-in is refused, it prints the reason and exits with 1.
athenode library loginathenode library logout
athenode library logout signs the daemon out of your Athenode account and prints "Signed out of Athenode.".
athenode library logout [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the running daemon. |
athenode library logoutathenode library status
athenode library status prints the account the daemon publishes with, "Signed in to Athenode as" with the account's name, or "Not signed in to Athenode.".
athenode library status [--data-dir <dir>]| Option | Description |
|---|---|
--data-dir <dir> |
The data folder of the running daemon. |
athenode library statusThe Athenode account panel of the Plugin library page does the same in the web UI, as Sign the daemon in to your Athenode account describes. On Athenode Pro, each user signs in in that panel, and the library commands do not apply.
Commands of Athenode Pro
An Athenode Pro server has its own command, athenode-pro, from the @athenode/athenode-pro package. Its commands are documented with the tasks they serve: start, stop, status and doctor in Install Athenode Pro, license activate, license import and license status in The Pro licence, recover in Users and sign-in, mcp-config in Connect to Athenode Pro, and the options and variables in Configure Athenode Pro.