Software should stay understandable when it gets clever.
I'm Kaan Demirel. I build small, composable tools around AI, automation, and local-first software. The point is not autonomy. It is useful systems whose decisions and failure modes stay visible.
Kaan Demirel
Working from Turkey
How I build
Small pieces, clear seams.
I prefer focused tools that do one job well, compose cleanly, and remain replaceable when the surrounding system changes.
AI suggests; people approve.
AI can draft, filter, and summarize. Consequential actions should still expose what will happen and wait for an explicit decision.
Own the failure modes.
Local-first and self-hosted systems make storage, recovery, and operational tradeoffs visible instead of hiding them behind a service boundary.
The work behind the words
Two projects show the range: one turns engineering standards into agent tools; the other keeps router diagnostics useful before AI enters the loop.
- doctrineSoftware engineering discipline grounded in named standards, shipped as a Claude Code plugin and an MCP server.claude-code-plugin · mcp-server · engineering-disciplineOpen project
- keencliRust CLI for Keenetic router diagnostics: collects snapshots, filters noisy logs, masks identifiers, and keeps AI analysis optional.rust · cliOpen project
Working range
The stack changes with the problem. These are the tools currently closest to the work.
- Rust
- Python
- TypeScript
- Shell
- Fedora
- Podman
- Claude Code
