Learn LangGraph by building agents that run entirely on your hardware.
A hands-on tutorial series for building LangGraph agents with local LLMs via Ollama. Each notebook teaches a concept from scratch - no cloud APIs required.
You'll learn:
- LangGraph fundamentals: StateGraph, nodes, edges, reducers
- Tool calling and the ReAct pattern
- Memory and conversation persistence
- Human-in-the-loop workflows
- Self-reflection and critique patterns
- RAG patterns: Basic RAG, Self-RAG, CRAG, Adaptive RAG, Agentic RAG
- Build a Perplexity-style research assistant
- Python 3.12+
- Ollama running locally or on your LAN:
# Install Ollama curl -fsSL https://ollama.ai/install.sh | sh # Pull a model ollama pull llama3.2:3b
Option 1: Install from PyPI (Recommended)
# Install the package
pip install langgraph-ollama-local
# With all features (RAG, persistence, notebooks)
pip install langgraph-ollama-local[all]
# Verify connection
langgraph-local checkOption 2: Install from source (for development)
git clone https://github.com/AbhinaavRamesh/langgraph-ollama-tutorial.git
cd langgraph-ollama-tutorial
# Install with all dependencies
pip install -e ".[all]"
# Verify connection
langgraph-local checkcp .env.example .env
# Edit .env with your settings| Variable | Default | Description |
|---|---|---|
OLLAMA_HOST |
127.0.0.1 |
Ollama server address |
OLLAMA_PORT |
11434 |
Ollama server port |
OLLAMA_MODEL |
llama3.2:3b |
Default model |
TAVILY_API_KEY |
(optional) | For web search in CRAG tutorials |
For CRAG and Perplexity-style tutorials, get a free Tavily API key:
- Sign up at https://tavily.com
- Get your API key from the dashboard
- Add to
.env:TAVILY_API_KEY=tvly-your-key-here
To host Ollama on a GPU machine accessible across your network, use ollama-local-serve:
pip install ollama-local-serve[all]
make init && make up
# Dashboard at http://your-server:3000| # | Notebook | Documentation | What You'll Learn |
|---|---|---|---|
| 01 | Chatbot Basics | docs | StateGraph, nodes, edges, message handling |
| 02 | Tool Calling | docs | Tools, ReAct loop from scratch |
| 03 | Memory & Persistence | docs | Checkpointers, threads, conversation history |
| 04 | Human-in-the-Loop | docs | Interrupts, approvals, resume |
| 05 | Reflection | docs | Generate, Critique, Revise loops |
| 06 | Plan & Execute | docs | Structured outputs, multi-step planning |
| 07 | Research Assistant | docs | Capstone: all patterns combined |
| # | Notebook | Documentation | What You'll Learn |
|---|---|---|---|
| 08 | Basic RAG | docs | Document loading, chunking, embeddings, ChromaDB |
| 09 | Self-RAG | docs | Document grading, hallucination detection, retry loops |
| 10 | CRAG | docs | Web search fallback, corrective retrieval |
| 11 | Adaptive RAG | docs | Query classification, strategy routing |
| 12 | Agentic RAG | docs | Agent-controlled retrieval, multi-step |
| 13 | Perplexity Clone | docs | Citations, source metadata, follow-ups |
Run any notebook:
jupyter lab examples/Index your documents and start querying:
from langgraph_ollama_local.rag import DocumentIndexer, LocalRetriever
# Index documents
indexer = DocumentIndexer()
indexer.index_directory("sources/")
# Query
retriever = LocalRetriever()
docs = retriever.retrieve_documents("What is Self-RAG?", k=4)langgraph-ollama-tutorial/
├── examples/
│ ├── core_patterns/ # Tutorials 01-07
│ │ ├── 01_chatbot_basics.ipynb
│ │ └── ...
│ └── rag_patterns/ # Tutorials 08-13
│ ├── 08_basic_rag.ipynb
│ └── ...
├── docs/
│ ├── core_patterns/ # Core pattern documentation
│ └── rag_patterns/ # RAG pattern documentation
├── sources/ # PDF sources for RAG indexing
├── langgraph_ollama_local/
│ ├── config.py # Configuration
│ ├── cli.py # CLI tools
│ └── rag/ # RAG infrastructure
│ ├── embeddings.py # Local embeddings
│ ├── indexer.py # Document indexing
│ ├── retriever.py # Document retrieval
│ └── graders.py # Quality graders
├── tests/ # Test suite
└── pyproject.toml
langgraph-local check # Verify Ollama connection
langgraph-local config # Show current configuration
langgraph-local list # List available examplesmake test # Run tests
make test-int # Integration tests (requires Ollama)
make lint # Linting
make format # Format codeThese tutorials are adapted from the official LangGraph documentation (MIT License), optimized for local Ollama deployment.
MIT License