Skip to content

Try Godmode free for 7 days without a key or card - #228

Merged
danielehrhardt merged 4 commits into
mainfrom
feat/keyless-trial
Oct 22, 2026
Merged

danielehrhardt merged 4 commits into
mainfrom
feat/keyless-trial

Conversation

@danielehrhardt

Copy link
Copy Markdown
Contributor

Why

Reddit launch on Tuesday, October 27: people should be able to download Godmode and use it without a key or a card. Until now an official build refused a new install without a key, and usegodmode.com/download asked for a key before it handed out a file.

What changed

Core

  • Every install without a key gets 7 free days from its first start (initLicense, packages/core/src/license/license.ts). The end date is written once to license.grace_ends_at, so a restart never extends it. Installs with a key, installs that already have their days and builds from source behave as before (builds from source don't start the clock at all).
  • During the week: "Free until Oct 29. Then add your licence key or start the 14-day free trial." After it: "Your 7 free days ended on Oct 29. Add your licence key or start the free trial to keep your agents working." The other messages are unchanged.
  • usedBefore() is gone. It decided who got the 7 days, and now every install without a key does.

App

  • Banner: "Free until October 29. Then add your licence key or start the 14-day free trial." with "Start free trial" (opens the checkout and shows the licence page, so the key field is ready when you come back) and "Add key". It stays off Settings → License.
  • Onboarding: in the free week the Activate step says "Your free week starts now." with the end date and a key field, and Continue is the main button. No card push on day one. The last step shows "Free until Oct 29".
  • Settings → License: "Free week" badge and a "Free until" row with the days left.
  • Gate after the week: "Your free week is over" plus the core message.
  • The line under the trial button said "7 days free". The Stripe trial has been 14 days since the Founding offer, so that line is fixed.

Website

  • /download works without a key: Mac, Windows and Linux, "Free for 7 days, no card. Then add a licence key.", the other builds and the always-on server. On a phone it offers to email or copy the link to your computer. A key from /download?key=… or the cookie still shows up with a copy button, which the welcome page and the lifecycle emails rely on.
  • /download/ and /download/file/ no longer check a key. The rate limit stays (CHECKOUT_LIMIT, 20 a minute per IP). entitled() had no callers left, so it's removed.
  • install.sh no longer needs GODMODE_LICENSE and no longer sends a key with the download. It stores the key only when one is given.
  • Homepage: the no-card path sits next to the trial in Hero, Pricing (a row under the plans), FinalCta and StickyCta (large screens). The hero says "Mac, Windows and Linux". In the FAQ, the trial answer covers both ways to try and the open-source answer mentions the 7 days. The Founding offer and the Stripe trial are untouched.
  • /download is no longer noindex.

Release notes: the download block gets "Official builds run free for 7 days, then need a Pro key. Your own build from source never asks for one." and the server one-liner without GODMODE_LICENSE.

Edge cases

  • Restarts: the end date is written once. The tests cover it, and in a real run three starts kept the same grace_ends_at.
  • Deleting the data folder (~/.godmode, or a new GODMODE_HOME) starts a new week. That's accepted, the same as building from source, and it also wipes the agents, chats and vault.
  • An older official install that was refused without a key gets its 7 days from its first start on this version. Counting from its old first start would tell it the free days ended when it never had any.
  • An install that always ran with a key gets no free days. If its key is removed, the next start gives it the week once.
  • If a key added during the week ends (a cancelled trial), Godmode keeps working until the week is over, the same rule the old grace window had.

Download endpoints and GITHUB_TOKEN

An anonymous caller can reach only files of codextde/godmode-bot releases: through the PLATFORMS map, or the server-binary regex for /download/file. The repo is fixed, the version is URL-encoded, the asset URLs come from GitHub's API answer, and the token never leaves the worker (the browser gets a short-lived signed URL). /download/constructor used to resolve to Object and answer 502. It's a 404 now.

Tests

  • bun test test/license.test.ts: 26 pass. New: a new install gets 7 days from its first start and restarts don't extend them, the exact message texts, existing days are kept, an older install that was refused, a build from source doesn't start the clock, a key at the first start gets no days, a key that ends inside the week. The 3 tests for new behaviour fail on main.
  • Full core suite: 2086 pass, 21 skip, 5 fail. The same 5 also fail on a clean origin/main checkout on this machine (mod draft, maintenance updates, tool updates / Cua Driver), so they're unrelated.
  • Typecheck for shared, core and desktop is clean, and the desktop build works.
  • Website: astro check has 0 errors and SITE_URL=https://usegodmode.com pnpm build works. Locally, /download/mac, /windows, /linux, /server-* and /download/file/godmode-linux-x64(.sha256) redirect to the v0.2.23 GitHub assets without a key.
  • install.sh with a stub curl: without a key it downloads ?version=latest and stores nothing. With a key it stores the key once.

Screenshots

In /Users/danielehrhardt/.godmode/agents/godmode/workspace/godmode-bot/keyless-trial/:

  • desktop-onboarding-free-week.png: Activate step in the free week
  • desktop-banner-free-week.png: banner in the app
  • desktop-settings-license-free-week.png: Settings → License in the free week
  • desktop-gate-free-week-ended.png: gate after the week
  • site-download-desktop.png, site-download-phone.png, site-download-with-key.png: /download
  • site-home-hero.png, site-home-hero-phone.png, site-home-pricing.png, site-home-final-cta.png: homepage paths (the sticky bar shows at the bottom of the last one)

For the reviewer

  1. Release before the site deploy. The site serves the latest GitHub release. Deploy the site only after a release with this core change is out, or launch visitors get v0.2.23, which still refuses a new install without a key.
  2. GitHub API budget. Every download costs one API call with GITHUB_TOKEN (5,000 an hour). Launch traffic plus app updates (/api/update/asset was already open, with no rate limit) could hit that, and downloads then fail with 502. The repo is public now, so assetRedirect could send browsers straight to browser_download_url and skip the API. I didn't change it here because lib/releases.ts is being edited in fix/site-launch.
  3. The footer still says "Download (customers)". Footer.astro is also being edited in fix/site-launch.
  4. Runner updates still ask for a licence key in the core (runnerUpdates.ts), although the file endpoint no longer needs one. I left that as is.

Official builds gave 7 days only to installs that were used before licences;
a new install was refused until it had a key. Now every install without a key
gets 7 free days from its first start. They are stored once, so restarts
never extend them. Installs with a key, installs that already have their days
and builds from source behave as before.
Banner, onboarding, Settings → License and the gate now speak to a new user
in the free week: free until a date, then add a key or start the 14-day
trial. The banner gets a trial button and stays off the licence page. The
trial line under the trial button said 7 days; it is 14.
/download shows the Mac, Windows and Linux downloads to everyone: free for
7 days, no card. A key from the link or cookie is still shown, to copy into
the app. The download endpoints keep their rate limit and only serve the
release files; install.sh no longer needs GODMODE_LICENSE. The homepage gets
the no-card path next to the trial, and Linux in the hero.
@danielehrhardt
danielehrhardt merged commit 14d2611 into main Oct 22, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant