Stay sharp while your AI does the work.
You're shipping more than ever and understanding less. devcoach fixes that with one lesson at a time, delivered right after your agent completes a task.
- Install in 30 seconds โ get started now
- Why it matters โ read the philosophy
What happensโ
You work on a task with your AI agent as usual. When it finishes, devcoach appends a lesson:
๐ devcoach ยท TypeScript ยท Level: Mid
<strong>Promise.allSettled vs Promise.all โ don't let one failure sink the batch</strong>
Promise.all rejects the moment any promise rejects, and you lose the results of
the ones that already succeeded. For independent work (fan-out fetches, batch
writes) that's usually the wrong default.
Promise.allSettled always resolves, giving you a status for every promise:
const results = await Promise.allSettled(ids.map(fetchUser));
const ok = results.filter(r => r.status === "fulfilled").map(r => r.value);
Use Promise.all when the tasks are genuinely all-or-nothing; reach for
allSettled when partial success is meaningful and you want to report failures.
Did that land? โ
know ยท โ don't know ยท โญ skip
Context & personalizationโ
Every lesson is tied to where it happened: your project folder, repository, branch, commit hash, and which editor you're using (VS Code, etc.). devcoach stores all of this locally, so lessons are tied to their context.
You can also personalize your coaching with a learning notebook at ~/.devcoach/learning-state.md. This file is yours to edit and annotate:
- Note what you understand โ mark concepts that have sunk in after a lesson.
- Flag areas for deeper work โ if something didn't click, write it down.
- Track patterns you see โ if you notice recurring mistakes or gaps, devcoach learns from your notes.
The notebook affects your coaching directly:
- Lessons prioritise topics you've flagged as needing work
- Depth is calibrated based on your written notes, not just your emoji feedback
- devcoach avoids re-teaching angles you've marked as understood
- It surfaces related concepts when it detects gaps in your notes
Everything stays private and local. The notebook is optional โ devcoach works without it โ but it transforms coaching from generic to genuinely personal to your learning journey.
How to get startedโ
- Install โ choose your method (Homebrew, Claude Code plugin, npx, or Claude Desktop)
- Run onboarding โ build your knowledge profile
- Start working โ coaching happens automatically
Everything's local. No data leaves your machine. One SQLite file.
The three install methodsโ
- Homebrew โ macOS/Linux. Get the CLI too.
- Claude Code plugin โ one-click, bundles everything.
- npx โ no install, runs immediately.
See all install methods for other options.
Why devcoach existsโ
AI agents now write much of our code. Velocity is up. So is a quieter cost: when the machine does the thinking, it's easy to accept the result and learn nothing from it.
Competence is built slowly. You can't cram it on demand. The moment you need it most โ a correctness bug the model missed, a 2 a.m. outage, an architectural call the AI got wrong โ the depth either exists or it doesn't.
devcoach's bet is simple: a few minutes of genuine learning, delivered in context and spaced across the work you already do, compounds. It's learning on the job, automated.
Privacy by designโ
Everything stays on your machine. No telemetry, no accounts, no calls home. Just one SQLite file.
Screenshotsโ
Knowledge mapโ


Lesson historyโ


Roadmap & communityโ
- Vision & roadmap โ free now, teams and courses planned
- GitHub Discussions โ feature requests, feedback, questions
- Star on GitHub โญ
All guidesโ
- How it works โ the coaching loop and decision flow
- Coaching in your agent โ your first lesson and the feedback loop
- Web dashboard โ manage your knowledge map
- CLI reference โ all commands
- Configuration โ rate limits, data location
- MCP server reference โ all tools and resources
- Contributing โ fork, develop, submit a PR
- License & commercial use โ free & open source (AGPL-3.0), plus the commercial option