A month ago I shipped Worktale and said the words "no cloud" like they were a badge of honor. Local-first. No account. No network requests. Your data stays on your machine. I meant every word of it.

I still do. But something happened between then and now that made me build the thing I said I didn't need.

Somebody asked me to prove it.

The Proof Problem

I've written before about the forgetting tax--the gap between what you actually built and what you can articulate when it matters. Worktale solved the first half of that. It gave you a record. A local, structured, private record of your engineering output going back as far as your git history goes.

But a record nobody can see is a diary. It's useful for reflection. It's useless for proof.

I realized this the hard way. I was putting together materials for a potential engagement--the kind where the client wants to see evidence of output, not just a list of technologies on a resume. I had years of commit data in Worktale. Daily summaries. Streak data. A heatmap that told the story of someone who shows up every day and ships. And I had no way to share any of it.

I could screenshot my terminal. I could copy-paste digest text into a PDF. It felt like building a telescope and then describing the stars over the phone.

What Changed

I didn't want to build a cloud product. I want to be clear about that. The whole point of Worktale was that it wasn't one. No server. No account. No data leaving your machine. That simplicity was the product.

But I kept running into the same wall. Developers told me they loved the CLI. They loved the dashboard. They loved the privacy architecture. And then they asked: "Can I show this to my manager?" "Can I put this on my portfolio?" "Can I use this for my performance review?"

The answer was always no. Not really. Not in a way that was frictionless or professional or linkable.

So I built the cloud layer. Not because I wanted to. Because the tool wasn't done without it.

What Worktale Cloud Is

Worktale Cloud is the optional sharing layer on top of the same local-first CLI. You set cloudEnabled to true, add your cloudToken, and run worktale publish. It syncs your local database to a profile at worktale.dev/username. That's it.

What you get:

  • A public profile with an activity heatmap that includes private repo work--the stuff GitHub can't show
  • A unified timeline across every repo on your machine, in one chronological stream
  • AI-powered weekly summaries published to your profile or delivered by email
  • Standup and retro generators that turn raw commit data into team-ready documents
  • Professional export packages for performance reviews, promotion cases, and client deliverables

The CLI remains free, open source, and completely local. If you never enable Cloud, nothing changes. No feature degrades. No nag screen appears. The local tool is the same tool it was a month ago. Cloud is additive. Never required.

The Heatmap That Tells the Truth

Here's the feature that made me realize Cloud had to exist.

GitHub's contribution graph only counts public repos and repos within organizations you belong to. If you do contract work, consulting work, or anything under NDA--which describes most of my career--your GitHub profile is a ghost town. It shows nothing. Zero squares. As if you didn't write a line of code all year.

Worktale Cloud's heatmap counts everything. Every repo on your machine. Private, public, client, personal. It shows the shape of your actual output, not the fraction of it that happens to be on GitHub.

For consultants and contractors, this is the feature. It's the difference between a profile that says "I've been busy" and one that proves it. Twenty years of consulting and I finally have a way to show the work that was always there but never visible.

The Tension I Had to Sit With

I'm not going to pretend adding a cloud layer to a local-first tool doesn't create tension. It does. I wrote an entire article about skipping the screen and keeping products minimal. I launched Worktale with "no cloud" as a headline feature. Now I'm shipping a cloud product.

The difference--and I thought about this a lot--is that Cloud doesn't compromise the local tool. It doesn't retroactively make the CLI worse. It doesn't add telemetry to the open-source codebase. It doesn't gate features behind a login. The CLI is exactly what it was. Cloud is a separate thing you opt into, for a specific purpose: making your record shareable.

Local-first means you start local. It doesn't mean you stay invisible forever.

Why This Is Personal

I've been writing software for over twenty years. Most of that was consulting. Enterprise systems, NDAs, closed repos, internal tools that nobody outside the company ever saw. I built things I'm proud of--systems that processed millions of transactions, platforms that ran for years after I left--and I have almost nothing to show for any of it.

That's not a complaint. That's the reality of consulting. You build, you leave, and the work belongs to someone else. The code is theirs. The repo is theirs. The only thing that's yours is the fact that you did it.

Worktale was always about capturing that fact. Cloud is about being able to point to it.

When I look at my Worktale profile now, I see twenty years of showing up. Not the code--Worktale never touches code. But the pattern. The consistency. The shape of someone who ships. That's what I wanted to exist, and now it does, and now I can share it with a link instead of a story.

The Business Model

Cloud is in beta. Everything is free right now. No credit card. No trial timer. Just sign up and use it.

When beta ends, Cloud will become a paid subscription. The CLI stays free and open source, permanently. That's not a marketing promise--it's MIT licensed. Nobody can take it away.

The bet is simple: if the sharing layer is genuinely useful, developers will pay for it. If it isn't, it won't matter how cheap it is. I'd rather build something worth paying for than something that survives on inertia and dark patterns.

Getting Started

Cloud requires v1.3.0 of the CLI--the latest on npm. If you're already running Worktale, upgrade and enable Cloud:

npm install -g worktale@latest
worktale config set cloudEnabled true
worktale config set cloudToken YOUR_TOKEN
worktale publish

If you're new to Worktale:

npm install -g worktale
worktale init
worktale dash

The local tool works on its own. Start there. Run it on your repos. See your history. When you're ready to share it, upgrade to v1.3.0 and Cloud will be waiting.

Your git history already has the story. Worktale tells it. And now, if you want, the world can read it.

Worktale Cloud is in beta at worktale.dev. The CLI is on npm and GitHub. Read the full launch post on the Worktale blog.