Skip to content

Instant dev tools for your current shell

Want Rust and Node for a bit, without installing anything on your system? Run this in your shell:

source <(curl -sL in-1.cc) rust node
curl -sL in-1.cc | source - rust node

That clones in-1 to /tmp/in-1/bootstrap, installs tools in the selected prefix, and sets up PATH, MANPATH, shell completion and any tool environment variables in your current shell, for the duration of the shell session.

On a fresh machine the prefix is ${TMPDIR:-/tmp}/in-1. With in-1 already installed, tools land alongside its public command wrapper. Use -T or --temp to force temporary installs, or -L or --local for a persistent prefix. Downloads stay cached, so asking again is fast.

What you get

  • Over 100 tools and languages from the makes project
  • Works on Linux and macOS, Intel and ARM
  • Works in Bash, Zsh and Fish
  • No root, no system packages, no dotfile edits
  • Version pinning: source <(curl -sL in-1.cc) node@22.11.0

Keep it around

in-1 is itself one of the tools, so the one-liner gives you the in-1 command too:

source <(curl -sL in-1.cc) in-1
curl -sL in-1.cc | source - in-1

Then you have:

in-1 rust node    # install tools into this shell session
in-1 --list       # see all available tools
in-1 --update     # update in-1
in-1 --help       # or: man in-1
in-1 <TAB><TAB>   # tab completion

Want a tool to stick around for good? First install in-1 in a $PREFIX/bin/in-1 in your PATH:

source <(curl -sL in-1.cc) in-1 --local

Here --local is short for PREFIX=$HOME/.local, so in-1 is $HOME/.local/bin/in-1.

Now when you install things with in-1 thing it ends up in $HOME/.local/bin/thing.

in-1 thing1 thing2

Learn more

  • Install walks through all three ways to use in-1, and how to update or remove it
  • Usage covers every option and environment variable
  • Design explains how it works under the hood
  • The in-1 source is a few hundred lines of shell on top of makes