Software by Tobias S. Keller

Built with curiosity, shared with purpose.

As a developer, much of what I built is possible because other people share their work as open source. I put real thought into these projects and publish them to give something useful back to that community.

Some of these projects solved a problem I had. Others started as experiments, or simply because I wanted to explore an idea or a technology and see how far it could go.

Selected work

Some projects, ready to explore.

All repositories on GitHub
Handcrafted & AI-assistedInvoicing platform

Servobill

Modern web-based invoicing on your own infrastructure.

A self-hostable invoicing and expense platform for technically minded freelancers and small businesses, deployable serverlessly on AWS or with Docker.

Next.jsTypeScriptGraphQLAWSPostgreSQL
Explore project
NAS Drive showing thumbnails, folders and file details
AI-engineeredSelf-hosted file manager

NAS Drive

The file manager your NAS deserves.

Host the files already on your NAS with the usability of a professional cloud, including flexible browsing, rich previews, secure sharing and upload-enabled shares.

RustReactTypeScriptSFTPS3 API
Explore project
dbOSK showing a database table in its native macOS interface
Vibe-codedNative macOS app

dbOSK

A native database workbench that feels at home on macOS.

A fast SwiftUI and AppKit database client for PostgreSQL, MySQL/MariaDB, MongoDB and SQLite, with the practical details needed for real operational work.

SwiftSwiftUIAppKitSQL
Explore project
Confluence Toolbelt project header
Vibe-coded → AI-engineeredCLI & Obsidian plugin

Confluence Toolbelt

Confluence pages, edited locally, with Markdown and AI in the loop.

A command-line tool and Obsidian plugin for downloading, editing, merging and uploading Confluence pages without losing comments or mentions.

TypeScriptNode.jsObsidianConfluence API
Explore project
ObsidiSync file history and sync status inside Obsidian
AI-engineeredObsidian sync system

ObsidiSync

Git-backed Obsidian sync that works on iPhone, iPad and Mac.

An Obsidian plugin and low-footprint Rust server that bring real Git history and conflict handling to devices that do not run Git themselves.

RustTypeScriptObsidianGit
Explore project
Vault UI native macOS vault browser
AI-EngineeredNative password manager client

Vault UI

A native macOS client for Vaultwarden.

A SwiftUI vault client for Vaultwarden that brings passwords, passkeys, TOTP, AutoFill, CLI secrets and SSH keys into native macOS workflows.

SwiftSwiftUISwiftDataCryptoKit
Explore project
Vibe-codedNative MP3 tag editor

Tosk Tag

Bulk MP3 tagging for audiobooks and albums.

A native SwiftUI app for arranging MP3 files, previewing audio, setting track numbers and writing ID3 metadata in bulk.

SwiftSwiftUIID3macOS
Explore project

Use it. Fork it. Improve it.

Software built around real problems.

After two decades of writing software, AI lets me transfer a broad engineering foundation into unfamiliar languages and frameworks faster. I can choose the technology that best fits the problem, not only one in which I could efficiently write an entire project from scratch.

I am first and foremost an engineer and software developer, but I am also deeply passionate about user experience. With AI taking on more of the routine implementation work, I can spend more time shaping how a product behaves, feels and serves the people using it, while focusing on directing the architecture and reviewing the implementation.

This approach allows me to direct the architecture, review the implementation and judge the trade-offs.

I built these projects to solve problems I encountered myself, where no solution existed, no open and free option was available, or the existing tools simply did not fit the problem well enough.

They bring together my deep technical engineering background, my passion for good user experience and my care for fully thought-through products. I share them with anyone who finds them useful: use them, report an issue, fork them or contribute a change.

Three ways I build

The difference is where I direct and review the work.

Handcrafted & AI-assisted01

Close to every line

I work deeply at code level, review every changed line and often write parts of the implementation myself.

AI can assist with individual tasks, but I stay directly responsible for the implementation details as well as the architecture and product.

AI-engineered02

Technical direction, agent implementation

I define the application vision and direct architecture, code behavior, constraints and trade-offs in engineering terms. The agents operate like an engineering team; I operate like their technical lead.

I still inspect the code and validate the system, but not every line of every change. That distance leaves more room to focus on user experience and the product as a whole.

Vibe-coded03

The outcome leads

I describe how the application should behave and look from a user's point of view, without imposing deeper architectural or code-level constraints.

The goal is working software that realizes the idea. Agents choose most of the technical path used to get there.

None of these approaches replace good engineering practice. Very small, narrow tools can be kept safe through focused manual validation; once a project grows in complexity, it needs proper tests, version control and CI. The GitHub repositories linked above are public mirrors, while the primary sources live in my own Git hosting where CI runs as part of the regular workflow.