MCPcopy Index your code
hub / github.com/crhuber/kelp

github.com/crhuber/kelp @v1.21.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.21.0 ↗ · + Follow
68 symbols 201 edges 11 files 9 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

KELP

KELP

A simple replacement for homebrew for installing binary packages on MacOS & Linux written in Go.

Why?

I built Kelp to scratch my own itch:

  • No waiting for a formula to become available on homebrew
  • Keep all your computers up to date with a single installation manifest
  • Install multiple packages at one time (coming soon...)

How To Install

Go to the releases page. Download the latest release

How Do I Use It?

  1. Initialize Kelp

    kelp init

  2. Add kelp binary path to your PATH

    export PATH=~/.kelp/bin/:$PATH

  3. Add a new package

    kelp add ogham/exa

To use a specific version other than latest use the -r flag. Where -r is the github release version

`kelp add ogham/exa -r 1.0.0`
  1. Install

    kelp install exa

    or add -i during kelp add

    kelp add ogham/exa -i

  2. Upgrade to a new version manually

    kelp set exa -r 1.0.1 kelp install exa

  3. Check for a new version

    kelp update exa kelp install exa or kelp update exa -i

How Does it Work?

It downloads all github releases packages defined in the config file ~/.kelp/kelp.json to ~/.kelp/bin.

How do I configure the config file path

Either use the --config flag or KELP_CONFIG environment variable.

Flags:
  -c, --config string   path to kelp config file (default "/Users/username/.kelp/kelp.json")

What if the package I want is not on github releases?

Easy. Just add the http(s) link to the binary, ie: kelp add hashicorp/terraform -r https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_darwin_amd64.zip

Also supported are packages like helm that provide external non-github download links in the release description.

Troubleshooting

Use inspect to open the cache and bin directories for your package

kelp inspect

Increase logging level

Use --verbose or set KELP_VERBOSE=1 to get more information, expecially during the installation process.

Why wasnt my package installed ?

Kelp looks for binaries made for MacOS or Linux. If it finds a binary for linux or windows it will skip downloading it.

To see what binaries exist use:

kelp doctor

If your binary has a different filename than the name of the Github project, kelp doctor may not find it. To give it a hint you can add the name of the binary to the kelp config

kelp set jira-cli -b "jira"

To see whats in your config use:

kelp ls

Does it work for Linux?

Yes!

What if I'm rate limited by Github Api?

Set a github token environment variable

export GITHUB_TOKEN="XYZ"

Contributing

If you find bugs, please open an issue first. If you have feature requests, I probably will not honor it because this project is being built mostly to suit my personal workflow and preferences.

Core symbols most depended-on inside this repo

EvaluateSuitability
called by 21
pkg/types/github.go
LogDebug
called by 21
pkg/logging/logging.go
LogInfo
called by 18
pkg/logging/logging.go
Load
called by 9
pkg/config/config.go
GetGithubRelease
called by 5
pkg/utils/utils.go
GetPackage
called by 5
pkg/config/config.go
Save
called by 5
pkg/config/config.go
FindBestAsset
called by 4
pkg/types/github.go

Shape

Function 37
Method 23
Struct 6
TypeAlias 2

Languages

Go100%

Modules by API surface

pkg/types/github.go19 symbols
pkg/config/config.go16 symbols
pkg/install/install.go9 symbols
pkg/types/os.go6 symbols
pkg/utils/utils.go5 symbols
pkg/types/github_test.go5 symbols
pkg/logging/logging.go4 symbols
pkg/utils/utils_test.go1 symbols
pkg/rm/rm.go1 symbols
pkg/install/install_test.go1 symbols
main.go1 symbols

For agents

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

⬇ download graph artifact

Ask about this repo answers extend the page