Getting set up, and the command you do not have
The setup lessons in the official course come in two flavours, Python and TypeScript, and they converge on the same place: a CLI, a config file, and a local server you can hit. You are the TypeScript one, so this lesson notes where the two paths differ rather than pretending they are identical.
The four commands you have
langgraph dev runs the server locally without Docker, on port 2024. This is the fast loop. No image build, no container runtime, nothing to pull. On a bad connection it is realistically the only one you can use at all.
langgraph build builds the image. The -t tag flag is required, so a snippet showing a bare langgraph build is wrong on its face.
langgraph up runs the containerised stack, on port 8123. Closer to production shape, needs Docker.
langgraph dockerfile emits a Dockerfile, for when you need to customise the build beyond what dockerfile_lines in the config can express.
The one you do not have
There is a fifth command, langgraph deploy. It is Python-only and in beta.
Not “exists but discouraged”. Not “exists with fewer flags”. It is simply not there for you. Practically, your shipping path as a TypeScript developer goes through the platform. On the exam, if you half-remember a tutorial where somebody typed langgraph deploy and shipped, you were reading Python beta documentation, and building an answer on that memory loses a mark.
Where the config diverges
The same split shows up in langgraph.json. JavaScript and TypeScript configs omit dependencies, python_version, the pip_* keys, and keep_pkg_tools. Your dependencies live in package.json, so the file has nothing to declare. node_version is what you get instead.
This is a real question shape: “which of the following is not available in a JavaScript project”. The answer always comes out of that same five-key Python set, so if you learn one thing here, learn which side of the line each key sits on.
The honest loop
Write the graph and declare it in graphs. Iterate with langgraph dev on 2024. When you want the real artifact, langgraph build -t something, then langgraph up on 8123 to run it the way it will actually be served. Reach for langgraph dockerfile only when the standard build cannot express what you need. Then ship it through the platform, because the CLI shortcut for step five is Python beta and you are not writing Python.
Try it yourself
Which command needs no Docker
You are on a laptop in a barn with bad wifi and no appetite for pulling an image. One of these runs.
langgraph dev
langgraph build -t my-agent
langgraph up
langgraph dockerfileShow answer
Correct answer: B — langgraph dev, on port 2024
langgraph dev runs without Docker and serves on port 2024. That combination, no Docker and 2024, is the pairing to memorise as one unit. The tempting wrong answer is langgraph up on 8123, because up is the command that feels like the normal way to run a server locally, and the port number attached to it is genuinely correct. It is also the one that runs the containerised stack, so it needs Docker. build and dockerfile do not serve anything at all, so a port attached to either is nonsense.
The command JavaScript does not have
There is a hole in the CLI aimed squarely at you, and half the tutorials on the internet fall straight into it.
Which langgraph CLI command is unavailable in JavaScript, and what is its status even where it does exist?
Reveal answer
langgraph deploy. It is Python-only, and in beta even there, so it does not exist in JavaScript or TypeScript at all. As a TypeScript developer your path to a deployment runs through the platform rather than through a single CLI command. Any question, tutorial or answer option that presents langgraph deploy as the standard shipping step is describing a Python beta workflow you cannot run.
Which config key does JavaScript not have
You are writing langgraph.json for a TypeScript project. One of these keys is not yours.
{
"graphs": { "agent": "./src/agent.ts:graph" },
"env": ".env",
"dependencies": ["."],
"store": {}
}Show answer
Correct answer: C — dependencies, which lists installable packages
dependencies is one of the Python-only keys, alongside python_version, the pip_ keys, and keep_pkg_tools. JavaScript and TypeScript projects declare dependencies in package.json, so the config file has nothing to say about them, and node_version is the one you get in exchange. The tempting wrong answer is store, because it feels like an advanced or tier-gated feature that might be missing from one runtime. It is not: store exists in both and configures the long-term memory store. graphs and env are the two keys almost every deployment sets and both exist everywhere.
Two ports, two jobs
Port numbers are exactly the sort of exact fact this exam likes, and exactly the sort that evaporates under pressure.
Which port belongs to langgraph dev and which to langgraph up, and what is the functional difference between the two commands?
Reveal answer
dev is 2024, up is 8123. dev runs the server without Docker, which makes it the fast local loop with no image build in the way. up runs the containerised stack, which is much closer in shape to what actually gets served in production. Learn them as two pairs rather than as four loose facts, because every question that mentions a port is really asking which command containerises.
Write the minimal config from memory
Small, offline, and it is the file the next three lessons all refer back to.
- Open a scratch file and write a
langgraph.jsoncontaining only the keys a TypeScript deployment genuinely needs to serve one graph. - Add a second graph under a different name, pointing at a different entrypoint, to prove to yourself the key is a map rather than a single value.
- Write a one-line comment beside each key saying whether it is build-time or runtime information.
- Now list, from memory, the five keys you would have had available if this were a Python project.