Skip to content

dreadnode/cli

Repository files navigation

Logo

Dreadnode command line interface


Installing

From PyPi

pip install dreadnode-cli

To upgrade the CLI to the latest version, run:

pip install --upgrade dreadnode-cli

To uninstall the CLI, run:

pip uninstall dreadnode-cli

Important

The data folder with authentication credentials is located at ~/.dreadnode and will not be automatically removed when uninstalling the CLI.

From Docker Hub

To pull the latest CLI image from Docker Hub, run:

docker pull dreadnode/dreadnode-cli

Whenever using the CLI from a docker container, remember to share your user configuration, the network from the host and mount the docker socket:

docker run -it \
    --net=host \
    -v/var/run/docker.sock:/var/run/docker.sock \
    -v$HOME/.dreadnode:/root/.dreadnode \
    dreadnode --help

Optionally, you can create a bash alias like so:

alias dreadnode='docker run -it --net=host -v/var/run/docker.sock:/var/run/docker.sock -v$HOME/.dreadnode:/root/.dreadnode dreadnode'

Usage

Note

For a full list of commands and options, see the CLI.md file.

Help menu:

dreadnode --help

Show version:

dreadnode version

Authenticate:

dreadnode login

Authenticate to a specific server:

dreadnode login --server https://dev-crucible.dreadnode.io

Manage server profiles with:

# list all profiles
dreadnode profile list

# switch to a named profile
dreadnode profile switch <profile_name>

# remove a profile
dreadnode profile forget <profile_name>

Interact with the Crucible challenges:

# list all challenges
dreadnode challenge list

# download an artifact
dreadnode challenge artifact <challenge_id> <artifact_name> -o <output_path>

# submit a flag
dreadnode challenge submit-flag <challenge_id> 'gAAAAA...'

Interact with Strike agents:

# list all strikes
dreadnode agent strikes

# list all available templates with their descriptions
dreadnode agent templates show

# install a template pack from a github repository
dreadnode agent templates install dreadnode/basic-templates

# initialize a new agent in the current directory
dreadnode agent init -t <template_name> <strike_id> 

# initialize a new agent in the specified directory
dreadnode agent init -t <template_name> <strike_id> --dir <directory>

# initialize a new agent using a custom template from a github repository
dreadnode agent init -s username/repository <strike_id>

# initialize a new agent using a custom template from a github branch/tag
dreadnode agent init -s username/repository@custom-feature <strike_id>

# initialize a new agent using a custom template from a ZIP archive URL
dreadnode agent init -s https://example.com/template-archive.zip <strike_id>

# push a new version of the agent
dreadnode agent push

# start a new run using the latest agent version.
dreadnode agent deploy

# show the latest run of the currently active agent
dreadnode agent latest

# list all available links
dreadnode agent links

# list available models for the current strike
dreadnode agent models

# list all runs for the currently active agent  
dreadnode agent runs

# show the status of the currently active agent
dreadnode agent show

# list historical versions of this agent
dreadnode agent versions

# switch/link to a different agent
dreadnode agent switch <agent_id>

Development

Poetry Shell

This project uses the Poetry package management tool, to install from source run the following commands:

git clone https://github.com/dreadnode/cli.git
cd cli
poetry install

You can then enter the project's virtual environment:

poetry shell

Building the Docker Image

Alternatively, you can build a docker image and run the CLI from a container:

git clone https://github.com/dreadnode/cli.git
cd cli
docker build -t dreadnode .