Building in Public

Honest thoughts on building an enterprise AI agent platform. No marketing fluff.

Day 62: Gmail Without the Dev Console

Gmail ships. The first Pinchy integration whose setup story includes a trip through the Google Cloud Console — folded into a wizard that hands over the redirect URI, stores credentials once per workspace, and treats abandoned OAuth flows as a visible pending state instead of limbo.

Day 61: Docs That Know Who's Asking

Two branches, both moving. The pinchy-docs plugin learning to scope documentation to the agent that's asking; the password reset page finally existing, instead of routing resets through an invite form pretending to be one.

Day 60: One Guide Instead of Two

Saturday. One commit on main. Two docs pages that had been saying almost the same thing about HTTPS setup — nearly the same is the dangerous part. The fix is not adding content; it's picking which page owns the flow and making the in-app link point there.

Day 59: Three Releases Before Lunch

Three point releases in ten hours, each closing a real report from the first day v0.4.0 spent in the wild — a Docker port bypassing UFW, a Caddyfile dpkg refused to install, a validator that trusted a public endpoint, and one unreadable row that hid every integration.

Day 58: v0.4.0 Is Out

Release day. Three last-hours fixes to Ollama Cloud support — tokens tracking, vision flags, and model IDs that actually match the API. The kind of thing you only find by running the product yourself.

Day 57: A UI That Stops Lying

Two clean-ups before shipping v0.4.0: the agent permission screen was offering toggles that didn't do anything, and Smithers had been repeating the docs back at itself instead of reading them. Both cut.

Day 56: When the Other Side Disappears

What happens when the model backend vanishes mid-stream — and how the user finds out. Disconnect errors, timeout errors, and heartbeats that stop lying about progress.

Day 55: Shared Memory, Different Boundaries

Three conversations in one day, all circling the same problem: companies want agents that can access shared knowledge — but only with the right boundaries, roles, and permissions in place.

Day 54: Making the Dashboard Honest

A usage dashboard is only useful if the numbers are trustworthy. Today was about timezones, cache tokens, missing days, retry states, and the details that make cost visibility reliable.

Day 53: Three Tracks Toward v0.4.0

Usage tracking, Telegram guardrails, and a growing library of Odoo templates — three parallel workstreams pointing in the same direction: making Pinchy operational for real teams.

Day 52: Stabilizing the Edges

The day after a feature lands is when the real product work starts: fixing merge fallout, tightening error handling, improving validation UX, and making edge cases fail clearly.

Day 51: Complexity and Regulation

Day two of the workshop. And the EU Cloud Act turns out to be a tailwind for everything Pinchy is already designed to be.

Day 50: Audit Outcome

The audit trail now shows success or failure. Pre-built images ship to GHCR. And a two-day workshop on automating complex workforce scheduling.

Day 49: Audit Trail v2

A new audit log format that records outcomes — not just what happened, but whether it worked. Plus Smithers reads the docs on demand.

Day 48: Qwen by Default

A small change to default model selection that makes local Ollama dramatically more reliable. Plus a WebSocket fix nobody asked for but everybody needed.

Day 47: The Merge Day

The insecure mode banner officially merges. Ollama gets tool-calling enforcement. And a deep dive into why dependencies are a constant maintenance tax.

Day 46: Pull, Not Build

Pinchy now ships pre-built Docker images instead of building them on every deploy. First-time setup goes from 15 minutes to under a minute.

Day 45: Polish Day

Easter weekend, low-energy work, but the small UX details that make the difference between a developer toy and a real product.

Day 44: Two Tracks

Odoo agent templates that configure themselves, and local Ollama support that discovers models automatically. 45 commits, one very productive day.

Day 43: Grok Sent Him

Someone found Pinchy because Grok recommended it. The Odoo config went from 867KB to 3KB. And who is Pinchy actually for?

Day 42: The Merge

Telegram is merged. The multi-user test found bugs, I fixed them, and the biggest feature branch in Pinchy's history landed on main.

Day 41: Telegram Is Done

The Telegram integration that almost derailed everything is finally finished. Plus two meetings that confirmed the direction is right.

Day 40: The Email Question

Every company I've talked to wants the same thing: an agent that reads their email. Here's what that actually means to build.

Day 39: The Mock Server Trick

How a fake Telegram server made the real integration better, and why the feedback loop matters more than it sounds.

Day 38: v0.3.0

The deployment release ships, Telegram goes multi-bot, a recruitment company wants to automate their entire workflow, and the product roadmap writes itself.

Day 37: Three Calls, Three Countries

An Austrian manufacturer wants AI-generated quotes. An Irish fleet company wants to scale NanoClaw. Same core needs, different industries.

Day 36: Deployment Hardening

Fixing everything that breaks when Pinchy leaves localhost — cookies, HTTPS, OpenClaw restarts, Telegram stability, and the gap between demo and production.

Day 35: The First Real Deploy

A pilot user tried to deploy Pinchy on Hetzner. It didn't go smoothly. So I built the deployment docs, a loading page, and fixed every issue he hit — in one day.

Day 34: The Scaling Question

Telegram integration, security hardening, dynamic model selection — and the uncomfortable realization that demand is outpacing what one person can build.

Day 33: Show Me the Tokens

A full usage dashboard with cost tracking, a screenshot CI pipeline that fought back hard, and a WebSocket fix that should have been obvious.

Day 32: The PDF That Needed Eyes

