Most important daily commands
| Flow | Commands |
|---|---|
| First setup | crc version โ crc setup โ crc start -p ~/Downloads/pull-secret.txt |
| Start work | crc start โ crc status โ crc console |
Use oc | eval "$(crc oc-env)" โ crc console --credentials โ oc login ... |
| Stop work | crc stop |
| Reset cluster | crc stop โ crc delete --force โ crc cleanup โ crc setup โ crc start -p ~/Downloads/pull-secret.txt |
| Change CPU/RAM | crc stop โ crc delete โ crc config set cpus 6 โ crc config set memory 14336 โ crc start |
| Switch preset | crc delete โ crc config set preset okd โ crc setup โ crc start |
| Command | Purpose | When to Use | Common Example | Expected Output / Result |
|---|---|---|---|---|
crc | Base CRC command | To see general CLI help or available commands | crc | Shows CRC help and available commands |
crc help | Show help | When you need command syntax | crc help start | Displays help for the selected command |
crc version | Show CRC and bundled OpenShift/MicroShift versions | First command to run after installation or upgrade | crc version | Shows CRC version, OpenShift version, MicroShift version |
crc setup | Prepare local virtualization and networking | First-time setup, after upgrade, or after cleanup | crc setup | Your system is correctly setup for using CRC. |
crc setup --check-only | Validate setup only | To check prerequisites without changing the system | crc setup --check-only | Reports whether system is ready |
crc start | Start CRC instance | Start local OpenShift / OKD / MicroShift | crc start -p ~/Downloads/pull-secret.txt | Starts cluster and prints console URL and credentials |
crc start -p | Start with pull secret file | OpenShift preset startup | crc start -p ~/Downloads/pull-secret.txt | Starts OpenShift using pull secret |
crc start --pull-secret-file | Long form of pull secret option | Same as -p | crc start --pull-secret-file ~/Downloads/pull-secret.txt | Starts OpenShift using pull secret |
crc start -c | Start with custom CPU count | When default CPU is not enough | crc start -c 6 | Starts CRC with 6 CPUs |
crc start -m | Start with custom memory | For heavier demos, monitoring, operators | crc start -m 14336 | Starts CRC with 14 GiB memory |
crc start -d | Start with custom disk size | When more disk space is needed | crc start -d 80 | Starts CRC with 80 GiB disk |
crc status | Show CRC status | Check whether VM and cluster are running | crc status | Shows VM status, OpenShift status, RAM, disk, cache |
crc status --watch | Watch status continuously | During startup or troubleshooting | crc status --watch | Continuously refreshes CRC resource/status view |
crc stop | Stop CRC instance | End daily work while keeping VM data | crc stop | Stopped the instance |
crc stop --force | Force stop CRC | If normal stop hangs or fails | crc stop --force | Forcibly stopped the instance |
crc delete | Delete CRC instance | Reset cluster, switch preset, reclaim disk | crc delete | Prompts for confirmation, then deletes instance |
crc delete --force | Delete without prompt | Automation or forced cleanup | crc delete --force | Deletes instance without confirmation |
crc delete --clear-cache | Delete instance and cache | Full cleanup including cached bundle | crc delete --clear-cache --force | Deletes VM and cached CRC files |
crc cleanup | Undo host setup changes | After deleting CRC or fixing broken networking | crc cleanup | Cleanup finished |
crc console | Open web console | Access OpenShift web UI | crc console | Opens console in browser |
crc console --url | Print console URL | When you only need the URL | crc console --url | Prints console URL |
crc console --credentials | Print login credentials | To log in with oc or web console | crc console --credentials | Shows developer and kubeadmin login commands |
crc dashboard | Alias for crc console | Same as console | crc dashboard | Opens OpenShift console |
crc oc-env | Print shell config for embedded oc | To add CRCโs oc binary to PATH | crc oc-env | Prints export/eval instructions |
eval "$(crc oc-env)" | Apply oc environment | Before running oc commands | eval "$(crc oc-env)" | Current shell can use CRCโs oc |
crc generate-kubeconfig | Print kubeconfig | To use CRC cluster with oc/Kubernetes tools | crc generate-kubeconfig > crc-kubeconfig | Writes kubeconfig content |
crc ip | Print CRC VM IP address | Networking/debugging | crc ip | Prints VM IP, for example 192.168.130.11 |
crc podman-env | Print Podman remote environment | Legacy Podman access to CRC VM | crc podman-env | Prints Podman environment variables |
crc podman-env --root | Rootful Podman environment | If rootful Podman socket is needed | crc podman-env --root | Prints rootful Podman environment |
crc config | Config command group | View/change CRC settings | crc config --help | Shows config subcommands |
crc config view | Show changed config values | Review active custom settings | crc config view | Lists non-default config values |
crc config view --show-secrets | Show config including secrets | Only when you intentionally need secret values | crc config view --show-secrets | Shows secret config values too |
crc config get | Get one config value | Check a specific setting | crc config get memory | Shows configured value or default notice |
crc config set | Set config value | Before setup/start or before recreating instance | crc config set memory 14336 | Saves config value |
crc config unset | Remove config override | Return setting to default | crc config unset memory | Removes custom value |
crc bundle | Bundle command group | Advanced bundle operations | crc bundle --help | Shows bundle help |
crc bundle generate | Generate custom bundle | Advanced/custom CRC bundle creation | crc bundle generate | Generates bundle from running instance |
crc bundle generate --force-stop | Force stop during bundle generation | If bundle generation needs forced VM stop | crc bundle generate --force-stop | Stops VM as needed and generates bundle |
crc daemon | Hidden/internal daemon command | Debugging CRC internals only | crc daemon | Starts CRC daemon process |
crc daemon --watchdog | Daemon watchdog mode | Internal/debug only | crc daemon --watchdog | Runs daemon with watchdog behavior |
Below is a CRC / OpenShift Local command-line tutorial based on the latest CRC docs and v2.61.0 source I found. Iโm being careful here: no invented flags, no old crc setup --pull-secret, and no fake subcommands.
As of June 23, 2026, the latest upstream CRC release I found is v2.61.0 / 2.61.0-4.21.14, with OpenShift 4.21.14 and OKD 4.21.0-okd-scos.8. (GitHub)
Your local help output also matches this generation because your bundle default shows crc_vfkit_4.21.14_arm64.crcbundle.
Common config keys summary
| Config Key | Purpose | Example |
|---|---|---|
preset | Choose runtime: OpenShift, OKD, MicroShift | crc config set preset openshift |
cpus | Set CPU count | crc config set cpus 6 |
memory | Set memory in MiB | crc config set memory 14336 |
disk-size | Set disk size in GiB | crc config set disk-size 80 |
pull-secret-file | Save pull secret path | crc config set pull-secret-file ~/Downloads/pull-secret.txt |
nameserver | Set DNS resolver | crc config set nameserver 8.8.8.8 |
disable-update-check | Disable CRC update check | crc config set disable-update-check true |
consent-telemetry | Enable/disable telemetry | crc config set consent-telemetry no |
developer-password | Set developer user password | crc config set developer-password developer |
kubeadmin-password | Set kubeadmin password | crc config set kubeadmin-password 'StrongPassword' |
http-proxy | Configure HTTP proxy | crc config set http-proxy http://proxy.example.com:8080 |
https-proxy | Configure HTTPS proxy | crc config set https-proxy http://proxy.example.com:8080 |
no-proxy | Configure proxy bypass list | crc config set no-proxy 127.0.0.1,localhost,.testing |
proxy-ca-file | Configure proxy CA certificate | crc config set proxy-ca-file /path/to/ca.crt |
host-network-access | Allow CRC to access host services | crc config set host-network-access true |
enable-cluster-monitoring | Enable OpenShift monitoring stack | crc config set enable-cluster-monitoring true |
ingress-http-port | Change HTTP ingress port | crc config set ingress-http-port 8080 |
ingress-https-port | Change HTTPS ingress port | crc config set ingress-https-port 8443 |
enable-shared-dirs | Enable shared directories | crc config set enable-shared-dirs true |
persistent-volume-size | Set default persistent volume size | crc config set persistent-volume-size 20g |
modify-hosts-file | Let CRC modify hosts file | crc config set modify-hosts-file true |
CRC is the CLI behind Red Hat OpenShift Local, which runs a local single-node OpenShift / OKD / MicroShift development instance. It is for local development and testing, not production. (crc.dev)
1. Commands verified from CRC v2.61.0
The v2.61.0 source tree contains these top-level command files: cleanup, console, daemon, delete, generate-kubeconfig, ip, oc-env, podman-env, setup, start, status, stop, and version, plus the config and bundle command groups. (GitHub)
The config group contains exactly these subcommands in v2.61.0:
crc config get
crc config set
crc config unset
crc config view
Code language: JavaScript (javascript)
(GitHub)
The bundle group contains exactly this visible subcommand in v2.61.0:
crc bundle generate
(GitHub)
So the full verified command list is:
crc
crc help
crc version
crc setup
crc start
crc status
crc stop
crc delete
crc cleanup
crc console
crc dashboard
crc oc-env
crc generate-kubeconfig
crc ip
crc podman-env
crc config
crc config get
crc config set
crc config unset
crc config view
crc bundle
crc bundle generate
crc daemon
Code language: JavaScript (javascript)
Important: crc dashboard is an alias for crc console, and crc daemon is marked hidden/internal in the source. (GitHub)
2. Golden CRC lifecycle flow
Use this as the normal flow:
crc version
crc config view
crc setup
crc start -p ~/Downloads/pull-secret.txt
crc status
crc oc-env
eval "$(crc oc-env)"
crc console --credentials
oc login -u developer -p <developer-password> https://api.crc.testing:6443
crc console
Code language: JavaScript (javascript)
For daily use after first setup:
crc start
crc status
crc console
crc stop
Code language: JavaScript (javascript)
For a clean reset:
crc stop
crc delete
crc cleanup
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
The official troubleshooting flow also uses crc stop, crc delete, crc cleanup, crc setup, and crc start for a clean state. (crc.dev)
3. Pull secret correction
Your earlier command failed because this is wrong in current CRC:
crc setup --pull-secret ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Use one of these instead:
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
or:
crc start --pull-secret-file ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
The v2.61.0 source defines -p / --pull-secret-file on crc start, not on crc setup. (GitHub)
You can also save it into config:
crc config set pull-secret-file ~/Downloads/pull-secret.txt
crc start
Code language: JavaScript (javascript)
The pull-secret-file configurable property exists in v2.61.0 settings. (GitHub)
4. Command reference and tutorial
4.1 crc version
Use case
Use this first to confirm your CRC binary, embedded OpenShift version, and MicroShift version.
Command
crc version
Expected output shape
CRC version: 2.61.0+<commit>
OpenShift version: 4.21.14
MicroShift version: <microshift-version>
Code language: CSS (css)
The v2.61.0 version command prints CRC version, OpenShift version, and MicroShift version. (GitHub)
JSON output
crc version -o json
Expected shape:
{
"version": "2.61.0",
"commit": "<commit>",
"openshiftVersion": "4.21.14",
"microshiftVersion": "<microshift-version>"
}
Code language: JSON / JSON with Comments (json)
-o/--output json is the only supported structured output format for commands that expose the output flag. (GitHub)
4.2 crc setup
Use case
Run once after installing CRC, after changing some host-level settings, or after upgrading CRC. It prepares local virtualization and networking infrastructure.
The official docs say crc setup sets up the host machine and creates ~/.crc if needed. (crc.dev)
Basic command
crc setup
Expected successful output
Your system is correctly setup for using CRC.
Use 'crc start' to start the instance
Code language: JavaScript (javascript)
That exact success message comes from the v2.61.0 source. (GitHub)
Useful flags
From your installed help and v2.61.0 source:
crc setup --check-only
crc setup --show-progressbars
crc setup --enable-experimental-features
crc setup -b /path/to/bundle.crcbundle
crc setup --bundle /path/to/bundle.crcbundle
crc setup -o json
When to use each
Use crc setup for normal setup.
Use this to only validate prerequisites without changing your system:
crc setup --check-only
Use this if you want visible progress bars for download/extraction:
crc setup --show-progressbars
Use -b only when you intentionally want to use a specific local, HTTP(S), or Docker bundle URI. Your current help output shows the default bundle path under ~/.crc/cache.
Do not use
crc setup --pull-secret ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
That flag is not valid on setup.
4.3 crc start
Use case
Creates/starts the CRC VM and starts the selected runtime: OpenShift, OKD, or MicroShift. The official docs describe crc start as starting the CRC instance and configured container runtime. (crc.dev)
Basic OpenShift start
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
or:
crc start --pull-secret-file ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Interactive start
crc start
If no pull secret is configured or supplied, CRC can ask for it during startup. The getting-started docs show crc start as the command and explain that OpenShift startup asks for the pull secret. (crc.dev)
Start with custom resources
crc start -c 6 -m 14336 -d 80 -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Meaning:
-c / --cpus CPU cores
-m / --memory memory in MiB
-d / --disk-size disk size in GiB
-p pull secret file
The v2.61.0 source defines --cpus, --memory, --disk-size, --nameserver, --bundle, --pull-secret-file, and --disable-update-check on crc start. (GitHub)
Full practical examples
Start with specific DNS resolver:
crc start -n 8.8.8.8 -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Start without checking for new CRC versions:
crc start --disable-update-check -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Start using a specific bundle:
crc start -b ~/.crc/cache/crc_vfkit_4.21.14_arm64.crcbundle -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Expected successful OpenShift output
Started the OpenShift cluster.
The server is accessible via web console at:
https://console-openshift-console.apps-crc.testing
Log in as administrator:
Username: kubeadmin
Password: <generated-or-configured-password>
Log in as user:
Username: developer
Password: <developer-password>
Use the 'oc' command line interface:
$ eval "$(crc oc-env)"
$ oc login -u developer https://api.crc.testing:6443
Code language: PHP (php)
That output shape is from the v2.61.0 start template. (GitHub)
JSON output
crc start -p ~/Downloads/pull-secret.txt -o json
Code language: JavaScript (javascript)
Expected shape:
{
"success": true,
"clusterConfig": {
"clusterType": "openshift",
"cacert": "<certificate>",
"webConsoleUrl": "https://console-openshift-console.apps-crc.testing",
"url": "https://api.crc.testing:6443",
"adminCredentials": {
"username": "kubeadmin",
"password": "<password>"
},
"developerCredentials": {
"username": "developer",
"password": "<password>"
}
}
}
Code language: JSON / JSON with Comments (json)
4.4 crc status
Use case
Check VM status, OpenShift/OKD/MicroShift status, resource usage, cache usage, and cache directory.
Command
crc status
Expected output shape
CRC VM: Running
OpenShift: Running (v4.21.14)
RAM Usage: <used> of <total>
Disk Usage: <used> of <total> (Inside the CRC VM)
Cache Usage: <size>
Cache Directory: /Users/rajesh/.crc/cache
Code language: HTML, XML (xml)
The v2.61.0 status command prints CRC VM status, preset status/version, RAM usage, disk usage, cache usage, and cache directory. (GitHub)
Watch mode
crc status --watch
or:
crc status -w
Use this when you want continuous status with CPU/RAM load bars. The --watch flag is present in v2.61.0. (GitHub)
JSON output
crc status -o json
Expected shape:
{
"success": true,
"crcStatus": "Running",
"openshiftStatus": "Running",
"openshiftVersion": "4.21.14",
"diskUsage": 123456789,
"diskSize": 85899345920,
"cacheUsage": 1234567890,
"cacheDir": "/Users/rajesh/.crc/cache",
"ramSize": 15032385536,
"ramUsage": 9876543210,
"preset": "openshift"
}
Code language: JSON / JSON with Comments (json)
4.5 crc oc-env
Use case
Adds the embedded oc CLI to your shell PATH.
The docs recommend crc oc-env when you do not already have oc available. (crc.dev)
Command
crc oc-env
Apply it in your current shell
On macOS zsh/bash:
eval "$(crc oc-env)"
Code language: JavaScript (javascript)
Then verify:
which oc
oc version
Force a shell type
crc oc-env --shell zsh
crc oc-env --shell bash
crc oc-env --shell fish
crc oc-env --shell powershell
crc oc-env --shell cmd
crc oc-env --shell tcsh
The v2.61.0 source lists those shell options. (GitHub)
Expected output shape
For zsh/bash-style shells:
export PATH="/Users/rajesh/.crc/bin/oc:$PATH"
# Run this command to configure your shell:
# eval "$(crc oc-env)"
Code language: PHP (php)
If proxy config is enabled, crc oc-env can also print proxy environment variables. (GitHub)
4.6 crc console
Use case
Open or inspect the OpenShift web console. This works for OpenShift and OKD presets, not MicroShift. The official docs say web console access is available for OpenShift and OKD presets. (crc.dev)
Open web console
crc console
Code language: JavaScript (javascript)
Expected output
Opening the OpenShift Web Console in the default browser...
Code language: JavaScript (javascript)
The source prints that before opening the browser. (GitHub)
Print console URL only
crc console --url
Code language: JavaScript (javascript)
Expected output:
https://console-openshift-console.apps-crc.testing
Code language: JavaScript (javascript)
Print login commands and credentials
crc console --credentials
Code language: JavaScript (javascript)
Expected output shape:
To login as a regular user, run 'oc login -u developer -p <password> https://api.crc.testing:6443'.
To login as an admin, run 'oc login -u kubeadmin -p <password> https://api.crc.testing:6443'
Code language: JavaScript (javascript)
The source prints exactly this form for --credentials. (GitHub)
Alias
crc dashboard
dashboard is an alias for console in v2.61.0. (GitHub)
4.7 crc generate-kubeconfig
Use case
Print the kubeconfig for the running CRC instance to stdout.
Command
crc generate-kubeconfig
Save to a file
crc generate-kubeconfig > crc-kubeconfig
export KUBECONFIG="$PWD/crc-kubeconfig"
oc whoami
Code language: JavaScript (javascript)
Expected output shape
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <base64>
server: https://api.crc.testing:6443
name: api-crc-testing:6443
contexts:
- context:
cluster: api-crc-testing:6443
user: kubeadmin/api-crc-testing:6443
name: crc-admin
current-context: crc-admin
kind: Config
users:
- name: kubeadmin/api-crc-testing:6443
user:
token: <token-or-credentials>
Code language: HTML, XML (xml)
The command requires the CRC instance to exist and be running; otherwise it errors with โthe CRC instance is not running, cannot retrieve kubeconfigโ. (GitHub)
4.8 crc ip
Use case
Print the CRC VM IP address.
Command
crc ip
Expected output
192.168.130.11
Code language: CSS (css)
The exact IP can vary by network mode/platform. The source prints only the connection IP. (GitHub)
Common use
CRC_IP=$(crc ip)
echo "$CRC_IP"
Code language: JavaScript (javascript)
Remote/HAProxy setup examples in the docs also use export CRC_IP=$(crc ip). (crc.dev)
4.9 crc stop
Use case
Gracefully stop the CRC instance.
Command
crc stop
Expected output
Stopped the instance
The exact success message comes from v2.61.0 source. (GitHub)
Force stop
crc stop --force
or:
crc stop -f
Expected output if force is used:
Forcibly stopped the instance
Use force only if normal shutdown fails or hangs. The source supports -f/--force on stop. (GitHub)
4.10 crc delete
Use case
Delete the CRC VM/instance. Use this when switching presets, upgrading CRC, fixing broken state, or reclaiming disk.
Command
crc delete
Code language: JavaScript (javascript)
Expected interactive behavior
Do you want to delete the instance [y/N]:
Code language: JavaScript (javascript)
If confirmed:
Deleted the instance
The source confirms that deletion is interactive unless forced, and prints โDeleted the instanceโ when the instance is deleted. (GitHub)
Non-interactive delete
crc delete --force
Code language: JavaScript (javascript)
or:
crc delete -f
Code language: JavaScript (javascript)
Delete and clear cache
crc delete --clear-cache --force
Code language: JavaScript (javascript)
Use --clear-cache when you want to remove the cached bundle and local CRC cache files too.
4.11 crc cleanup
Use case
Undo host configuration changes made by crc setup.
Command
crc cleanup
Expected output
Cleanup finished
The v2.61.0 source defines cleanup as undoing configuration changes done by crc setup, and its success output is exactly โCleanup finishedโ. (GitHub)
Clean reset flow
crc stop
crc delete
crc cleanup
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Use this when DNS, networking, virtualization, or bundle state becomes confused.
4.12 crc config
Use case
View and change CRC configuration.
The official docs say crc config requires a subcommand, and the available subcommands are get, set, unset, and view. (crc.dev)
Show config command help
crc config --help
Use this to see the properties your exact installed build supports.
Important current config keys
Verified in v2.61.0 source:
preset
bundle
cpus
memory
disk-size
nameserver
pull-secret-file
disable-update-check
enable-experimental-features
enable-emergency-login
persistent-volume-size
enable-shared-dirs
network-mode
host-network-access
http-proxy
https-proxy
no-proxy
proxy-ca-file
enable-cluster-monitoring
modify-hosts-file
consent-telemetry
kubeadmin-password
developer-password
ingress-http-port
ingress-https-port
enable-bundle-quay-fallback
Note: network-mode is conditional in the source and may not appear in installer builds. So on your macOS installer build, trust crc config --help as final authority. (GitHub)
4.13 crc config view
Use case
Show all configuration values you explicitly changed from defaults.
Command
crc config view
Expected output shape
- cpus : 6
- memory : 14336
- pull-secret-file : /Users/rajesh/Downloads/pull-secret.txt
- preset : openshift
Code language: JavaScript (javascript)
The docs list crc config view as the way to view current non-default configuration. (crc.dev)
Show secret values too
crc config view --show-secrets
Use carefully. It can reveal secret config values.
Custom output format
crc config view --format '{{.ConfigKey}}={{.ConfigValue}}'
Code language: JavaScript (javascript)
The v2.61.0 source defines --format and --show-secrets for config view. (GitHub)
4.14 crc config get
Use case
Read one config value.
Command
crc config get memory
Code language: JavaScript (javascript)
Expected output when value is set
memory : 14336
Expected output when value is not explicitly set
Configuration property 'memory' is not set.
Default value '<default>' is used
Code language: PHP (php)
The source defines both output cases. (GitHub)
Examples
crc config get preset
crc config get cpus
crc config get memory
crc config get pull-secret-file
crc config get consent-telemetry
Code language: JavaScript (javascript)
4.15 crc config set
Use case
Set a CRC property before crc setup or crc start.
Syntax
crc config set CONFIG-KEY VALUE
Code language: JavaScript (javascript)
The source requires both a key and a value. (GitHub)
Common examples
Set pull secret path:
crc config set pull-secret-file ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Set preset to OpenShift:
crc config set preset openshift
Code language: JavaScript (javascript)
Set preset to OKD:
crc config set preset okd
Code language: JavaScript (javascript)
Set preset to MicroShift:
crc config set preset microshift
Code language: JavaScript (javascript)
The docs show changing preset before setup/start, and list supported presets: openshift, okd, and microshift. (crc.dev)
Set CPU and memory:
crc config set cpus 6
crc config set memory 14336
Code language: JavaScript (javascript)
Set disk size:
crc config set disk-size 80
Code language: JavaScript (javascript)
Set telemetry consent:
crc config set consent-telemetry yes
crc config set consent-telemetry no
Code language: JavaScript (javascript)
The docs explicitly show using consent-telemetry yes/no. (crc.dev)
Set custom developer password:
crc config set developer-password developer
Code language: JavaScript (javascript)
Set custom kubeadmin password:
crc config set kubeadmin-password 'MyStrongAdminPassword'
Code language: JavaScript (javascript)
Set proxy:
crc config set http-proxy http://proxy.example.com:<port>
crc config set https-proxy http://proxy.example.com:<port>
crc config set no-proxy 127.0.0.1,localhost,.testing
crc config set proxy-ca-file /path/to/proxy-ca.crt
Code language: JavaScript (javascript)
The networking docs show proxy configuration using crc config set http-proxy, https-proxy, no-proxy, and proxy-ca-file. (crc.dev)
Enable host access from CRC VM:
crc config set host-network-access true
Code language: JavaScript (javascript)
The docs show this for accessing host services from CRC. (crc.dev)
Enable cluster monitoring:
crc config set memory 14336
crc config set enable-cluster-monitoring true
crc start
Code language: JavaScript (javascript)
The docs recommend at least 14 GiB / 14336 MiB for cluster monitoring. (crc.dev)
Change ingress route ports:
crc config set ingress-http-port 8080
crc config set ingress-https-port 8443
Code language: JavaScript (javascript)
Use this only when ports 80/443 are unavailable on your host.
4.16 crc config unset
Use case
Remove a config override and return to default.
Syntax
crc config unset CONFIG-KEY
Code language: PHP (php)
Examples
crc config unset memory
crc config unset cpus
crc config unset pull-secret-file
crc config unset http-proxy
crc config unset https-proxy
crc config unset no-proxy
Code language: PHP (php)
If you omit the key, v2.61.0 returns:
Please provide a configuration property to unset
Code language: PHP (php)
That message is from the source. (GitHub)
4.17 crc podman-env
Use case
Configure your shell so a local podman-remote client can talk to Podman inside the CRC VM.
Command
crc podman-env
Apply it
eval "$(crc podman-env)"
Code language: JavaScript (javascript)
Rootful Podman
crc podman-env --root
Force shell
crc podman-env --shell zsh
crc podman-env --shell bash
crc podman-env --shell fish
crc podman-env --shell powershell
crc podman-env --shell cmd
crc podman-env --shell tcsh
Expected output shape
export CONTAINER_SSHKEY="/Users/rajesh/.crc/machines/crc/id_ecdsa"
export CONTAINER_HOST="ssh://core@<crc-ip>:22/run/user/1000/podman/podman.sock"
export DOCKER_HOST="unix:///Users/rajesh/.crc/docker.sock"
# Run this command to configure your shell:
# eval "$(crc podman-env)"
Code language: PHP (php)
Important: v2.61.0 prints a warning that podman-remote is no longer shipped with CRC and that podman-env will be removed in future releases. (GitHub)
So donโt build new training material that depends heavily on this command.
4.18 crc bundle
Use case
Command group for bundle operations.
Command
crc bundle
Expected behavior
Shows help for the bundle command group.
In v2.61.0, the only verified subcommand under bundle is:
crc bundle generate
The v2.61.0 source adds only generate under bundle. (GitHub)
4.19 crc bundle generate
Use case
Generate a custom bundle from the running OpenShift cluster.
Command
crc bundle generate
Force-stop while generating
crc bundle generate --force-stop
or:
crc bundle generate -f
The v2.61.0 source defines --force-stop/-f for this command. (GitHub)
Expected behavior
This is an advanced/developer command. It operates on the running instance and creates a custom bundle. Expected output is workflow-dependent because bundle generation is handled by the machine client, not a simple static text template in the command file.
Use this only when you intentionally need a reusable custom CRC bundle. Most normal OpenShift Local users do not need it.
4.20 crc daemon
Use case
Internal/hidden command that runs the CRC daemon.
Command
crc daemon
Watchdog mode
crc daemon --watchdog
The source marks this command hidden and defines --watchdog. (GitHub)
Expected behavior
Normal users should not run this directly. crc start interacts with the daemon path as needed. If already running, source code can return:
daemon has been started in the background
Use this only for debugging CRC itself.
4.21 crc help
Use case
Inspect your installed CLIโs exact command/flag set.
Commands
crc help
crc help start
crc help setup
crc help config
crc help config set
crc help console
Code language: JavaScript (javascript)
Equivalent forms
crc -h
crc start -h
crc setup -h
crc config -h
Because CRC uses Cobra, help is available for command help. Your own crc setup -h output is the best example of why this matters: it showed that --pull-secret is not a setup flag.
5. Preset workflows
CRC supports these presets:
openshift OpenShift Container Platform
okd OKD
microshift MicroShift
The docs list the minimum resources as:
openshift 4 CPUs, 10.5 GB RAM, 35 GB disk
okd 4 CPUs, 10.5 GB RAM, 35 GB disk
microshift 2 CPUs, 4 GB RAM, 35 GB disk
Code language: CSS (css)
(crc.dev)
5.1 OpenShift preset
crc delete
crc config set preset openshift
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Expected start output includes the web console, kubeadmin, developer, and oc login instructions.
5.2 OKD preset
crc delete
crc config set preset okd
crc setup
crc start
Code language: JavaScript (javascript)
The docs show this flow for OKD. (crc.dev)
Expected output is similar to OpenShift, plus an OKD note.
5.3 MicroShift preset
crc delete
crc config set preset microshift
crc setup
crc start
Code language: JavaScript (javascript)
Expected output shape:
Started the MicroShift cluster.
Use the 'oc' command line interface:
$ eval "$(crc oc-env)"
$ oc COMMAND
Code language: JavaScript (javascript)
The v2.61.0 start source has a separate MicroShift output template. (GitHub)
6. Common full examples
6.1 Fresh install on your Mac
crc version
crc config set pull-secret-file ~/Downloads/pull-secret.txt
crc setup
crc start
crc status
eval "$(crc oc-env)"
crc console --credentials
Code language: PHP (php)
Then copy the oc login command from:
crc console --credentials
Code language: JavaScript (javascript)
6.2 Start with more memory for demos
crc stop
crc config set cpus 6
crc config set memory 14336
crc start
crc status
Code language: JavaScript (javascript)
6.3 Enable monitoring
crc stop
crc delete
crc config set memory 14336
crc config set enable-cluster-monitoring true
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
Cluster monitoring cannot simply be disabled on an existing instance; docs say to set the property back to false and delete the existing CRC instance. (crc.dev)
6.4 Configure proxy
crc stop
crc delete
crc config set http-proxy http://proxy.example.com:<port>
crc config set https-proxy http://proxy.example.com:<port>
crc config set no-proxy 127.0.0.1,localhost,.testing
crc config set proxy-ca-file /path/to/proxy-ca.crt
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
6.5 Access a service running on your host from inside CRC
crc config set host-network-access true
crc stop && crc start
Code language: JavaScript (javascript)
Then from inside the cluster/VM side, use:
host.crc.testing:<port>
Code language: CSS (css)
The docs show host.crc.testing:8080 as the pattern. (crc.dev)
6.6 Reset everything when CRC is broken
crc stop
crc delete --force
crc cleanup
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
6.7 Upgrade CRC safely
crc stop
crc delete
crc version
crc setup
crc start -p ~/Downloads/pull-secret.txt
Code language: JavaScript (javascript)
The install docs say newer CRC versions require manual setup, and the upgrade flow includes deleting the existing instance, replacing the binary, checking crc version, running crc setup, and starting the new instance. (crc.dev)
7. Commands you should run locally to verify nothing changed
Because you asked for โlatestโ and โdo not dream,โ this is the safest local audit command set:
crc version
crc help
crc setup -h
crc start -h
crc status -h
crc stop -h
crc delete -h
crc cleanup -h
crc console -h
crc oc-env -h
crc generate-kubeconfig -h
crc ip -h
crc podman-env -h
crc config -h
crc config get -h
crc config set -h
crc config unset -h
crc config view -h
crc bundle -h
crc bundle generate -h
Code language: JavaScript (javascript)
For your exact Mac build, also run:
crc config --help
That is the final authority for config keys available in your installed binary, especially conditional/platform-specific keys like network-mode.
8. Quick command cheat sheet
# Version
crc version
# First-time setup
crc setup
# Start OpenShift Local
crc start -p ~/Downloads/pull-secret.txt
# Check status
crc status
# Add oc to PATH
eval "$(crc oc-env)"
# Print credentials
crc console --credentials
# Open console
crc console
# Print console URL
crc console --url
# Export kubeconfig
crc generate-kubeconfig > crc-kubeconfig
# Get VM IP
crc ip
# Stop
crc stop
# Delete VM
crc delete
# Delete without prompt
crc delete --force
# Delete and clear cache
crc delete --clear-cache --force
# Undo setup changes
crc cleanup
# Show config
crc config view
# Get one config
crc config get memory
# Set config
crc config set memory 14336
# Unset config
crc config unset memory
# Switch preset
crc delete
crc config set preset okd
crc setup
crc start
# Advanced: generate custom bundle
crc bundle generate
# Internal/debug only
crc daemon
Code language: PHP (php)
The big thing for your immediate issue: pull secret goes with crc start -p, not crc setup.
Iโm a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I have worked at Cotocus. I share tech blog at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow , and SEO strategies at Wizbrand.
Do you want to learn Quantum Computing?
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at WIZBRAND
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services โ all in one place.
Explore Hospitals
The guide provides a comprehensive list of CRC commands, but it could be strengthened by covering operational practices that developers encounter during prolonged use of OpenShift Local. In many cases, issues stem from resource exhaustion, bundle version mismatches, or virtualization conflicts, making log analysis and environment cleanup an essential part of the workflow. It would also be useful to discuss enabling cluster monitoring, preserving configuration consistency across team members, and understanding CRC’s limitations as a single-node environment when validating workloads intended for production clusters.