Local AI means the AI model runs on your own device instead of a company's servers. After a one-time download it works with no internet, no account and no monthly bill, and your chats stay on your device.
Honest expectations: small local models are slower and less clever than the big cloud chatbots, and they sometimes make things up. They're great for learning, private notes, drafting and tinkering.
Facts and links last checked November 14, 2026.
π Quick start: try it in 30 minutes
Do these in order. Stop whenever you've had enough fun for one day.
Check what you have. On the Mac: Apple menu β About This Mac. Note the Chip (Apple M1 or newer, or Intel) and the Memory (8 GB, 16 GB, 24 GBβ¦). On the iPhone: Settings β General β About β Model Name.
iPhone: install the free app Locally AI (needs iOS 18.1+) or PocketPal AI (older iPhones too). Download one small model on Wi-Fi.
Prove it's offline: turn on Airplane Mode and ask it a question. If it answers, the AI is running on your phone. π
Mac: download Ollama, drag it into Applications and open it once. (Needs macOS 14 Sonoma or newer.)
Open Terminal (β-Space, type Terminal) and run the command for your memory size below. The first run downloads the model (1β2 GB).
Type a question at the >>> prompt. Type /bye to quit.
Liked it? Start Day 1 of the course below.
8 GB Mac
ollama run llama3.2:1b
16 GB or more
ollama run llama3.2
Prefer clicking to typing? LM Studio is a free point-and-click app for Apple Silicon Macs (not Intel).
π± On your iPhone
These apps download a model once, then run it fully on the phone. Pick one to start; Locally AI or PocketPal AI are the easiest.
Pick On-Device in the Shortcuts app's Use Model action. Needs iOS 26, Apple Intelligence turned on, and an iPhone 15 Pro or newer.
Private LLM
$4.99 one-time
Paid, so not needed here. Listed only so you know it isn't free.
Which models fit on a phone?
Small models only: about 1 to 4 billion parameters (β1Bβ4Bβ), downloads of roughly 0.7β3 GB.
iPhone 15 Pro, any 16 or 17 (about 8 GB memory): try Gemma 3 1B, Llama 3.2 3B, Qwen 3.5 4B or Phi-4 Mini.
Older iPhones (6 GB or less): stick to 1Bβ2B models such as Gemma 3 1B, Llama 3.2 1B or Qwen3 1.7B.
Expect limits: slower replies than cloud apps, short memory of the conversation, no live web knowledge, the phone gets warm and the battery drains faster. If the app crashes, pick a smaller model.
Skip MLC Chat and LLM Farm for now: MLC Chat's iPhone app hasn't been updated since September 2024, and LLM Farm is currently off the App Store.
π» On your Mac
Ollama is the easiest free starting point and it's what the course uses. Your Mac's memory decides which models run well.
Rule of thumb: keep the model's download smaller than about half your memory, and close big apps while it runs. Bigger isn't always better: try two models on the same questions and keep the one you like.
Handy Ollama commands
Terminal
ollama list # models you have
ollama pull qwen3:4b # download without chatting
ollama ps # what's running right now
ollama rm qwen3:4b # delete a model to free space
Ollama also offers cloud models (names ending in :cloud). Those run on Ollama's servers, not your Mac, and can cost money. Skip them to stay private and free.
Intel Mac?
Ollama works on Intel Macs running macOS 14 Sonoma or newer, but only on the processor (no graphics speed-up), so it's slow. Stick to 1Bβ3B models.
LM Studio and Apple MLX don't support Intel Macs. For the training days, use the free Google Colab option instead.
Other free Mac tools (optional)
Point-and-click
LM Studio
Free app with a model browser and chat window. Apple Silicon and macOS 14+ only; 16 GB recommended, 8 GB works with small models.
The fast C/C++ engine many apps are built on. Install with brew install llama.cpp or from llama.app, then try llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF (older installs name it llama-cli).
Yes, you can build one yourself. Here's what's realistic at home, for free.
The honest part: training a ChatGPT-sized model from scratch takes huge data-center budgets. Even Karpathy's small nanochat project, which trains a GPT-2-level chatbot, needs about 2 hours on a rented 8-GPU server (roughly $48). So at home you learn with tiny models and you adjust existing small models.
Python
A. Build a tiny GPT from scratch
Andrej Karpathy's video βLet's build GPT: from scratch, in code, spelled outβ walks through every line. His nanoGPT repo trains a baby Shakespeare-writing GPT on a MacBook in about 3 minutes. It's officially βoldβ, but still the clearest way to learn.
Teach an existing model a style or skill with a few dozen examples. On an Apple Silicon Mac use MLX LoRA. On any computer, use a free Google Colab notebook from Unsloth, which borrows a free cloud GPU.
Instead of retraining, let the model look things up in your files first. This is called retrieval-augmented generation (RAG). Day 4 builds one in about 40 lines of Python.
Start with Python. Almost every tutorial, library and course uses it, and it's friendly for beginners.
C/C++ comes later, if you want speed or to see the guts. Read llama.cpp (running models) or Karpathy's llm.c, which trains GPT-2 in plain C. Its simple CPU version is about 1,000 lines in one file, train_gpt2.c.
Words you'll see
Model / weights: the big file of numbers that is the AI.
Parameters (1B, 3B, 8B): how many numbers it has. More is usually smarter but needs more memory.
Quantized / GGUF / 4-bit: squeezed copies of a model so it fits on normal hardware.
Token: a word piece. Speed is measured in tokens per second.
Context window: how much text it can keep in mind at once.
Fine-tuning / LoRA: cheaply adjusting a trained model with your own examples.
Embedding: text turned into a list of numbers so similar ideas can be found.
π 7-day course: about an hour a day
Each day builds on the last. Tick the box when you're done; your progress is saved in this browser only.
0 of 7 days done
DAY 1
Run your first model
Goal: Get a model chatting on your Mac (and phone), completely offline.
Install Ollama (see the Mac section) and run ollama run llama3.2:1b.
Ask 5 different questions: a fact, a how-to, a joke, a summary of a paragraph you paste in, and something tricky.
Turn Wi-Fi off and ask again. Then try the same on your iPhone app.
Write down one thing it did well and one thing it got wrong.
β You're done when: It answers with Wi-Fi off, and you've noted one hit and one miss.
DAY 2
Talk to it well (prompting)
Goal: Get better answers and make your own custom assistant.
Ask the same question three ways: plain, with βexplain step by stepβ, and with an example of the answer you want. Compare.
Give it a role: βYou are a patient tutorβ¦β.
Save that role as your own model with a Modelfile (below), then run ollama create tutor -f Modelfile and ollama run tutor.
Try ollama run llama3.2:1b --verbose to see the speed in tokens per second.
Save as a file named Modelfile
FROM llama3.2:1b
PARAMETER temperature 0.3
SYSTEM """You are a patient tutor. Explain things in short, plain steps
and end with one quick question to check my understanding."""
β You're done when:ollama run tutor answers in your tutor's style.
DAY 3
Python meets your model
Goal: Write a short Python program that chats with your local model.
In Terminal: python3 -m venv ~/ai then source ~/ai/bin/activate (do the activate step each new session).
Install the helper: pip install ollama.
Save the code below as chat.py and run python chat.py (Ollama must be open).
Change MODEL to another model you've pulled and compare.
chat.py
# chat.py: a tiny chat program that talks to your local model
import ollama
MODEL = "llama3.2:1b" # use any model you have pulled
history = []
print("Say something (press Enter on a blank line to quit).")
while (text := input("\nYou: ").strip()):
history.append({"role": "user", "content": text})
reply = ollama.chat(model=MODEL, messages=history).message.content
history.append({"role": "assistant", "content": reply})
print("AI:", reply)
β You're done when: Your own program holds a back-and-forth conversation.
DAY 4
Chat with your own notes
Goal: Build a mini RAG: the AI answers from your files, not from memory.
Run ollama pull nomic-embed-text (a small 274 MB search model).
Make a folder called notes next to your script and drop in a few .txt or .md files (recipes, project notes, a manual).
Save the code below as notes_chat.py and run python notes_chat.py.
Ask something only your notes know, then something they don't. It should say βnot in my notesβ.
notes_chat.py
# notes_chat.py: ask questions about your own notes, 100% on your computer
import glob, math, ollama
CHAT_MODEL = "llama3.2:1b" # or llama3.2 / qwen3:4b with 16 GB+
EMBED_MODEL = "nomic-embed-text" # turns text into numbers for searching
def chunks(text, size=800):
buf = ""
for para in text.split("\n\n"):
if buf and len(buf) + len(para) > size:
yield buf
buf = ""
buf += para + "\n\n"
if buf.strip():
yield buf
def similarity(a, b):
dot = sum(x * y for x, y in zip(a, b))
return dot / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))
pieces = []
for path in glob.glob("notes/*.md") + glob.glob("notes/*.txt"):
for c in chunks(open(path, encoding="utf-8").read()):
pieces.append((path, c))
vectors = ollama.embed(model=EMBED_MODEL, input=[c for _, c in pieces]).embeddings
print(f"Read {len(pieces)} pieces of your notes. Ask a question (blank line quits).")
while (question := input("\nYou: ").strip()):
qv = ollama.embed(model=EMBED_MODEL, input=question).embeddings[0]
ranked = sorted(zip(vectors, pieces), key=lambda vp: similarity(qv, vp[0]), reverse=True)
best = "\n---\n".join(f"[{path}]\n{text}" for _, (path, text) in ranked[:3])
messages = [
{"role": "system", "content": "Answer only from these notes and name the note you used. "
"If the notes don't say, reply: not in my notes.\n\n" + best},
{"role": "user", "content": question},
]
print("AI:", ollama.chat(model=CHAT_MODEL, messages=messages).message.content)
Compare: run mlx_lm.generate --model mlx-community/Llama-3.2-1B-Instruct-4bit --prompt "Why is the ocean salty?" with and without --adapter-path adapters.
Intel Mac, or want a GPU? Open a free Unsloth notebook in Google Colab (Runtime β Run all).
data/train.jsonl (2 of your 20+ lines)
{"messages": [{"role": "user", "content": "What is a sea breeze?"}, {"role": "assistant", "content": "Breezy answer: land heats faster than water, warm air rises, and cool ocean air rushes in to replace it. π"}]}
{"messages": [{"role": "user", "content": "Why do kites fly?"}, {"role": "assistant", "content": "Breezy answer: moving air pushes up on the tilted kite while the string holds it in place. πͺ"}]}
β You're done when: With the adapter, answers start with βBreezy answer:β (or whatever style you taught it).
DAY 7
Wrap-up and next steps
Goal: Lock in what you learned and pick what's next.
Run the same 5 questions from Day 1 on two or three models. Keep a favorite for phone and one for Mac.
Write a one-page βLocal AI setup checklistβ in plain words: device check, install, first model, privacy tips. This is exactly what you'd use to help a friend or neighbor set one up.
Pick one next project: finish the Let's build GPT video, add more notes to your notes chat, or read llama.cpp / llm.c for the C/C++ side.
Ask your Bot Hub assistant for an update to this page whenever you're ready for level 2.
β You're done when: You have your checklist and one next project picked.
π Privacy and safety, in plain words
Local AI is private by design, but a few habits keep it that way.
Download only from trusted places: the App Store, ollama.com, lmstudio.ai, and well-known Hugging Face publishers (Google, Meta, Qwen, Microsoft, ggml-org, unsloth, mlx-community).
Check the seller name in the App Store before tapping Get. Copycat apps exist.
Watch for cloud switches. Some apps can also use online models or web search. Leave those off if you want everything to stay on your device.
Small models make things up. Double-check facts, numbers, medical, legal and money answers.
Be careful running code from the internet, including code an AI writes for you. Read it first, and keep projects inside their own folder and Python environment.
Models are big. Delete ones you don't use (ollama rm name) to free disk space.
Check the license before using a model in anything you sell or offer to others. Most are free for personal use.