Skip to content

Install

To get started on a lightcone project, you need three things on your machine: Python 3.11+, the lightcone command line tool lc, and an agent-based CLI (currently supporting Claude Code).
A container runtime is optional but recommended.

1. Python

If you don't already have a recent Python

brew install python@3.12

Your package manager (apt install python3.12, etc.) or pyenv

python.org or WSL

NERSC doesn't ship uv, but it installs into your home dir with a single curl:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.12

Both uv and an isolated Python 3.12 land under ~/.local/. Make sure ~/.local/bin is on your PATH.

Alternative: NERSC's python module

module load python gives you a ready-to-use distribution with conda, pip, and many scientific packages already installed:

module load python      # NERSC Python (3.11+)

Convenient, but the module is shared and read-only. For custom packages, build a conda env on top:

conda create -n your-env-name python=3.11 -y
conda activate your-env-name

This is NERSC's recommended path for pip install when you need custom packages.

Storage: 40 GB home quota

Conda envs land under ~/.conda/envs/ by default. The Perlmutter home quota is 40 GB, which gets eaten quickly. NERSC recommends /global/common/software/<project>/ for larger envs. If you want them on $SCRATCH (note: 12-week purge), move and symlink:

conda deactivate
mv ~/.conda/envs/your-env-name $SCRATCH/conda-envs/
ln -s $SCRATCH/conda-envs/your-env-name ~/.conda/envs/your-env-name

Recommendation

We highly recommend the use of uv to manage Python installation and virtual environments.

uv can be installed in a single commandline

curl -LsSf https://astral.sh/uv/install.sh | sh

and a subsequent version of Python

uv python install 3.12

2. lightcone-cli

The published name on PyPI is lightcone-cli; the command it provides is lc.

uv tool install lightcone-cli
python -m pip install lightcone-cli

With uv (recommended — isolates lc under ~/.local/share/uv/tools/):

uv tool install lightcone-cli

With pip, the exact command depends on which Python you're using:

# NERSC python module
module load python
python -m pip install --user lightcone-cli   # lands in ~/.local/bin/

# Conda env
conda activate your-env-name
python -m pip install lightcone-cli

astra-tools is a transitive dependency — pulled in automatically.

From source (contributors only)
git clone https://github.com/LightconeResearch/lightcone-cli.git
uv pip install -e ./lightcone-cli

To also hack on astra-tools:

git clone https://github.com/LightconeResearch/ASTRA.git
uv pip install -e ./ASTRA

Get a confirmation of the proper installation by running

lc --version                # → lightcone-cli, version ...

Note Some people may have already set a personal shell alias lc='ls --color'. If that's you, installing lightcone-cli will shadow the alias — make sure to rebind it (e.g. alias l='ls --color').

3. Global configuration

~/.lightcone/config.yaml is created automatically the first time you run an lc subcommand. No manual setup step is needed. The file starts as:

container:
  runtime: auto
slurm:
  account: null
  time_padding: 1.5

auto detects whichever of podman, docker, or podman-hpc is on your PATH (and skips docker if its daemon isn't running). Feel free to pin the runtime later by editing this file directly. Before the first lc run --async, replace slurm.account: null with the SLURM project to charge; synchronous and local work do not require it.

4. Agentic CLI

Most of your interactions with a lightcone project happen through an agent-based CLI. Any agent that can drive a project shell works — the choice is yours.

curl -fsSL https://claude.ai/install.sh | bash

Make sure ~/.local/bin is on your PATH, then verify and authenticate:

claude --version
claude        # first run prompts for login (claude.ai or API key)

Other install routes (npm, native package managers) are documented in the Claude Code installation docs.

See the openai/codex repo README for install options.

curl -fsSL https://opencode.ai/install | bash

Open a project in your terminal or editor (see Getting Started) and run your agent CLI from inside it. Inside Claude Code you'll type slash commands like /lc-new, /lc-from-code, and /lc-from-paper — see The Agentic Workflow.

5. (Optional) Docker or Podman

If your analysis declares a container: (which it usually should — it makes the result reproducible across machines), you need a container runtime:

The auto mode picks whichever container runtime you have. If you don't have either, you can still use lc — set runtime: none in ~/.lightcone/config.yaml and recipes will run on the host without isolation.

Sanity check

lc --help
lc init --help

Both should print help text. If lc is shadowed by an ls alias, unset it (unalias lc) or use the full path ($(which lc) --version).

Updating

uv tool upgrade lightcone-cli
pip install -U lightcone-cli astra-tools
cd path/to/lightcone-cli
git pull
uv pip install -e .        # only needed if pyproject.toml changed

Editable installs auto-follow source edits — switching branches or pulling new commits is reflected immediately in lc. Re-install only when pyproject.toml adds a new dependency.

Uninstalling

uv tool uninstall lightcone-cli
pip uninstall lightcone-cli

Keep your config?

~/.lightcone/config.yaml survives the uninstall. Delete it too if you want a clean slate.