🚀 Quick start¶
Goal: installed binary → “oh, it edited my file” in about a minute. ⏱️ Secondary goal: smile at least once. 😄
- 🔌 Point at a model === "🍎 oMLX" Green doctor = green light. Red doctor = “have you tried turning the model on?” === "🦙 Ollama" === "🌌 Other" Flags, env, Studio Settings, or a stack:
ollama serve slmcode config set provider ollama slmcode config set model qwen2.5-coder:14b slmcode config set endpoint http://127.0.0.1:11434 slmcode doctorDetails → Providers. Bring your own brain.slmcode stack list slmcode stack apply deepseek # needs DEEPSEEK_API_KEY or /auth set slmcode doctor - 🛝 Init a playground
mkdir -p /tmp/slm-demo && cd /tmp/slm-demo printf 'package main\n\nfunc Hello() string { return "hi" }\n' > hello.go printf '# Agents\n\nPrefer tiny Go edits and clear godoc comments.\n' > AGENTS.md slmcode init # detects Go and applies the go pack for youinitprints the pack it picked (pack: go (detected)). Override it withslmcode blocks apply <pack>if you disagree —slmcode blocks listshows all thirteen. Edit.slmcode/PROJECT.mdwith two honest sentences about the stack. (Lying to your own memory file is a bold strategy. We don’t recommend it.) - 🎯 Run the pipeline Pass checklist ✅ - [ ] the run ends with a Changes block naming
hello.goand a+N −Mcount - [ ]hello.gohas a real// Hello …comment - [ ]slmcode boardshows completed work - [ ]slmcode session listhas a run - [ ].slmcode/SKILLS.mdexists (the flywheel sneezed) Got⚠ no files changedinstead? That is the harness telling you the truth: the model claimed an edit it never made, and the evidence gate refused it. The Next lines under it are the ones to follow —slmcode task show T1prints the reviewer's verdict, the gate that refused the task and the (empty) diff of its focus files. Smaller scope and a sharper acceptance line fix this more often than a bigger model does. - 🕹️ Open a cockpit Pick your fighter. Both talk to the same harness. 🥊 !!! warning "Open the URL Studio prints, not
slmcode studio # clicky mode — open the URL it PRINTS # and/or slmcode # premium TUI — keyboard modehttp://127.0.0.1:7420" Studio can read this repo, rewrite its config, store your API keys and start runs, so it is behind a per-launch session token: the URL it prints looks likehttp://127.0.0.1:7420/?t=8f3c…. A barehttp://127.0.0.1:7420/gets a 401 page telling you to go back to the terminal. Opening the tokenised URL once mints a cookie and the token stops appearing in the address bar. → Studio security model !!! note "Built from source? Runmake bootstrapfirst" A released binary ships the Studio SPA. A binary you built yourself withgo builddoes not — the SPA is a Vite app inweb/that has to be built intocmd/slmcode/ui/beforego:embedcan pick it up. Without it,slmcode studiostarts normally and serves a page saying the UI has not been built, and prints the same on startup. Fix:web/package-lock.jsonis currently out of date withweb/package.json, sonpm cicannot run;make bootstrapsays so and falls back tonpm install, which regenerates the lock — commit it. → Studio: building the UI · Troubleshooting
Level-ups 🎮¶
# Safer on real repos (stage first, apply later)
slmcode config set permission review
slmcode run -v "Add a unit test for Hello()"
slmcode apply # interactive: a/s/e/v/r/A/q per file (--all to apply everything)
# Help small models think twice (literally)
slmcode config set think_passes 2
slmcode config set retries 2
# One specialist, no full circus
slmcode run --agent explorer "Where is Hello defined?"
🦃
Turkey rule reminder: tiny prompt, tiny scope, tiny win. If you ask a 7B model to “refactor the platform”, it will invent a platform.
Where next? 🗺️¶
- 🧠 Concepts — why the loop looks like this
- 🧭 User guide — daily driving without chaos
- 🧪 Recipes — copy-paste workflows
- 🖥️ TUI & chat — terminal UX deep dive
☀️ Made with ♥ by UnicoLab