

įŦįĢåēåéž
Introduction
Introducing tea - the revolutionary, cross-platform package manager. Say goodbye to slow & clunky, and say hello to fast & smooth. From the creator of Brew.
With tea, simply type commands and it takes care of the rest. Get the latest versions of open source tools and support specific tool versions for different projects. Experience better package management with tea.
Developer Environments
Simplify your development environment setup with tea by automatically fetching the specific versions of tools your project needs. With a range of specifications, tea provides a seamless solution to manage project dependencies. Debug changes, supplement your environment, and see the full environment with ease.
Every project you work on needs different tools with different versions. Installing those tools globally makes no sense and could even cause subtle bugs during dev.
tea can determine the tools a project directory needs based on the files it finds. With their shell magic just step into the project directory and type commands; tea automatically fetches the specific versions those projects need and runs them.
They try to be as clever as possible, eg. they parse the node version out of a GitHub Actionâs action.yml. If they see a .node-version file, they add that version of node to the environment.
Where there isnât a convention for specifying tool versions, you can add YAML front matter to its configuration file. For example, if theyâre talking a python poetry project, then you can specify your python version by adding YAML front matter to its pyproject.toml:
If your poetry project needs other non pypa dependencies (like a c compiler) then you can add them there too (eg. llvm.org, their deps are always named after project homepages because then you just google it and thereâs no ambiguity).
Magic
Their magic puts the entire open source ecosystem at your fingertips. Their installer enables by adding some hooks to your shell:
A hook when changing directory that sets up project environments
Environments are just shell environment variables
A hook for the âcommand not foundâ scenario that installs that command before running it
Their magic means that tea packages are not generally accessible from the rest of the system.
All packages are installed, segregated and encapsulated in ~/.tea for other parts of your system to access them you may have to make them accessible using tea +pkg syntax.
Symlink Magic
Symlinks to tea are resolved to that tool. Eg:
Using Magic in Shell Scripts
Their magic is not automatically added to scripts, but you can manually add it:
And of course you can also use their one-liner:
Thus you can make a script that can effortlessly use any tool from the open source ecosystem. If they have tea installed it uses their installation, if not it installs everything (including tea itself) to a temporary sandbox thatâs gone when the script completes.
Installing tea
The easiest way to install tea is with their installer:The easiest way to install tea is with their installer: sh <(curl https://tea.xyz)
The script installs to ~/.tea and sets up magic (they ask politely first).
Linux users may need to install some pre-requisites. SeeLinux users may need to install some pre-requisites.
What Happens
Firstly they confirm youâre cool before they do anything
If so they install tea to ~/.tea
If not they exit with failure
They then ask if you want magic
If so they add one line to your ~/.shellrc
If not they exit successfully
Itâs Not Just an Installer
If you run it again, itâll update tea.
The tea one-liner can also be used to provide your users a temporary sandbox for your projects. They can use the power of tea to try out your project without installing tea or your project.
Requirements
Both aarch64 (arm64) and x86-64 for these platforms:
macOS >= 11
Linux glibc >=2.28
WSL >=2
Using tea
teaâs magic means you just type the commands you want and tea takes care of installing the tools and all their dependencies automagically.
Most package managers only offer the (almost) latest version of tools. tea not only offers the latest versions immediately it knows you need to be able to pick and choose what versions of tools you use:
Scripts
tea typically knows what you need to run a script
When the package requirements are more advanced you can inject packages into the script using teaâs +pkg syntax:
Sandboxes
An idiomatic use of teaâs underlying functionality is the ability to try out new projects in a temporary sandbox: