Software engineer in Yokohama, Japan β building local-first AI tooling
for Obsidian, the terminal, and the desktop.
- π§ AI that stays on your machine β LLM chat, RAG, and workflow automation that run against your own vault, your own files, your own keys.
- π Obsidian plugins β a family of "Hub" plugins bringing chat, MCP servers, semantic search, dashboards, and WYSIWYG editing into the vault.
- π οΈ Small, dependency-free Go tools β MCP servers, log monitors, file watchers, a PDF splitter. Single binary, no runtime.
- β¨οΈ Japanese input & editor tooling β lightweight SKK for the browser, desktop, Omarchy, and Neovim, because the keyboard is where the work happens.
You cannot search for what you forgot exists.
A personal AI timeline that brings it back to you.
|
Ka-ke-ratta β the name for tossing in a kakera, a fragment. Toss in fragments of your day as text, photos, URLs or speech. Personas, one for each person or interest you care about, remember what matters to them and speak up when it matters.
Built with Go and React on Google Cloud (Firestore, Pub/Sub, Cloud Tasks). β Repository Β· Manual Β· Design notes Β· Lessons from what the AI got wrong |
π₯οΈ gemihub-desktopA local-first desktop workspace that turns your notes, documents, and workflows into context for AI. Everything I've learned from the Obsidian plugins, rebuilt as a standalone app β your files stay yours, the AI comes to them. This is where most of my energy goes from here on. β Extended by gemihub-gdrive, hub-ronginus, hub-accounting, hub-audio-score |
π GemiHubRead, annotate, and ask Gemini about documents in your own Google Drive β with no external database and no lock-in. PDFs, EPUBs, Markdown notes, highlights, memos, dashboards, chat, and workflows all live together in a self-hostable, offline-first web app. |
ποΈ speech-popupA resident voice dictation popup for Windows, Linux, and macOS. Press a hotkey, speak, edit the transcript, then press Enter to paste it into the app you were using. Use browser speech recognition or bring your own OpenAI-compatible, whisper.cpp, Microsoft MAI Transcribe, Gemini, or Vertex AI service. The popup supports English and Japanese, voice commands, retryable recordings, and keyboard-first editing. |
|
The other half of my time goes here. One idea, three engines β pick the one that matches how you want your AI to run, then plug the companion plugins into it.
β¨ Gemini HelperGoogle Gemini, desktop and mobile. AI chat, workflow automation, RAG, and an LLM Wiki (OKF). |
π LLM HubBring your own backend: Gemini, OpenAI, OpenRouter, Grok, Ollama, or a CLI β all behind one UI. |
π Local LLM HubFully private, no cloud required. Vault tools, MCP servers, RAG, encryption, and edit history. |
Companion plugins connect to whichever engine you installed β they supply no models of their own, they borrow yours:
- π£οΈ Discussion Hub β AI plugins register their models at runtime, so models from different providers can argue in the same structured discussion. Assign roles, run turns, let them conclude, then have a separate set of voters pick a winner.
- π Dashboard Hub β AI is optional, but connect an engine and it can answer questions about selected text or reading memos, generate and edit a Base, rewrite Timeline posts, and build and run Workflows. It shares its Base directory and Timeline name with the connected plugin, so date-based questions read one day's file instead of scanning everything.
Small, single-binary servers that give AI agents safe access to real tools and data β the same ones my own apps run on.
π‘οΈ mcp-gatekeeperA security-focused MCP gateway that lets AI assistants run shell commands under fine-grained policy β argument validation, env filtering, bubblewrap/WASM sandboxing. Bridge mode exposes any stdio MCP server over HTTP with auth, rate limiting and OAuth 2.0 (PKCE). |
πΊοΈ geo-mcpPlace search and reverse geocoding from self-hosted OpenStreetMap and GeoNames data β no external API calls at runtime. Powers kakeratta's location features in production on a shared 4 GiB VM. |
π ragujuaryCLI + MCP server for RAG on Google Gemini β managed Gemini File Search stores, or local multimodal embeddings (text, images, PDF, audio, video) with incremental indexing and Ollama / LM Studio support. |
π mcp-gcalA standalone MCP server for Google Calendar and Gmail β stdio for a single user, or HTTP with per-user Google OAuth. |
I also build a family of lightweight SKK Japanese input tools around the same familiar key bindings and conversion workflow β no system-wide IME required.
π chrome-skk-liteSKK directly inside Chrome input fields, plus a clipboard input window for places extensions cannot reach. The same engine is also available as a GemiHub Desktop plugin. |
π¬ skk-popupA cross-platform popup for Linux, Windows, and macOS, including Omarchy. Call it with a hotkey, compose with SKK, then paste the result into any app. |
π skk-lite.nvimPure Lua SKK for Neovim insert and command-line modes, with no Node.js or Denops runtime required while typing. |
π§© Beyond the pinned repos
Obsidian / knowledge tools β obsidian-wysimark (WYSIWYG Markdown editing that keeps files pure Markdown), obsidian-work-log, obsidian-gitlog-summary, obsidian-gdrive-vault, obsidian-gemihub
GemiHub ecosystem β gemihub-gdrive (Drive sync), hub-ronginus (AI debate arena), hub-accounting (Beancount-compatible bookkeeping), hub-audio-score (audio β sheet music), llm-hub-skills
Go & infra β logmon-go, minipdfsplit (stdlib-only PDF page splitter β xref streams, object streams, RC4/AES-encrypted PDFs), go-touch, touch_and_go
Editor & web β nvim-gemini-helper (Gemini + RAG in Neovim), http-file.nvim, wysimark-lite, mdwys, socket.io-reqev, svg_canvas_chart
βοΈ I write about AI tooling and development on Zenn β issues and PRs are always welcome on any of my repos.







