← Back to Blog

Day 16: Auth, Mobile, and Real Users

A complete auth system migration, mobile navigation from scratch, and a conversation from Brazil that opened up new use cases.

Ripping out the auth system

I started migrating the entire authentication system from Auth.js v5 to Better Auth.

Auth.js was fine for getting started, but it was showing cracks. The session handling was unpredictable, the admin plugin ecosystem was limited, and every custom feature required fighting the framework. Better Auth gives me a proper admin plugin with user banning, session management, and hooks for audit trail logging out of the box.

The migration touches everything: database schema, all API routes, WebSocket authentication, the login page, the setup flow, the invite system, every client component that checks auth state. 30+ files changed just for the auth swap. It's on a branch, needs final testing, but the heavy lifting is done. It'll ship with the first official release this week.

Mobile: not an afterthought

I also started building a real mobile experience. Not "responsive" in the sense of "the desktop layout kind of works on a phone." Actually designed for mobile:

This is still on a feature branch too, but the foundation is solid. Enterprise users don't just sit at desktops. They want to check on their agents from their phone. Quick status check, approve something, read a summary. If that experience is broken, they won't use it.

In-app bug reporting ships

PR #16 finally landed. When something goes wrong, users get a "Report a bug" link that pre-fills a GitHub issue with:

The issue body gets copied to clipboard (URL params have length limits), and the user just pastes it into the GitHub issue form. One click from "something broke" to "the developer has everything they need to fix it."

There's also an error boundary now. If the React app crashes, instead of a white screen you get a friendly message with the report link. Infrastructure failures (WebSocket disconnects, API timeouts) show a restart overlay with a timeout indicator.

A call that changed my thinking

Had a great conversation with Sergio from Brazil. His company sees immediate use cases for Pinchy that I hadn't prioritized:

Public Agents. Agents that answer questions from a knowledge base, accessible to anyone. Not just internal team members, but customers, partners, website visitors. Think: a company's entire documentation, searchable through a conversational agent that anyone can talk to.

Messenger integrations. Slack for internal teams. WhatsApp for customer-facing agents. The beautiful part: OpenClaw already supports these channels. Pinchy just needs to make them configurable and secure for enterprise use. The hard infrastructure work is done.

What excites me most is that people genuinely understand what Pinchy is. They don't need a 30-minute pitch. They see it, they get it, and they immediately start thinking about how to use it in their own workflows. That's the signal I was hoping for.

Pinchy is open source. Anyone can extend it, adapt it, build on it. And if you want help integrating it into your company's workflows, that's exactly what I love doing. Book a call and let's figure out what Pinchy can do for your team.

43 commits, 65 files, 4,167 lines

Three days in a row of massive output. The compounding effect is real: yesterday's settings refactor made today's auth migration cleaner. Today's mobile work will make tomorrow's demo calls smoother. Every day builds on the last.

What's next

Public agents and messenger integrations just moved up the priority list. Plus: more demo calls. Every conversation sharpens the product.

Follow the build: github.com/heypinchy/pinchy

← Day 15: The Fix-Everything Day Day 17: The Merge →

Pinchy is open source and ready to deploy. Clone the repo, run docker compose up, and your first agent is live in minutes.