If we disappeared tomorrow, your software should still work
Ownership / 4 min

If we disappeared tomorrow, your software should still work

Most clients evaluate price, design and speed before signing with an agency, and never ask who actually owns the code, the accounts, and the keys - until the agency is gone and nobody can get back in.

The question nobody asks at the pitch meeting

Every pitch meeting covers the same three things: price, timeline, and what the screens will look like. Almost nobody asks who will actually own the result - whose GitHub account the code lives in, whose name is on the hosting account, who holds the admin login to the database. It feels like a legal footnote. It's actually the only question that matters once the relationship ends.

Lock-in rarely looks like a trap

No agency tells a client "we're building this so you can never leave." It happens quietly: the repo stays under the agency's organization, the server runs on the agency's cloud account, the one person who understands the deploy script never wrote it down. None of it looks malicious in year one. In year three, when the agency goes quiet or doubles the price, it's the only reason the client can't just walk.

What real ownership actually requires

Real ownership isn't a clause in a contract, it's three concrete things: the repository lives in the client's own account from day one, the hosting and domain are registered to the client, and there's a document - not a Slack thread - explaining how to deploy, back up, and hand the project to a different developer if needed. If any one of those is missing, the client doesn't own the software; they're renting access to it.

The ACS approach

Every repo we touch lives in the client's own Azure DevOps or GitHub organization from the first commit, every hosting account is registered in their name, and every handoff comes with a document written for whoever inherits the project next - including a developer who isn't us. If we vanished tomorrow, the client should be mildly inconvenienced, not stuck.