CLI
noc is the short name. nocturnal is the long one. Both talk to the Nocturnal engine on this machine. Launch the app if nothing is listening.
Process verbs sit at the top so you can type noc ls instead of nocturnal proc ls.
Every engine command is reachable, whether or not it has a short verb below — see commands and cmd. To point an agent or an assistant at Nocturnal, start at Control Nocturnal from an agent.
status
noc status
Daemon health: version, device, uptime, how many projects it can see.
Processes
noc ls
noc start -p <projectId> -c "<command>" [--cwd <path>]
noc stop <id>
noc restart <id>
noc delete <id>
noc logs <id> -n 80
noc save
noc resurrect
noc start-group -p <projectId> -g <groupId>
noc stop-group -p <projectId> -g <groupId>
noc stop-all -p <projectId>
nocturnal proc … is the long form of the same verbs.
git
noc git status --cwd <path>
noc git commit --cwd <path> -m "message"
noc git branch <name> --cwd <path>
noc git checkout <name> --cwd <path>
noc git push [name] --cwd <path>
noc git merge <name> --cwd <path>
noc git pr -o <owner> -r <repo> -t "Title" --head <branch> --base main [--cwd <path>]
noc git publish -p <projectId> [-n <name>] [--public]
publish creates the GitHub repo (private unless --public) and pushes. Same as the Git tab Create repository card. pr pushes the head branch first, then opens the pull request.
Ports
noc ports rotate -p <projectId>
noc ports fix -p <projectId>
noc ports kill --port 3000
rotate moves this project's services onto free ports. fix only remaps clashes. Both prepare a remap you review in the dashboard.
agent
noc agent ls
noc agent new -p <projectId> --prompt "..."
noc agent continue -s <sessionId> --prompt "..."
noc agent loop -s <sessionId> --prompt "..." --times 15
noc agent loop -s <sessionId> --stop
noc agent stop -s <sessionId>
noc agent archive -s <sessionId> [--undo]
noc agent rename -s <sessionId> --title "Name"
noc agent fork -s <sessionId>
project
noc project ls
noc project create -n "My App" [--id my-app]
noc project import --path <folder>
noc project adopt --path <folder>
noc project rescan
noc project rename -p <projectId> -n "New name"
noc project link -p <projectId> -n "Staging" -u https://…
noc project archive -p <projectId> [--restore]
import registers a folder; adopt runs the deep scan that writes .nocturnal/project.json.
issue
noc issue ls -p <projectId> [-s open|closed|all]
noc issue show <number> --project-path <path>
noc issue create --project-path <path> -t "Title" [-b "body"] [-l bug,ui]
noc issue comment <number> --project-path <path> -b "text"
noc issue close <number> --project-path <path> [--reason not_planned]
plan
noc plan ls
noc plan create -p <projectId> --prompt "..." [--no-start]
noc plan build <planId> [--now]
noc plan status <planId> ready
settings
noc settings get
noc settings set agentDefaultModel claude-opus-5
noc settings set mirrorAgents true
topics
noc topics
noc topics projects
noc topics agentsIndex
Everything the dashboard renders, as JSON. Omit the name for all of it.
commands and cmd
noc commands # every command, grouped, with its parameters
noc commands git # only the ones matching "git"
noc commands -g Agents # one group
noc commands --markdown # the full reference as markdown
noc cmd <command> key=value …
noc cmd agent.new projectId=my-app prompt="fix the header"
noc cmd proc.restart id=my-app-web
noc cmd issue.create projectPath=/repo title="Bug" labels=bug,ui
noc cmd agent.loop --json '{"sessionId":"s1","prompt":"tidy","times":3}'
cmd reaches every command the engine has, including any added after the verbs above. Values are converted using the command's declared types, and a missing required parameter is reported before anything is sent.
version
noc version -p <projectPath>
Starts a version cut for that repo.
script
noc script -p <projectId> -s <scriptId>
noc script-stop -p <projectId> -s <scriptId>
One-shot commands (deploy, seed, migrate). They do not restart when they exit.
engine
noc engine start
Starts the local engine if it is not already running.