emarco177/langgraph-course: A Branch-Per-Project LangGraph Course Repository
Hands-on LangGraph course repo for building production-grade LLM agents with Agentic RAG, ReAct, and reflection workflows.
At a glance
- What is it?
- The repository is the companion code for a paid Udemy course, organised as one branch per agent pattern. It is useful if you want to read LangGraph graphs commit by commit. It is not a library, not a maintained framework, and not installable as a dependency.
- Who is it for?
- Adopt this repository if you already know LangChain basics and want a sequence of LangGraph graphs you can read commit by commit, particularly the Agentic RAG branch with its grading and routing nodes. Do not adopt it if you need a pip-installable package, a maintained abstraction, or code you can lift into production without rewriting.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 60 days ago.
- What is it written in?
- GitHub does not report a main language for this repository.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What the repository is, and what it is not
This is course material, not a library. The README frames it plainly: every branch is a project, every commit is a lesson. That structure is the whole product. You clone the repository, pick a branch such as project/agentic-rag, and step through commits with git log --oneline to watch a LangGraph application appear node by node. The five branches named in the repository map cover Agentic RAG, a ReAct agent, a minimal reflection demo, a full reflection agent, and a reflexion agent that the README says learns from past runs. The intended audience is someone who wants to build LLM agents with LangGraph and prefers reading a working graph over reading API documentation. The repository has no releases, so there is no versioned artifact to pin. There is nothing to import from it into another project. Treat it as a set of annotated examples you read and adapt, and judge it on whether the examples are legible, not on whether it ships a stable interface.
The Agentic RAG branch as a graph, node by node
The README's lesson table is the clearest description of the architecture available. The branch builds up in eleven commits: project kick-off, folder structure, an ingestion pipeline that loads and embeds data, graph state for passing memory between nodes, a retrieve node, a grade-docs node that filters retrieved documents by relevance, a web-search node using Tavily, a generation node, then graph wiring with fan-in, fan-out and conditionals. The last two lessons add self-critique and an adaptive router that the README describes as dynamic tool selection. So the data flow is: ingest and embed, retrieve candidate documents, grade them, fall back to web search when grading rejects the context, generate, then let the model critique its own output and route accordingly. The grade-docs node is the part worth studying closely, because it is where a retrieval pipeline stops being a similarity search and starts making decisions. The parallel fan-out into retrieval and web search, joined before generation, is the other structural idea the branch demonstrates. Note that the README gives lesson titles and commit hashes but no code excerpts, so the exact prompt shapes and state schema have to be read from the branch itself.
Getting a branch running with Poetry
The Quick Start section is short and specific. Clone the repository, enter it, check out a project branch (the README uses project/agentic-rag as the example), run poetry install, then poetry run python main.py. Dependencies are managed with Poetry, so you need Poetry on the machine before any of this works. Configuration goes in a .env file at the repository root. The README lists OPENAI_API_KEY as required, TAVILY_API_KEY as optional and needed only for the web-search lessons, LANGCHAIN_API_KEY and LANGCHAIN_TRACING_V2 as optional for LangSmith tracing, and PYTHONPATH set to the current directory. Two things are worth flagging. First, the clone URL in the README is misspelled as langgaph-course in both the clone command and the cd command, while the repository map links point at the correctly spelled langgraph-course path; expect to correct the URL by hand. Second, PYTHONPATH=$(pwd) in a .env file is a shell-style assignment that python-dotenv will load as a literal string, so the import paths the lessons rely on may need PYTHONPATH exported in the shell instead. Neither is fatal, but both cost time on a first run.
Where the material is thin
There is no test suite mentioned anywhere in the README, no CI configuration described, and no pinned Python version. For a teaching repository that is a defensible choice, since the point is the graph structure rather than the harness. It does mean you cannot tell from the README whether a branch still runs against the current LangGraph release, and there are no releases to check against. The lesson table covers only the Agentic RAG branch in detail. The ReAct, reflection, reflection-agent and reflexion-agent branches are described in one table row each, so if you came for the reflexion pattern specifically, the README tells you it exists and that it learns from past runs, and nothing more. The README also leans on the paid Udemy course for the surrounding explanation, including a Discord server described as private and for course alumni. The repository is usable without the course, but the README is written on the assumption that you have it, which shows in how little prose accompanies each branch.
A different approach: LangGraph's own tutorials
The acknowledgements point at the LangChain and LangGraph documentation and tutorials, and that is the honest alternative. The difference is in sequencing rather than subject matter. The official tutorials are task-oriented pages that show a finished pattern, and they are maintained alongside the library, so the code matches the version you installed. This repository inverts that: it shows intermediate states, which is useful precisely because a working graph hides how it was assembled. The cost is that intermediate states are the part most likely to drift when the underlying library changes, and there is no release process here to signal when that has happened. If you want to understand why a conditional edge sits where it does, the commit sequence is better than a finished tutorial. If you want code that runs against the version of LangGraph you just installed, the official tutorials are the safer first stop, and this repository is the second pass.
Maintenance, licence and what to check before depending on it
The README states that all future updates are free and that a one-time enrollment grows with the ecosystem, which is a statement about the course, not a commitment about the repository. The repository is not archived and the last push is recent, but with no releases and no changelog there is no way to tell from the supplied material which branches were touched in that push. The licence is Apache-2.0, which permits commercial use and modification provided the licence and notices are preserved, but the README does not say which files the licence covers, and course code with an accompanying paid video product is exactly the situation where you should read the LICENSE file at the repository root rather than assume. This is not legal advice. Practically: check the LICENSE file, check the branch's pyproject.toml for the Python version and LangGraph constraint, and run poetry install on a throwaway environment before you build anything on top of a branch.
Editorial conclusion
Adopt this repository if you already know LangChain basics and want a sequence of LangGraph graphs you can read commit by commit, particularly the Agentic RAG branch with its grading and routing nodes. Do not adopt it if you need a pip-installable package, a maintained abstraction, or code you can lift into production without rewriting. Before relying on it, verify that the branch you want still installs under your Python version, that the commit hashes listed in the README still resolve on the branch after a rebase, and read the Apache-2.0 LICENSE file at the repository root to see what it actually covers.
Community notes