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 any lc command. 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.
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.