Profiles
A profile is a named bucket of installed libraries. Use profiles to separate the tools you reach for in different contexts — for example a work profile that has your company’s deployment libraries, a personal profile that doesn’t, and a ci profile scoped to whatever a single pipeline needs.
The default profile
Section titled “The default profile”Every account always has a profile named default:
- It’s created automatically when you sign up.
- Its slug (
default) is immutable and the profile itself can’t be deleted. - If you don’t set an active profile explicitly, the CLI uses it.
Library installs land in default until you opt into something else, so most users never have to think about profiles.
Active profile
Section titled “Active profile”The active profile is a CLI-local preference stored in ~/.my/config.json. It controls:
- Which profile
my library install/uninstallmutate on the server. - Which profile’s cache
my cli runresolves commands against. - Which catalog
my library sync(without an argument) refreshes.
Resolution order, top wins:
MY_PROFILEenvironment variable.ActiveProfilein~/.my/config.json(set viamy cli profile set <slug>).default.
Common workflow
Section titled “Common workflow”# Create a profile and switch to itmy cli profile create workmy cli profile set work
# Anything you install now lands in 'work'my library install kubernetesmy library install terraform
# Switch back when you're donemy cli profile set defaultprofile set only requires the network if the target profile isn’t cached locally yet — once you’ve synced it once, switching offline works.
Listing and inspecting
Section titled “Listing and inspecting”my cli profile list # all profiles; the active one is marked with *my cli profile show # the active profile + its librariesmy cli profile show work # any profile by sluglist and show fall back to cached state when the API is unreachable, so they keep working on a plane or behind a corporate proxy.
One-off override
Section titled “One-off override”For library install/uninstall, the --profile flag is the most explicit way to target a different profile without flipping the active one:
my library install custom-tools --profile cimy library uninstall old-thing --profile workFor commands without a --profile flag (e.g. my library sync, my cli run), use the MY_PROFILE env var:
MY_PROFILE=ci my library syncMY_PROFILE=ci my cli run deployThis is also how you’d target a profile inside a CI job that uses an API token:
export MY_API_TOKEN=myc_...export MY_PROFILE=cimy library syncmy deploy stageCache layout
Section titled “Cache layout”Each profile gets its own catalog file, with command specs shared across profiles (specs are content-addressable, so there’s no duplication):
~/.my/ cache/ profiles/ default/catalog.json work/catalog.json ci/catalog.json specs/ <commandID>/<version>.jsonIf you upgrade from an older version of mycli the pre-profile ~/.my/cache/catalog.json is moved into profiles/default/catalog.json on first run.
Cleanup
Section titled “Cleanup”my cli profile delete workIf a profile has API tokens scoped to it, the API refuses to delete unless you pass --force. Deleting the active profile clears the active-profile preference; subsequent commands fall back to default.