I work as an AI engineer and full-stack developer. Two things keep me busy: building AI agents and developer tooling that are safe and transparent to use, and shipping production web applications end to end.
On the AI side I build terminal-first coding assistants, agent workflows, and LLM integrations. On the product side I build full-stack applications with TypeScript, React and Next.js on the front, Node.js and PostgreSQL behind them.
Make the tool useful. Make the action visible. Keep the human in control.
| Project | What it does | Stack |
|---|---|---|
| iooi CLI | A safety-first AI coding assistant for the terminal with provider support, permission modes, sessions, file tools, and Git workflows. | TypeScript · Node.js |
| AI Coding Agent | A terminal-based AI pair programmer with interactive chat, agentic tool use, context awareness, and safe project editing. | Python · LLM APIs |
| OpenCode fork | An open-source codebase I study to go deeper on terminal-first AI coding systems. | Go |
Alongside these I build client and internal products (dashboards, admin panels, marketing sites, and a Flutter mobile app). Those repositories are private, but the same engineering standards apply: typed code, reviewable changes, and no silent side effects.
- AI agent systems: tool use, permission and approval flows, session and context management, provider switching.
- Developer tooling: CLI design, terminal UX, Git-aware workflows, automation that stays explainable.
- Full-stack delivery: Next.js and React interfaces, typed API layers, PostgreSQL schemas and migrations, auth and admin panels.
TypeScript JavaScript Python Node.js React Next.js PostgreSQL Dart · Flutter Go Git CLI tooling LLM integrations
- Actions a tool takes should be visible and reversible.
- Types, migrations, and tests over "it works on my machine".
- Small, focused repositories that do one job properly.
- Learn an ecosystem by shipping something real in it.
The best way to reach me is through GitHub: