---
name: langgraph-cli
description: "INVOKE THIS SKILL when using the langgraph CLI to scaffold, develop, build, or deploy LangGraph applications. Covers langgraph new, dev, build, up, deploy, and langgraph.json configuration."
---
The `langgraph` CLI manages the full lifecycle of LangGraph applications — from scaffolding a new project to deploying it to LangGraph Platform (LangSmith Deployments).
Key commands:
- **`langgraph new`** — Scaffold a project from a template
- **`langgraph dev`** — Run locally with hot reload (no Docker)
- **`langgraph build`** — Build a Docker image
- **`langgraph up`** — Launch locally via Docker Compose
- **`langgraph deploy`** — Ship to LangGraph Platform
- **`langgraph dockerfile`** — Generate a Dockerfile
All commands (except `new`) read from a `langgraph.json` config file in the project root.
## When to use
Use this skill when the user wants to:
- Scaffold a new LangGraph project
- Run a local development or production-like server
- Build or deploy a LangGraph application
- Understand or edit `langgraph.json` configuration
- Manage LangSmith Deployments (list, delete, view logs)
## Installation
```bash
# Python
pip install 'langgraph-cli[inmem]' # includes langgraph dev support
pip install langgraph-cli # without dev server (build/up/deploy only)
# if using UV as package manager
uv add "langgraph-cli[inmem]" # includes langgraph dev support
uv add langgraph-cli # without dev server (build/up/deploy only)
# JavaScript
npx @langchain/langgraph-cli # use on demand
npm install -g @langchain/langgraph-cli # install globally (available as langgraphjs)
```
## Commands
### `langgraph new [PATH]`
Scaffold a new project from a template.
```bash
langgraph new # interactive template selection
langgraph new ./my-agent # create in specific directory
langgraph new --template agent-python # skip prompt, use template directly
```
Available templates: `deep-agent-python`, `deep-agent-js`, `agent-python`, `new-langgraph-project-python`, `new-langgraph-project-js`
### `langgraph dev`
Run a local development server with hot reloading. No Docker required.
```bash
langgraph dev # default: localhost:2024
langgraph dev --port 8000 # custom port
langgraph dev --config ./langgraph.json # explicit config path
langgraph dev --no-reload # disable hot reload
langgraph dev --no-browser # don't auto-open LangGraph Studio
langgraph dev --host 0.0.0.0 # bind to all interfaces (trusted networks only)
langgraph dev --tunnel # expose via Cloudflare tunnel for remote access
langgraph dev --debug-port 5678 # enable remote debugger (requires debugpy)
langgraph dev --n-jobs-per-worker 20 # max concurrent jobs per worker (default: 10)
```
### `langgraph build`
Build a Docker image for the LangGraph API server.
```bash
langgraph build -t my-image # required: tag the image
langgraph build -t my-image --no-pull # use locally-built base images
langgraph build -t my-image -c langgraph.json # explicit config
langgraph build -t my-image --base-image langchain/langgraph-server:0.2.18 # pin base version
```
### `langgraph up`
Launch the LangGraph API server via Docker Compose (includes Postgres).
```bash
langgraph up # default port 8123
langgraph up --port 8000 # custom port
langgraph up --watch # restart on file changes
langgraph up --recreate # force fresh build (useful for pre-deploy validation)
langgraph up --postgres-uri postgresql://... # external Postgres
langgraph up --no-pull # use local images (after langgraph build)
langgraph up --image my-image # skip build, use pre-built image
langgraph up -d docker-compose.yml # add extra Docker services
langgraph up --debugger-port 8124 # serve debugger UI
langgraph up --wait # block until services are healthy
```
### `langgraph deploy`
Build and deploy to LangGraph Platform (LangSmith Deployments). Requires Docker. On Apple Silicon (M1/M2/M3), Docker Buildx is also required for cross-compiling to `linux/amd64`.
```bash
langgraph deploy # deploy, name defaults to directory name
langgraph deploy --name my-agent # explicit deployment name
langgraph deploy --deployment-type prod # production deployment (default: dev)
langgraph deploy --tag v1.2.0 # custom image tag (default: latest)
langgraph deploy --deployment-id # update an existing deployment by ID
langgraph deploy --config ./langgraph.json # explicit config path
langgraph deploy --no-wait # don't wait for deployment status
langgraph deploy --verbose # show detailed server logs
```
Prereq: `LANGSMITH_API_KEY` in environment or `.env`.
`langgraph deploy` also accepts build flags: `--base-image`, `--pull`/`--no-pull`.
#### `langgraph deploy list`
```bash
langgraph deploy list # list all deployments
langgraph deploy list --name-contains bot # filter by name
```
#### `langgraph deploy delete`
```bash
langgraph deploy delete # interactive confirmation
langgraph deploy delete --force # skip confirmation
```
#### `langgraph deploy logs`
```bash
langgraph deploy logs # runtime logs, last 100
langgraph deploy logs --name my-agent # by deployment name
langgraph deploy logs --deployment-id # by deployment ID
langgraph deploy logs --type build # build logs instead of runtime
langgraph deploy logs -f # follow/stream logs
langgraph deploy logs --level error # filter by level (debug|info|warning|error|critical)
langgraph deploy logs -q "timeout" # search filter
langgraph deploy logs --limit 500 # more entries
langgraph deploy logs --start-time 2026-03-08T00:00:00Z # time range
```
### `langgraph dockerfile `
Generate a Dockerfile (and optionally Docker Compose files) without building.
```bash
langgraph dockerfile ./Dockerfile # generate Dockerfile
langgraph dockerfile ./Dockerfile --add-docker-compose # also generate compose + .env + .dockerignore
```
## `langgraph.json` reference
The configuration file used by all CLI commands (`dev`, `build`, `up`, `deploy`). Defaults to `langgraph.json` in the current directory.
### Minimal config (Python)
```json
{
"dependencies": ["."],
"graphs": {
"agent": "./my_agent/agent.py:graph"
},
"env": "./.env"
}
```
### Minimal config (JavaScript)
```json
{
"dependencies": ["."],
"graphs": {
"agent": "./src/agent.js:graph"
},
"env": "./.env"
}
```
### Full config with all keys
```json
{
"dependencies": [".", "langchain_openai", "./local_package"],
"graphs": {
"agent": "./my_agent/agent.py:graph",
"retriever": "./my_agent/rag.py:rag_graph"
},
"env": "./.env",
"python_version": "3.12",
"pip_config_file": "./pip.conf",
"dockerfile_lines": [
"RUN apt-get update && apt-get install -y ffmpeg"
]
}
```
### Key reference
| Key | Required | Description |
|-----|----------|-------------|
| `dependencies` | Yes | Array of dependencies. `"."` looks for local packages via `pyproject.toml`, `setup.py`, `requirements.txt`, or `package.json`. Can also be paths to subdirectories (`"./my_pkg"`) or package names (`"langchain_openai"`). |
| `graphs` | Yes | Mapping of graph ID to path. Format: `./path/to/file.py:variable` (Python) or `./path/to/file.js:function` (JS). The variable must be a `CompiledGraph` or a function returning one. Multiple graphs supported. |
| `env` | No | Path to a `.env` file (string) OR an inline mapping of env var names to values (object). Used by `langgraph dev` and `langgraph up` locally. `langgraph deploy` reads from this file and adds the variables as deployment secrets. |
| `python_version` | No | `"3.11"`, `"3.12"`, or `"3.13"`. Defaults to `"3.11"`. |
| `node_version` | No | Node.js version for JS projects. |
| `pip_config_file` | No | Path to a pip config file for custom package indexes. |
| `dockerfile_lines` | No | Array of additional Dockerfile lines appended after the base image import. Use for system packages, binaries, or custom setup. |
## Typical workflow
1. **Scaffold** — `langgraph new` to create a project from a template.
2. **Configure** — Edit `langgraph.json`: set dependencies, point `graphs` at your compiled graph(s), add `.env`.
3. **Develop** — `langgraph dev` for rapid local iteration with hot reload (no Docker, port 2024).
4. **Validate** — `langgraph up --recreate` to test in a production-like Docker stack (port 8123, includes Postgres).
5. **Deploy** — `langgraph deploy` to ship to LangGraph Platform (LangSmith Deployments).
6. **Monitor** — `langgraph deploy logs -f` to tail runtime logs; `--type build` for build logs.
## `langgraph dev` vs `langgraph up`
| Feature | `langgraph dev` | `langgraph up` |
|---------|----------------|----------------|
| Docker required | No | Yes |
| Install | `pip install 'langgraph-cli[inmem]'` | `pip install langgraph-cli` |
| Primary use | Rapid development & testing | Production-like validation |
| State persistence | In-memory / pickled to local dir | PostgreSQL |
| Hot reloading | Yes (default) | Optional (`--watch`) |
| Default port | 2024 | 8123 |
| Resource usage | Lightweight | Heavier (Docker containers for server, Postgres, Redis) |
| IDE debugging | Built-in DAP support (`--debug-port`) | Container debugging |
## Gotchas
- **`langgraph deploy` requires Docker** — On Apple Silicon (M1/M2/M3), Docker Buildx is also required for cross-compiling to `linux/amd64`.
- **`langgraph deploy` can only update its own deployments** — Deployments created through the LangSmith UI or GitHub integration cannot be updated with `langgraph deploy`. Use the UI for those.
- **`dependencies` must include all packages** — The `dependencies` array in `langgraph.json` must point to where your package config lives (e.g., `"."` for root). The actual packages are resolved from `pyproject.toml`, `requirements.txt`, or `package.json` at that location.
- **`langgraph dev` runs without Docker** — It runs directly in your environment. If your code depends on system packages (e.g., `ffmpeg`), they must be installed locally. Use `langgraph up` to validate Docker builds.
- **JavaScript CLI** — Use `npx @langchain/langgraph-cli ` (or `langgraphjs` if installed globally via `npm install -g @langchain/langgraph-cli`).
- **API key** — `LANGSMITH_API_KEY` is required for `langgraph deploy`. For `langgraph dev`, it is optional — the server runs without it, but you won't get traces in LangSmith. Can also be set via `LANGGRAPH_HOST_API_KEY` or `LANGCHAIN_API_KEY`.