Installation & Updates

Install 3xcode with the package manager you already use, keep it current with a built-in update command, and control exactly when and how it checks for new versions.

Requirements

RequirementDetails
Python3.12 or 3.13
Operating SystemmacOS, Linux, or Windows
Package managerpip, uv, or pipx, whichever you already use for Python CLI tools
AccountA 3XCode account (the free tier is enough to install and log in)

Install

3xcode is published on PyPI as 3xcode-cli. Install it with whichever tool fits how you manage Python packages.

pip

The default choice if you don't have a strong preference. Installs into your active Python environment.

uv

Fast, modern package management. Use uv add for a project dependency, or uv tool install for a standalone CLI.

pipx

Installs 3xcode into its own isolated environment, recommended if you install a lot of Python CLI tools and want to avoid dependency conflicts.

Terminal
# pip
pip install 3xcode-cli

# uv, as a project dependency
uv add 3xcode-cli

# uv, as a standalone CLI tool
uv tool install 3xcode-cli

# pipx, isolated from your other Python environments
pipx install 3xcode-cli

# verify the install
3xcode version

3xcode version prints the installed CLI version, your Python version, and your platform/architecture: a quick sanity check that the command is on your PATH before you go any further.

Update Notifications

3xcode checks PyPI in the background for a newer release and caches the result locally. The check never blocks a command: it runs on a background thread, and if it finds something newer than what you have installed, the next command you run prints a short, dim notice in an interactive terminal.

What you'll see
$ 3xcode status
Update available: 0.2.1 -> 0.3.0. Run '3xcode update' to upgrade.

Plan: Pro  |  Conversions this month: 42 / 200  ...

Non-blocking by design

The version lookup happens on a background thread and is cached; it never adds latency to a command, and a slow or unreachable network never fails the command you actually ran.

Silence it with an env var

Set THREEXCODE_DISABLE_UPDATE_CHECK to any truthy value to turn the notice off entirely, useful in CI logs or scripted environments where you don't want the extra line.

Silence the update notice
export THREEXCODE_DISABLE_UPDATE_CHECK=1

# or inline, for a single command
THREEXCODE_DISABLE_UPDATE_CHECK=1 3xcode pyspark convert file.sql

Checking & Updating

3xcode update is notify-only by design: it never rewrites itself silently in the background. It detects which package manager you installed with (pip, pipx, or uv) and prints the exact upgrade command for that tool.

CommandFlagsWhat it does
3xcode updatenoneDetects your install method, shows the current and latest version, and asks for confirmation before running the upgrade command for you.
3xcode update --check--checkChecks PyPI and reports the current vs. latest version only. Nothing is installed.
3xcode update -y-y, --yesSkips the confirmation prompt and upgrades immediately, useful in scripts.
Terminal
# See if you're current, without installing anything
3xcode update --check

# Upgrade interactively (detects pip / pipx / uv automatically)
3xcode update

# Upgrade non-interactively, e.g. in a scheduled maintenance script
3xcode update -y

Version Pinning

For CI pipelines or a shared team environment, pin an exact version instead of always taking the latest, so a run behaves the same way every time until you deliberately bump it.

Terminal
# pip: pin an exact version
pip install 3xcode-cli==0.2.1

# uv: pin in a project's dependencies
uv add 3xcode-cli==0.2.1

# Confirm what's actually installed
3xcode version

The background update check still runs against a pinned install: it will keep telling you a newer version exists. That's expected. Set THREEXCODE_DISABLE_UPDATE_CHECK in a pinned environment if you don't want the reminder.

Uninstalling

Uninstalling the CLI removes the 3xcode command itself; it does not touch any workspace you've created, since workspace files live in your project directories, not alongside the package.

Uninstall the CLI

pip uninstall 3xcode-cli, uv remove 3xcode-cli, or pipx uninstall 3xcode-cli, matching however you installed it.

Local data is separate

Stored credentials and BYOK keys live under ~/.3xcode/ (or your OS keychain). Workspaces live wherever you initialized them. Neither is removed by uninstalling the package.

Terminal
pip uninstall 3xcode-cli
# or
uv tool uninstall 3xcode-cli
# or
pipx uninstall 3xcode-cli

Troubleshooting

`3xcode` command not found after install

The Python scripts directory used by pip/uv/pipx usually needs to be on your PATH. Restart your terminal after installing, and for pipx specifically, run `pipx ensurepath` once and open a new shell.

`3xcode update` says it can't detect the install method

This can happen in unusual environments (a custom virtualenv layout, an editable install). Fall back to the manual command for whichever tool you used to install: pip install --upgrade 3xcode-cli, uv tool upgrade 3xcode-cli, or pipx upgrade 3xcode-cli.

Update notice keeps appearing even though I don't want to upgrade yet

Set THREEXCODE_DISABLE_UPDATE_CHECK=1 in your shell profile or CI environment. This silences the notice entirely rather than just delaying it.