MCPcopy Index your code
hub / github.com/alexellis/arkade

github.com/alexellis/arkade @0.11.107 sqlite

repository ↗ · DeepWiki ↗ · release 0.11.107 ↗
671 symbols 3,434 edges 137 files 98 documented · 15%
README

arkade - Open Source Marketplace For Developer Tools

arkade is how developers install the latest versions of their favourite CLI tools and Kubernetes apps.

With arkade get, you'll have kubectl, kind, terraform, and jq on your machine faster than you can type apt-get install or brew update.

arkade logo

CI Build URL Checker GoDoc License: MIT Downloads

With 193 CLIs and 53 Kubernetes apps (charts, manifests, installers) available for Kubernetes, gone are the days of contending with dozens of README files just to set up a development stack with the usual suspects like ingress-nginx, Postgres, and cert-manager.

Support arkade 👋 (From Our Sponsors)

Try slicervm.com - turn your Mac into an API for running Linux. Sandbox your agents - run Kubernetes - locally and FAST.

Should you try arkade?

Arkade is built to save you time so you can focus and get productive quickly.

I was setting up a new dev environment yesterday. Kind, helm, kustomize, kubectl, all this stuff. My take is - arkade is highly underappreciated. I'd spend an hour in the past to install such tools. With arkade it was under ten minutes.

Ivan Velichko, SRE @ Booking.com

Before arkade whenever I used to spin up an instance, I used to go to multiple sites and download the binary. Arkade is one of my favourite tools.

Kumar Anurag - Cloud Native Enthusiast

It's hard to use K8s without Arkade these days. My team at @lftechnology absolutely loves it.

@Yankexe

arkade is really a great tool to install CLI tools, and system packages, check this blog on how to get started with arkade it's a time saver.

Kiran Satya Raj

This is real magic get #kubernetes up and going in a second; then launch #openfaas a free better than lambda solution that uses docker images.

Greg runs Fullstack JS and is a JavaScript developer

for getting the basics installed, nothing beats arkade it can install commonly used cli tools like kubectl locally for you, as well as common k8s pkgs like ingress-nginx or portainer

@arghzero

I finally got around to installing Arkade, super simple! quicker to install this than the argocli standalone commands, but there are lots of handy little tools in there. also, the neat little part about arkade, not only does it make it easy to install a ton of different apps and CLIs you can also get the info on them as well pretty quickly.

Michael Cade @ Kasten

You've to install the latest and greatest tools for your daily @kubernetesio tasks? No problem, check out #arkade the open source #kubernetes marketplace 👍

Thorsten Hans - Cloud Native consultant