Building a PDF reader that actually works — from text extraction to vision fallback, plus five feature pages, an automated screenshot pipeline, and a security fix.

What Jensen Huang's OpenClaw Strategy Means for Pinchy

Nvidia's NemoClaw validates the enterprise OpenClaw market. Here's how infrastructure and application layers are complementary, not competitive.

Day 31: Three Talks in Ten Days

v0.2.0 shipped, a freelancer meetup talk, star challenge round 2, and Jensen Huang just validated our entire market.

Day 30: The Last Mile

21 commits of polish, dependency upgrades, tab flicker fixes, and eating our own dog food with two new Pinchy agents.

Day 29: 100 Stars and Three Handshakes

Two major PRs merged, a sold-out meetup talk, three companies wanting to integrate Pinchy, and crossing 100 GitHub stars.

Day 28: Secrets and Stages

Building defense-in-depth for audit logs, and getting ready to tell the Pinchy story to a sold-out meetup.

Day 27: Release Prep

Testing for v0.2.0, a look at everything shipping in the next release, and why openclaw-node deserves more attention.

Day 26: Three Branches, One Saturday

Enterprise key system, Telegram integration, and provider config migration. Three feature branches running in parallel on a Saturday.

Day 25: Messaging, Not Workflows

Telegram integration design, the first external feature request, 5 community PRs, and a clarity moment: Pinchy is a messaging tool.

Day 24: Tokens Are Money

RBAC is merged, a real company wants to pilot Pinchy, and I'm learning that token cost is the concern nobody talks about publicly.

Day 23: The Bug-Free Demo

First demo without a single bug. A cybersecurity startup grills Pinchy on security. And the confidence is building.

Day 22: The Perfect Setup

Peter Steinberger says nobody's building enterprise OpenClaw tooling. 30 seconds later, I'm on stage showing Pinchy. Plus: RBAC edge cases and why manual testing still matters.

Day 21: The Calls That Shaped the Roadmap

Multiple demo calls, an enterprise from Dubai, a potential partnership, and the first enterprise feature: RBAC. Plus: a lightning talk at tomorrow's 280-person meetup.

Day 20: v0.1.0

542 commits. 33 PRs. 20 days. Pinchy has its first official release.

Day 19: Release Ready

24 commits, 5 PRs, zero new features. Just making Docker startup actually work. The unglamorous work that makes a v1 possible.

Day 18: First Users, First Lessons

A no-show demo, the founder impatience problem, and 14 commits making Pinchy actually work for the people who cloned it.

Day 17: The Merge

Coded in the dentist's waiting room. Claude kept going during the cleaning. Then PR #21 landed: Better Auth replaces Auth.js. 11 commits, and the kind of work that makes everything else possible.

Day 16: Auth, Mobile, and Real Users

43 commits: migrated from Auth.js to Better Auth, built mobile navigation, added in-app bug reporting, and had a call that changed how I think about Pinchy's future.

Day 15: The Fix-Everything Day

84 commits, 5 PRs merged, 112 files changed. Every bug from yesterday's demo, plus a complete audit log overhaul, soft-delete, and settings polish.

Day 14: The Demo That Broke Everything

A live demo, an Anthropic outage, and the most productive bug-finding session in weeks.

Day 13: The Thinking Day

Zero commits. No code. Just thinking about RBAC, knowledge base indexing, and what Pinchy needs next.

Day 12: The Audit Trail Closes

PR #3 merged. Every tool call now leaves a trace. Plus: a marketing experiment that backfired.

Day 11: The Ecosystem Day

Two npm releases, audit trail upgrades, and three calls with people who want to build with us.

Day 10: Context Belongs to People, Not Agents

A data model that felt right at 2 agents broke at 5. Why USER.md moved from agent settings to general settings.

Day 9: Making It Feel Right

31 commits. 128 files. The first PR merge, fun-emoji avatars, and why polish isn't optional.

Day 8: Give Your Agent a Face

11 commits. 72 files. Personality presets, DiceBear avatars, taglines, and the Settings UI that ties it all together.

Day 7: Agents Are People Too

16 commits. A product philosophy, a lobster in a bowtie, and a complete session architecture rewrite.

Day 6: The Personality Layer

26 commits. 5,000 lines. Agent greetings, memory privacy, SBOM pipelines, and the question: what makes an AI agent feel like yours?

Day 5: The Enterprise Gauntlet

77 commits. 15,000 lines of code. Security hardening, audit trails, compliance docs, and a conversation in a gym that changed everything.

Read more →

Day 4: From Solo to Team

63 commits. 12,000 lines of code. Multi-user support, invite system, personal agents, custom plugins, E2E tests, and eating our own dog food.

Read more →

Day 3: Encryption, Onboarding, and a Trojan Horse

30 commits, 7,600 lines of code. Encrypted API key storage, a full provider setup flow, Docker dev mode, a documentation site — and we shipped the first Node.js client for OpenClaw.

Read more →

Day 2: From Zero to Chat in One Day

Yesterday we had a website. Today we have a working app — login, setup wizard, chat UI, WebSocket bridge to OpenClaw, and Docker Compose. 29 commits, ~2,000 lines of code.

Read more →

Building Pinchy in Public: Why We're Open-Sourcing an Enterprise AI Agent Platform

It started with an AI agent leaking internal reasoning to a friend via WhatsApp. Now imagine that happening at a company. That's the problem Pinchy solves.

Read more →