I build the parts AI agents run on — MCP servers, a job contract, a pipeline engine — and then the tools that check whether any of it works. Each checker was tried on real outside projects before release. Independent, in Türkiye (UTC+3); some evenings, Godot.
directory · games & apps · all projects · where the numbers come from · hire me · x.com/Furkiozkann
English · Türkçe · 15-second reel: GIF · MP4 with sound
|
🛡️ mcp-vet — audits an MCP server before you install it. Reads the source, not the star count; every finding carries a |
🧩 godot-refcheck — finds the broken references and dead signal connections Godot only reports when a scene loads, or never. Repairs the ones with a single provable answer. Checked against 237 real projects. |
|
🗺️ buradane — "what do I need, and where is the nearest one?" 167,829 OpenStreetMap places across all 81 provinces of Türkiye. FastAPI + PostGIS, Next.js + MapLibre. |
🔎 repo-vet — your README is a promise. It tries the install command, the badges, the links and the release chain over the GitHub API, without cloning. Calibrated on 29 public repositories so it stays quiet on the ones that work. |
Every ▶ link opens a GitHub Pages build in the browser: no install, no account. Each was checked to return 200 when this list was written. · Her ▶ bağlantısı tarayıcıda GitHub Pages sürümünü açar: kurulum yok, hesap yok.
- 🌊 canli-dunyalar — single-file living 3D worlds in Three.js, tuned for laptop iGPUs · laptop ekran kartına uygun, tek dosyalık canlı 3D dünyalar.
▶ Vapur · ▶ Balon - 🚀 isik-tuneli — endless space-runner with real bloom and live-synthesized audio · ışımalı, sesi anlık sentezlenen sonsuz uzay koşusu. ▶ Play
- 🎵 tek-tus-kosu — one-button rooftop runner with obstacles on the music's beat grid · engelleri müziğin vuruşuna dizilen tek tuşlu çatı koşusu. ▶ Play
- 🔄 yercekimi-cevir — no jump button: one key flips gravity across 20 precision rooms · zıplama yok, tek tuş yerçekimini çevirir. ▶ Play
- ⛏️ derin-kazi — dig, sell, upgrade and reach the core at 250 m · kaz, sat, geliştir, 250 m'deki çekirdeğe in. ▶ Play
- 🪝 kanca — grappling-hook platformer about carrying momentum · tavana tutun, salın, hızını taşı. ▶ Play
- 📖 masal — personalised Turkish bedtime stories with colouring pages · çocuğa özel uyku masalları ve boyama sayfaları. ▶ Open
- 🗺️ buradane — nearest toilet, park or drinking water across Türkiye from OpenStreetMap · Türkiye'de en yakın tuvalet, park, içme suyu. (no hosted demo yet · henüz canlı demo yok)
Check other work — repo-vet: tries a README's install command, badges and links over the API · claude-code-intelligence: where your Claude Code tokens went, and when the quota resets · mcp-census: why the MCP Registry has three sizes · repo-ratchet: picks the repository to open next
Agent infrastructure — ai-job-gateway: submit, poll, signed webhook, one contract · ai-workflow-engine: YAML DAGs validated before they run · model-comparison-harness: one prompt, N providers, a judge · prompt-template-manager: prompts as diffs · asset-provenance-toolkit: which model made this file, written into the file
MCP servers for Claude Code — mini-creative-toolkit: 23 CPU-first media tools · local-notes-search-mcp: ask your own notes · voice-io-mcp: speech in and out, no key · nvidia-nim-mcp: NVIDIA's free tier, with fallbacks
Apps and agents — ajans-os: an agency OS that survives being killed mid-task · turkce-ajanlar ▸: Claude Code sub-agents that think in Turkish, searchable in the browser · godot-2d-sablon: a Godot starter whose jump was measured
▸ opens in the browser, nothing to install. The games and the other browser apps are listed under Games & apps.
Four repositories share one job contract and no Python dependency. Four more exist to check work — a repository's README, an MCP server's source, a Godot project's references, a Claude Code session's token spend — and each was calibrated against real outside projects before it was published. Every repository, searchable, in one page →
Every public repository, with its test count — 5,247 tests, each traced to the run that printed it
Agent infrastructure, MCP and developer tooling
| Project | What it does | Tests | |
|---|---|---|---|
| 🧩 | godot-refcheck | Godot names a broken reference only when that scene loads, and a dead signal connection never. Finds both, and repairs what has one provable answer. | 133 |
| 🔎 | repo-vet | Your README is a promise: it tries the install command, the badges, the links and the tags, over the API, without cloning. | 103 |
| 🛡️ | mcp-vet | Reads an MCP server's source before you install it. 31 rules, file:line on every finding, never runs what it audits. |
319 |
| 🗺️ | buradane | The nearest toilet, park, fountain or library. 167,829 OSM places; all 973 district centres covered within 15 km. | 347 |
| 📊 | claude-code-intelligence | Where the tokens went and when the limit resets. No prompt or file content exists in any type — a privacy review is a grep. |
273 |
| 🎨 | mini-creative-toolkit | 23 CPU-first media tools in one MCP server. 22 report "network": "none" in their own payload, not in a README. |
327 |
| 🏛️ | ajans-os | An agency OS built research-first. Its acceptance run is killed mid-task, reloaded from disk and resumed. | 142 |
| 📚 | masal | A bedtime story around one child's name. Six themes, a branch on page three — twelve readings. | 92 |
| 🇹🇷 | turkce-ajanlar | 70 Claude Code sub-agents that think in Turkish, not translate into it. Exported to Cursor, OpenCode, Copilot, Codex. | 160 |
| 🔁 | repo-ratchet | Decides which repository to open next from twelve measured signals — and will not record an improvement that left no commit and no passing check. | 131 |
| 🔖 | asset-provenance-toolkit | Which model made this file, written into the file. JPEG gets a marker spliced in with no re-encoding. | 125 |
| ⚡ | nvidia-nim-mcp | NVIDIA NIM's free tier in Claude Code. Two of its seven tools need no API key at all. | 80 |
| ⚖️ | model-comparison-harness | One prompt, N providers, one report — plus a judge model scoring each answer against your own rubric. | 74 |
| 🔗 | ai-workflow-engine | Pipelines as YAML DAGs, validated before they run. An undeclared dependency is rejected at load time, typo and all. | 80 |
| ✍️ | prompt-template-manager | Prompts versioned in git, so a change is a diff instead of an argument. StrictUndefined throughout. |
61 |
| 🔍 | local-notes-search-mcp | Ask your own files a question, in any language the multilingual model covers. No server, no API key, no network. | 64 |
| 🔢 | mcp-census | "How many MCP servers are there?" asked three ways, giving three different numbers — and a measurement of why. | 55 |
| 🎙️ | voice-io-mcp | Speech in and out, needing no key at all. Refuses transcribe the audio at .env before it opens the file. |
35 |
| 🛰️ | ai-job-gateway | The contract fal.ai, BFL and RunPod each reached independently. Idempotency across restarts, SSRF-guarded webhooks. | 156 |
| 🚀 | nova-drift | Endless browser space-runner. Real bloom, live-synthesized audio — not one sound file in the repo. | 38 |
| 🗂️ | Furkiozknn.github.io | The project directory, rebuilt every Monday from each repository's own project-meta.json. Nothing on it is hand-written. |
37 |
Games — Godot 4, each one tested headlessly in CI
These counts are large because the suites play the game: yercekimi-cevir's 841 checks include finishing all 20 rooms and confirming a medal in each. Every game is built for the browser by its own CI and published to GitHub Pages; the ▶ links open it.
| Project | The one idea it is built on | Tests | |
|---|---|---|---|
| 🎵 | tek-tus-kosu ▶ Play in browser |
One button, and every obstacle laid on the music's beat grid. A post-run histogram shows how early or late each press landed. | 961 |
| 🔄 | yercekimi-cevir ▶ Play in browser |
There is no jump button — one key flips gravity and you fall onto the ceiling. 20 hand-built precision rooms. | 841 |
| ⛏️ | derin-kazi ▶ Play in browser |
Dig, sell, upgrade, go deeper — with the fuel gauge as the real timer. Five layers down to the core at 250 m. | 477 |
| 🪝 | kanca ▶ Play in browser |
Hook the ceiling, swing, release at the right moment and carry the momentum. Medal times measured by a bot, not guessed. | 115 |
| 🧱 | godot-2d-sablon | Two Godot 4.7 starter projects whose jump feel was measured, not guessed: coyote time, jump buffering, variable jump height. | 21 |
| Total, across 26 repositories with suites | 5,247 |
Every test count is traced to the suite run that printed it. The full ledger →
Metadata in every repository, and what runs while nobody is watching
Each one has a project-meta.json at its root: identity, version, status,
platform, the images its README actually shows, and the test count together
with the runner line it came from and the date of that run.
Mechanical fields are read from the repository; editorial fields are written
by hand and checked against the code. Nothing is filled in with a guess — an
unknown value is null rather than a plausible-looking string, and a test
count with no source line does not go in the file at all.
The schema and the rule it follows →
The schema and the rule it follows →
Drawn from the seven workflow files in .github/workflows and the site's own; projeler.yml runs only on demand and is left out. Times are UTC.
flowchart LR
push(["every push"]) --> ci["ci.yml<br/>schema tests · own metadata ·<br/>every published number agrees ·<br/>workflow YAML parses"]
push --> gates["guvenlik.yml · baglanti.yml<br/>zizmor · betterleaks ·<br/>local links and anchors"]
daily(["daily 05:00"]) --> den["denetim.yml<br/>reads every repo's CI log<br/>and project-meta.json"]
den -->|"findings changed"| issue1[["one 'Ekosistem denetimi' issue<br/>comment, or close when clean"]]
mon1(["Mon 04:30"]) --> yen["yenile.yml<br/>clone all · uret.py"]
yen --> gate{"dogrula.py<br/>koruma.py<br/>≤ 8 repos changed"}
gate -->|"pass + token"| meta["push project-meta.json<br/>to each repo"]
gate -->|"otherwise"| sum["diff in the run summary,<br/>nothing written"]
mon2(["Mon 05:20"]) --> site["furkiozknn.github.io<br/>rebuilt from every<br/>project-meta.json"]
mon3(["Mon 06:00"]) --> hft["haftalik.yml<br/>derle.py · haftalik.py"]
hft -->|"activity this week"| issue2[["one 'Haftalık özet' issue<br/>post drafts as a comment"]]
The weekly summary and the project index are never committed: a committed index goes stale on the next push, and a weekly bot commit would inflate the contribution graph with work nobody did. They live in issues and run artifacts instead.
How I work — tests before claims, hermetic CI, honest READMEs
|
🧪 Tests before claims Every count here is re-derived, not remembered. This page has lost three numbers that way: a “1,426 tests” figure that turned out to be a grep rather than a suite, a 1.4 MB load that measured 0.7 MB, and a commit count taken from clones that had not been fetched, undercounting by 53. |
🔒 Hermetic CI Suites run offline, so a CDN outage cannot redden a build. The gate is tested too — |
📄 Honest READMEs Known limits are listed, not hidden: a measured seven-minute upscale stall on integrated graphics, a gateway column headed deliberately absent, voice cloning left out on purpose. |
|
⚖️ Licences checked down the tree
|
🔧 Windows and Turkish locales Where things break that nobody documents: |
🔢 No generated stat cards Every badge on this page carries a hand-checked value, traced to the run that printed it. A number is checkable, or it is not on the page. Check them → |
A number on this page is checkable, or it is not on the page. Every test count is re-derived from the run that printed it — the ledger.
Work with me — MCP and agent infrastructure, and turning code that works into code that ships. Remote · Türkiye · European hours. What I can be hired for, and what it costs →
Project directory · Where the 5,247 comes from · project-meta.json · Hire me · All repositories · @Furkiozkann






