Skip to content

Transferring app ownership

An app can change hands. The owner starts a transfer, names who should receive it, and the app moves once, and only once, that person accepts.

Starting a transfer sends an invite by email. It does not touch the app. You stay the owner, with full control, right up until the recipient opens the link and confirms. If they never open it, or they decline by simply doing nothing, the app is exactly where it was.

In the console, open the app, go to its Settings tab, and find the Transfer ownership panel. Enter the recipient’s email address and choose whether you want to stay on the app as a member once it moves. Staying on is the default: uncheck the box if you want to walk away entirely.

From the command line:

Terminal window
homespun apps transfer <app> --to new-owner@example.com

Add --remove-me if you want to be removed from the app once the recipient accepts, instead of staying on as a member:

Terminal window
homespun apps transfer <app> --to new-owner@example.com --remove-me

Or just ask your agent, in whatever words you would normally use:

Transfer this app to new-owner@example.com, and keep me on as a member

Only one transfer can be pending for an app at a time.

Checking or withdrawing a pending transfer

Section titled “Checking or withdrawing a pending transfer”
Terminal window
homespun apps transfer <app> --show
homespun apps transfer <app> --cancel

--show reports who the app was offered to and when the invite expires. --cancel withdraws it: the recipient’s link stops working, and nothing about the app has changed. Both are also available from the same Settings panel in the console, where a pending transfer shows the recipient’s address and a Withdraw button in place of the form.

The email contains a link. Opening it asks them to sign in, then shows a page confirming what they are about to take on: the app’s name, who is offering it, and whether the current owner is staying on as a member. They accept with a button, not by merely opening the link.

They do not need a Homespun account already. If the address the app was offered to has never signed in before, the link carries them through the ordinary sign-up flow first and back to the same confirmation page afterward. A transfer is a normal way to introduce someone to Homespun for the first time.

Accepting a transfer requires being signed in as the exact address the offer was sent to. If the recipient forwards the email or shares the link, whoever opens it next is told the link was sent to a different address and gets nothing. There is no way around this: it is what keeps a transfer link safe to leave sitting in an inbox for a week.

The confirmation page explains, in plain terms, why an accept was refused:

  • The link has expired. Transfer invites last 7 days. Ask the owner to start a new one.
  • The offer was withdrawn. The owner cancelled it before it was accepted.
  • The offer was already used. Someone already accepted it, or another transfer overtook it.
  • The app changed owner in the meantime. The link points at an offer that is no longer current.
  • You are over your app limit. Accepting would put the recipient’s account past how many apps their plan allows. They need to free up room, or upgrade, before accepting.
  • You already have a live trial of this template. An account can only be trying one copy of a given template at a time, and the recipient already has one running.

In every case the app stays exactly where it was: a refused accept never leaves it half-moved.

That was chosen when the transfer was started:

  • Stay on as a member (the default): the previous owner keeps access to the app, but as a member rather than the owner. They can no longer manage billing-level settings for it, transfer it again, or delete it.
  • Removed entirely: the previous owner loses access to the app the moment the transfer is accepted, the same as being removed by any other owner.

Either way, the previous owner’s agents immediately stop being able to deploy the app. An agent API key only works for apps its account owns, so the moment ownership moves, that key can no longer push changes to this app. Any agent that should keep working on it needs to be reconnected under the new owner’s account.