If you want to install quickly a new tool in your dev env or in your k8s cluster you can use the Arkade (https://github.com/alexellis/arkade) easy and quick you should it try out! Ps. I contribute to this project 🥰

Carlos Panato - Staff engineer @ Mattermost

arkade is the 'brew install' of Kubernetes. You can install and run an application in a single command. Finally! https://github.com/alexellis/arkade / by Alex Ellis

John Arundel - Cloud consultant, author

Demo

demo

Getting arkade

# Note: you can also run without `sudo` and move the binary yourself
curl -sLS https://get.arkade.dev | sudo sh

arkade --help
ark --help  # a handy alias

# Windows users with Git Bash
curl -sLS https://get.arkade.dev | sh

Windows users: arkade requires bash to be available, therefore Windows users should install and use Git Bash

An alias of ark is created at installation time, so you can also run ark install APP

Usage overview

Arkade can be used to install Kubernetes apps or to download CLI tools.

  • arkade install - install a Kubernetes app
  • arkade info - see the post installation screen for a Kubernetes app
  • arkade get - download a CLI tool
  • arkade update - perform a self-update of arkade on MacOS and Linux

An arkade "app" could represent a helm chart such as openfaas/faas-netes, a custom CLI installer such as istioctl, or a set of static manifests (i.e. MetalLB).

An arkade "tool" is a CLI that can be downloaded for your operating system. Arkade downloads statically-linked binaries from their upstream locations on GitHub or the vendor's chosen URL such as with kubectl and terraform.

Did you know? Arkade users run arkade get both on their local workstations, and on their CI runners such as GitHub Actions or Jenkins.

Download CLI tools with arkade

arkade downloads the correct version of a CLI for your OS and CPU.

With automatic detection of: Windows / MacOS / Linux / Intel / ARM.

# Download a binary release of a tool

arkade get kubectl

# Download a specific version of that tool
arkade get kubectl@v1.22.0

# Download multiple tools at once
arkade get kubectl \
  helm \
  istioctl

# Download multiple specific versions
arkade get faas-cli@0.13.15 \
  kubectl@v1.22.0

# Override machine os/arch
arkade get faas-cli \
  --arch arm64 \
  --os linux

# Override machine os/arch
arkade get faas-cli \
  --arch arm64 \
  --os darwin

This is a time saver compared to searching for download pages every time you need a tool.

Search CLIs available via arkade get by name or keyword, with alias support (e.g. "k8s" expands to "Kubernetes"):

arkade search helm
arkade search k8s

Files are stored at $HOME/.arkade/bin/

Want to download tools to a custom path such as into the GitHub Actions cached tool folder?

arkade get faas-cli kubectl \
  --path $HOME/runner/_work/_tools

# Usage:
/runner/_work/_tools/faas-cli version

PATH=$PATH:$HOME/runner/_work/_tools
faas-cli version

Think of arkade get TOOL as a doing for CLIs, what arkade install does for helm.

Adding a new tool for download is as simple as editing tools.go.

Click here for the full catalog of CLIs

Install System Packages

System packages are tools designed for installation on a Linux workstation, server or CI runner.

These are a more limited group of applications designed for quick setup, scripting and CI, and generally do not fit into the arkade get pattern, due to additional installation steps or system configuration.

# Show packages
arkade system install

# Show package flags
arkade system install go --help

# Install latest version of Go to /usr/local/bin/go
arkade system install go

# Install Go 1.18 to /tmp/go
arkade system install go \
  --version 1.18 \
  --path /tmp/

# Install containerd for ARM64, 32-bit ARM or x86_64
# with systemd enabled
arkade system install containerd \
  --systemd

Run the following to see what's available arkade system install:

  actions-runner   Install GitHub Actions Runner
  buildkitd        Install Buildkitd
  caddy            Install Caddy Server
  cni              Install CNI plugins
  containerd       Install containerd
  firecracker      Install Firecracker
  gitlab-runner    Install GitLab Runner
  go               Install Go
  node             Install Node.js
  node_exporter    Install Node Exporter
  prometheus       Install Prometheus
  pwsh             Install Powershell
  registry         Install registry
  tc-redirect-tap  Install tc-redirect-tap
  zvol-snapshotter Install containerd zvol snapshotter

The initial set of system apps is now complete, learn more in the original proposal: Feature: system packages for Linux servers, CI and workstations #654

Install Packages from OCI images

For packages distributed in Open Container Initiative (OCI) images, you can use arkade oci install to extract them to a given folder on your system.

vmmeter is one example of a package that is only published as a container image, which is not released on a GitHub releases page.

# Install to /usr/local/bin (default)
arkade oci install ghcr.io/openfaasltd/vmmeter

# Install to a custom path
arkade oci install ghcr.io/openfaasltd/vmmeter /usr/local/bin

# Install to current directory
arkade oci install ghcr.io/openfaasltd/vmmeter .

Options: * Path can be specified as a positional argument (e.g., /usr/local/bin or .) * --version - the version of the package to extract, if not specified the :latest tag is used * --arch - the architecture to extract, if not specified the host's architecture is used

Install CLIs during CI with GitHub Actions

Example of downloading faas-cli (specific version) and kubectl (latest), putting them into the PATH automatically, and executing one of them in a subsequent step.

    - uses: alexellis/arkade-get@master
      with:
        kubectl: latest
        faas-cli: 0.14.10
    - name: check for faas-cli
      run: |
        faas-cli version

If you just need system applications, you could also try "setup-arkade":

    - uses: alexellis/setup-arkade@v2
    - name: Install containerd and go
      run: |
        arkade system install containerd
        arkade system install go

Bump Helm chart versions

To bump the patch version of your Helm chart, run arkade chart bump -f ./chart/values.yaml. This updates the patch component of the version specified in Chart.yaml.

arkade chart bump -f ./charts/flagger/values.yaml
charts/flagger/Chart.yaml 1.36.0 => 1.37.0

By default, the new version is written to stdout. To bump the version in the file, run the above command with the --write flag. To bump the version in the chart's Chart.yaml only if the chart has any changes, specify the --check-for-updates flag:

```bash arkade chart bump -f ./c

Extension points exported contracts — how you extend this code

ProgressCallback (FuncType)
ProgressCallback is called by the download layer to report bytes transferred and total size so the caller can render pro
pkg/get/download.go
Resolver (Interface)
(no doc) [1 implementers]
pkg/update/update.go
Verifier (Interface)
(no doc) [1 implementers]
pkg/update/verifier.go
VersionCheck (Interface)
(no doc) [1 implementers]
pkg/update/version_check.go

Core symbols most depended-on inside this repo

MakeTools
called by 207
pkg/get/tools.go
GetURL
called by 203
pkg/get/get.go
String
called by 133
cmd/release.go
NewArkadeApp
called by 53
cmd/install.go
MergeFlags
called by 42
pkg/config/config.go
WithKubeconfigPath
called by 37
pkg/types/types.go
WithHelmURL
called by 37
pkg/types/types.go
WithOverrides
called by 37
pkg/types/types.go

Shape

Function 578
Method 47
Struct 37
TypeAlias 5
Interface 3
FuncType 1

Languages

Go100%

Modules by API surface

pkg/get/get_test.go207 symbols
pkg/get/download.go36 symbols
pkg/get/get.go31 symbols
pkg/types/types.go19 symbols
pkg/archive/untar_nested_test.go16 symbols
pkg/dockerfile/dockerfile_test.go13 symbols
cmd/oci/progress.go13 symbols
cmd/get.go13 symbols
pkg/update/update.go12 symbols
pkg/get/download_test.go11 symbols
cmd/release.go11 symbols
pkg/k8s/kubernetes_exec.go10 symbols

Dependencies from manifests, versioned

github.com/Masterminds/semverv1.5.0 · 1×
github.com/Masterminds/semver/v3v3.5.0 · 1×
github.com/alexellis/fstailv0.0.0-2026030120390 · 1×
github.com/alexellis/gha-bumpv0.0.6 · 1×
github.com/alexellis/go-execute/v2v2.2.1 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/clipperhouse/displaywidthv0.11.0 · 1×
github.com/clipperhouse/uax29/v2v2.7.0 · 1×
github.com/docker/cliv29.5.3+incompatible · 1×
github.com/docker/docker-credential-helpersv0.9.8 · 1×
github.com/docker/go-unitsv0.5.0 · 1×

For agents

$ claude mcp add arkade \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact