James L. Cowan Jr.

Founder & Product Engineer @jameslcowan

I founded Kleto, a product engineering agency, and I build what it ships: AI agents and automation, web and mobile apps, SEO and GEO, and brand identity. I run the servers it all lives on, and the numbers are public.

What I’m Building

What I Do

All Services
  • AI Agents & Automation

    Agents that take real steps inside your tools, so repeat work moves on its own.

    LLM Integrations · RAG Search · Tool Calling · Zapier · Make

  • Custom OpenClaw & Hermes Agents

    Your own agent in your chat apps, hosted and tuned monthly.

    OpenClaw · Hermes · Custom Skills · WhatsApp · Telegram · Slack

  • Web & Mobile Apps

    Installable web apps, mobile apps, MVPs, portals and dashboards.

    React · TypeScript · Node.js · HTMX · PWAs

  • SEO & GEO

    Pages search engines and AI assistants can read, quote and cite.

    Technical SEO · Schema · Core Web Vitals · AI Crawler Access

  • Brand & Identity

    Name, voice and look that fit the business, ready for the build.

    Logos · Brand Guidelines · Design Systems · Pitch Decks

  • Infrastructure

    Production sites on servers I run, with uptime and analytics I own.

    Linux VPS · Caddy · Buildless Node · SQLite

Scope a Project at Kleto

Shipped

28 live sites

Training Family 20

Free training programs on 20 sites, one per discipline, all on one shared program builder.

Show 14 MoreShow Fewer

Writing

All Articles

We moved a production API from Node to Bun in an afternoon @jameslcowan bun, javascript
Types without the build step: why I chose JSDoc + tsc over TypeScript files @jameslcowan typescript, javascript
Stop renting your tools: the case for replacing the software you pay for with software you own @jameslcowan product-engineering, ai
Replacing the SaaS bill: how I built my own analytics, uptime, and BI stack with agentic development @jameslcowan analytics, observability
Holding Company Structure for Bootstrapped Founders: Why I Skipped the Delaware C-Corp @jameslcowan holding-company, bootstrapping
The YC S26 Deadline Just Closed. Here's What Separates the 1.5% From Everyone Else. @jameslcowan startups, yc
Karpathy Was Wrong: OpenClaw Still Outruns Its 5 Real Alternatives @jameslcowan openclaw, ai
Mobile-First Layout That Ships: How PrimaryLayout Solves Real UX Problems @jameslcowan htmx, css

Listen

The YC S26 Deadline Just Closed. Here's What Separates the 1.5% From Everyone Else. @jameslcowan startups, yc
Karpathy Was Wrong: OpenClaw Still Outruns Its 5 Real Alternatives @jameslcowan openclaw, ai
Mobile-First Layout That Ships: How PrimaryLayout Solves Real UX Problems @jameslcowan htmx, css
OpenClaw: What It Is and How to Get the Most Out of It @jameslcowan openclaw, javascript
Zero-Server Analytics: How I Replaced a SaaS Bill with Netlify Functions and GitHub @jameslcowan netlify, analytics
How do you connect a simple front end to a typed API? @jameslcowan typescript, javascript
What makes an internal tool survive the first hire? @jameslcowan smb, documentation
What is SQLite good for at the edge of a system? @jameslcowan sqlite, postgresql

Recommended

We moved a production API from Node to Bun in an afternoon @jameslcowan bun, javascript
Types without the build step: why I chose JSDoc + tsc over TypeScript files @jameslcowan typescript, javascript
Stop renting your tools: the case for replacing the software you pay for with software you own @jameslcowan product-engineering, ai

Recommended

We moved a production API from Node to Bun in an afternoon @jameslcowan bun, javascript
Types without the build step: why I chose JSDoc + tsc over TypeScript files @jameslcowan typescript, javascript
Stop renting your tools: the case for replacing the software you pay for with software you own @jameslcowan product-engineering, ai

Search by title, tag, description, or the prose itself. Results appear as you type.