Carbon CLI
Carbon CLI Reference
Synopsis
Infrastructure automation for offensive operations.
Purpose
Carbon’s primary purpose is to provide a consistent execution environment to
facilitate offensive security assessments.
Dependencies
- Packer to build images.
- Terraform to provision infrastructure.
- Golang project structure.
Supported Providers
- AWS
- DigitalOcean
- Multipass (Local)
- QEMU (Local)
- VirtualBox (Local)
- vSphere (in progress)
There are plans to bring support to the following:
- GCP
- Azure
- VMware (Local)
- QEMU (Remote)
Options
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-h, --help help for carbon
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
1 - Completion
Generate completion script
Synopsis
To load completions:
Bash:
source <(carbon completion bash)
# To load completions for each session, execute once:
# Linux:
carbon completion bash > /etc/bash_completion.d/carbon
# macOS:
carbon completion bash > /usr/local/etc/bash_completion.d/carbon
Zsh:
# If shell completion is not already enabled in your environment,
# you will need to enable it. You can execute the following once:
echo "autoload -U compinit; compinit" >> ~/.zshrc
# To load completions for each session, execute once:
carbon completion zsh > "${fpath[1]}/_carbon"
# You will need to start a new shell for this setup to take effect.
fish:
carbon completion fish | source
# To load completions for each session, execute once:
carbon completion fish > ~/.config/fish/completions/carbon.fish
PowerShell:
carbon completion powershell | Out-String | Invoke-Expression
# To load completions for every new session, run:
carbon completion powershell > carbon.ps1
# and source this file from your PowerShell profile.
carbon completion [bash|zsh|fish|powershell]
Options
-h, --help help for completion
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
- carbon - Carbon - Infrastructure automation for offensive operations.
Auto generated by spf13/cobra on 25-Mar-2025
2 - Config
View and manage configuration values.
Synopsis
View and manage configuration values.
Carbon loads configuration files from your home directory, then merges it with
a configuration file in the current directory (if it exists). This should allow
you the flexibility you need.
Configuration keys
- carbon.dir.projects
- carbon.dir.instance
- carbon.dir.deployments
- carbon.dir.packer
- carbon.dir.images
- carbon.dir.terraform
- carbon.providers.vsphere.enabled
- carbon.providers.vsphere.auto_discover
- carbon.providers.vsphere.profiles.default.enabled
- carbon.providers.vsphere.profiles.default.username
- carbon.providers.vsphere.profiles.default.password
- carbon.providers.vsphere.profiles.default.password_command
- carbon.providers.vsphere.profiles.default.use_1pass_cli
- carbon.providers.vsphere.profiles.default.url
- carbon.providers.vsphere.profiles.default.environments
- carbon.providers.vsphere
- carbon.providers.aws.enabled
- carbon.providers.aws.auto_discover
- carbon.providers.aws.profiles.default.enabled
- carbon.providers.aws.profiles.default.username
- carbon.providers.aws.profiles.default.password
- carbon.providers.aws.profiles.default.password_command
- carbon.providers.aws.profiles.default.use_1pass_cli
- carbon.providers.aws.profiles.default.url
- carbon.providers.aws.profiles.default.environments
- carbon.providers.aws
- carbon.providers.qemu.enabled
- carbon.providers.qemu.auto_discover
- carbon.providers.qemu.profiles.default.enabled
- carbon.providers.qemu.profiles.default.username
- carbon.providers.qemu.profiles.default.password
- carbon.providers.qemu.profiles.default.password_command
- carbon.providers.qemu.profiles.default.use_1pass_cli
- carbon.providers.qemu.profiles.default.url
- carbon.providers.qemu.profiles.default.environments
- carbon.providers.qemu
- carbon.providers.virtualbox.enabled
- carbon.providers.virtualbox.auto_discover
- carbon.providers.virtualbox.profiles.default.enabled
- carbon.providers.virtualbox.profiles.default.username
- carbon.providers.virtualbox.profiles.default.password
- carbon.providers.virtualbox.profiles.default.password_command
- carbon.providers.virtualbox.profiles.default.use_1pass_cli
- carbon.providers.virtualbox.profiles.default.url
- carbon.providers.virtualbox.profiles.default.environments
- carbon.providers.virtualbox
- carbon.providers.multipass.enabled
- carbon.providers.multipass.auto_discover
- carbon.providers.multipass.profiles.default.enabled
- carbon.providers.multipass.profiles.default.username
- carbon.providers.multipass.profiles.default.password
- carbon.providers.multipass.profiles.default.password_command
- carbon.providers.multipass.profiles.default.use_1pass_cli
- carbon.providers.multipass.profiles.default.url
- carbon.providers.multipass.profiles.default.environments
- carbon.providers.multipass
- carbon.providers.digitalocean.enabled
- carbon.providers.digitalocean.auto_discover
- carbon.providers.digitalocean.profiles.default.enabled
- carbon.providers.digitalocean.profiles.default.username
- carbon.providers.digitalocean.profiles.default.password
- carbon.providers.digitalocean.profiles.default.password_command
- carbon.providers.digitalocean.profiles.default.use_1pass_cli
- carbon.providers.digitalocean.profiles.default.url
- carbon.providers.digitalocean.profiles.default.environments
- carbon.providers.digitalocean
Examples
# Configure digitalocean credentials
carbon config carbon.providers.digitalocean.profiles.default.use_1pass_cli true
carbon config carbon.providers.digitalocean.profiles.default.password "op://Private/some path/api_key"
# Set a default project directory
carbon config carbon.dir.instance ~/my/path/haxors
Options
-h, --help help for config
-r, --remove-reset remove key from the config or reset to default
-s, --save save the current configuration
-k, --sub-keys display only the sub-keys
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
- carbon - Carbon - Infrastructure automation for offensive operations.
Auto generated by spf13/cobra on 25-Mar-2025
3 - Image
View or manage images and image builds.
Synopsis
View or manage images and image builds.
Options
-h, --help help for image
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
4 - Image Bootstrap
Create packer files and other image build configs.
Synopsis
Create packer files and other image build configs.
carbon image bootstrap [flags]
Examples
carbon image bootstrap -n operator-desktop-aws -S aws -t ubuntu-desktop
Options
-h, --help help for bootstrap
-n, --name string Name of image build
-S, --service string Service provider (aws, virtualbox, qemu, multipass)
-t, --template string Template to use (default "ubuntu-base")
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
5 - Image Build
Build an image.
Synopsis
build an image.
carbon image build [flags]
Examples
carbon image build -S aws -n operator-desktop-aws
Options
-h, --help help for build
-n, --name string Name of image build
-a, --provisioner string Name of provisioner to use (default "cloud-init")
-S, --service string Service provider (aws, virtualbox, qemu, multipass)
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
6 - Image Destroy
Delete images.
Synopsis
Delete images.
carbon image destroy [flags]
Examples
carbon image destroy -i qemu/some-image-123123123
Options
-h, --help help for destroy
-i, --image-id string ID of image to delete
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
7 - Image List
list images
Synopsis
list images and image builds.
carbon image list [flags]
Examples
# List all images
carbon image list
#list image builds
carbon image list -b
Options
-b, --builds List build configs
-h, --help help for list
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
8 - Project
Manage and interact with projects
Synopsis
Manage projects.
Projects are directories with terraform code to manage resources for the project.
Options
-h, --help help for project
-p, --project string Name of the project.
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
9 - Project Add-Machine
Add a new machine to a project
Synopsis
Add a new machine to the project.
carbon project add-machine [flags]
Examples
carbon project add-machine -p example-qemu-carbon -n modlishka -P qemu -i carbon-ubuntu-desktop-20241008201758
Options
-h, --help help for add-machine
-i, --image string Name of the image to use.
-n, --name string Name of the VM to add.
-N, --no-apply Do not run terraform apply.
-S, --service string Service provider (aws, virtualbox, qemu, multipass)
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
-p, --project string Name of the project.
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
10 - Project Apply
Run terraform apply
Synopsis
Apply terraform. No need to change dirs.
carbon project apply [flags]
Examples
carbon project apply -p project-name
Options
-h, --help help for apply
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
-p, --project string Name of the project.
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
11 - Project List
Manage and interact with projects
Synopsis
List projects.
carbon project list [flags]
Examples
Options
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
-p, --project string Name of the project.
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
12 - Project New
Create a new project.
Synopsis
Create a new project.
carbon project new [flags]
Examples
carbon project new -n project-name
Options
-f, --force Force over writing files.
-h, --help help for new
-n, --name string Name of the new project.
-S, --service string Service provider (aws, virtualbox, qemu, multipass)
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
-p, --project string Name of the project.
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
13 - Update
Update carbon to latest version
Synopsis
Update or check for updates.
The default update method is to download the latest release from GitHub.
Examples
# Update to latest version
carbon update
# Use go install to update
carbon update -g
# Download from a specific URL
# Not sure why anyone else would need this. I use it for quickly testing builds on different machines.
carbon update -u http://10.0.0.2:8000/dist/carbon_darwin_arm64/carbon
# This is typically used after I run the following:
# goreleaser release --clean --snapshot
# python -m http.server
Options
-C, --check Check for update
-f, --force Force update, even if release is not newer
-g, --go-install Use go install instead of downloading release from GitHub
-h, --help help for update
-u, --url string URL to download from (force implies)
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
- carbon - Carbon - Infrastructure automation for offensive operations.
Auto generated by spf13/cobra on 25-Mar-2025
14 - Vm
Manage and interact with VMs.
Synopsis
Manage and interact with VMs.
Options
-h, --help help for vm
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
-j, --json Output in JSON
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
15 - Vm Destroy
destroy VM
Synopsis
Destroy a VM.
carbon vm destroy [flags]
Examples
carbon vm destroy -n vm-name
Options
-h, --help help for destroy
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
16 - Vm Launch
launch a new vm from an image
Synopsis
launch a new vm from an image.
Examples
carbon vm launch -I qemu/carbon-ubuntu-desktop-20241007212910 -n vm-name
Options
-h, --help help for launch
-I, --image-id string ID of image
-n, --name string Name of new VM
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
17 - Vm List
List VMs across all available providers, profiles, and environments.
Synopsis
List VMs across all available providers, profiles, and environments.
Examples
# list all virtual machines
carbon vm list
# You can also supply a name search, this wil return VMs with names containing 'vm-'
carbon vm list -n vm-
Options
-h, --help help for list
-p, --private-ip Print private IP address
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
18 - Vm Rdp
RDP to a VM
Synopsis
RDP to a VM.
This will:
Examples
carbon vnc rdp -n vm-name
Options
-h, --help help for rdp
-p, --private-ip Use private IP address
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
19 - Vm Restart
Restart VM(s)
Synopsis
Restart VM(s).
carbon vm restart [flags]
Examples
carbon vm restart -n vm-name
Options
-h, --help help for restart
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
20 - Vm Ssh
SSH to a VM
Synopsis
SSH to a VM.
Carbon will call exec on the ssh binary. This means the SSH process takes
over the carbon process. So SSH agents should just work.
Examples
# SSH to a VM
carbon vm ssh -n vm-name
# execute one off command on a VM
carbon vm ssh -n vm-name -- cat /etc/passwd
# proxy through a bastion
carbon vm ssh -n vm-name -- -oProxyCommand="carbon vm ssh -n bastion -- -W %h:%p"
# forward ssh agent
carbon vm ssh -n vm-name -- -A
# open socks proxy
carbon vm ssh -n vm-name -- -D 1080
Options
-h, --help help for ssh
-p, --private-ip Use private IP address
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
21 - Vm Start
Start VMs
Synopsis
start VMs.
Examples
carbon vm start -n vm-name
Options
-h, --help help for start
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
22 - Vm Stop
Stop VM(s)
Synopsis
Stop VM(s).
By default, carbon will attempt to hibernate the machine rather than power it off.
Examples
carbon vm stop -n vm-name
Options
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025
23 - Vm Vnc
VNC to a VM
Synopsis
VNC to a VM.
This will:
- SSH to the target VM.
- Check to see if vncserver is running.
- If not, start vncserver on the remote machine
- If a vnc passwd file does not exist one will be created
- Copy the password file to the local machine
- Setup a tunnel to access vnc
- start vncviewer
Examples
Options
-h, --help help for vnc
-k, --kill-vnc Kill VNC before starting
-p, --private-ip Use private IP address
Options inherited from parent commands
--config string config file (default is $HOME/carbon.yaml)
--debug Debug mode
--host strings Hostname or IP Address.
-i, --id string ID of machine to start.
-j, --json Output in JSON
-n, --name string Name of the VM.
-u, --user string SSH Username. (default "ubuntu")
SEE ALSO
Auto generated by spf13/cobra on 25-Mar-2025