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
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:
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:
Convenient, but the module is shared and read-only. For custom packages, build a conda env on top:
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:
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.
With uv (recommended — isolates lc under ~/.local/share/uv/tools/):
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.
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:
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.
Make sure ~/.local/bin is on your PATH, then verify and
authenticate:
Other install routes (npm, native package managers) are documented in the Claude Code installation docs.
See the openai/codex repo README for install options.
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:
- Local laptop: install Podman (rootless, no daemon) or Docker.
- HPC login node: see Running on a Cluster.
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¶
Uninstalling¶
Keep your config?
~/.lightcone/config.yaml survives the uninstall. Delete it too
if you want a clean slate.