Build your Expo app. Keep control.

Autotomy is an Expo and React Native starter with editable TypeScript source, architecture checks, and a CLI for your AI coding agent.

Look inside the starter
Or start in your project folder
npx autotomy install

Installation and purchases open when the release is ready. You can explore the setup guide now.

Your source. Your AI tool. Checks you can inspect.

What you build on.

The tools underneathExpo + React Native

Expo and React Native provide the mobile platform. Libraries handle jobs such as navigation, styling, and storage.

The starter you getAutotomy Expo Starter Pack

Autotomy adds a clear project structure, instructions for your AI, checks, and working examples. The source is yours to inspect and change.

The app you buildYour features and integrations

Bring the features that make your app yours. Add authentication, a backend, or payments when your product needs them, using the documented patterns.

See what you’re building on.

Choose a folder to see its purpose.

autotomy / expoA guided view of the real source
expo / package.jsonAutotomy foundation

Good tools. Clear responsibilities.

Expo and React Native run the app. Libraries handle jobs such as navigation, styling, and storage.

Why it exists

Autotomy adds the project structure, AI instructions, and checks around those tools. You can inspect how the pieces fit before adding your own.

Explore the technical details

The libraries, and the work they do

Third-party libraryWhy it exists
ExpoMobile tooling and runtimeReact NativeNative app UIExpo RouterFile-based navigationNativeWindUtility stylingTanStack QueryServer-state coordinationAsyncStorageLocal persistenceZodRuntime data validation

Declared in package.json and installed by pnpm. Autotomy’s adapters are first-party source, not vendor code.

Inside this folder

package.json
pnpm-lock.yaml
expo / src/app/Autotomy foundation

A route opens the door.

Expo Router files connect tabs and URLs to a screen and its controller. The root also assembles the app’s providers.

Why it exists

Routing stays small. Screen presentation and product operations have their own homes, so a route does not become the whole feature.

Explore the technical details

Inside this folder

src/app/_layout.tsx
src/app/(tabs)/settings.tsx
expo / src/ui/Autotomy foundation

What people see and touch.

Screens render loading, ready, and error states. Shared primitives and common compositions give them a consistent visual language.

Why it exists

Presentation receives explicit inputs. It does not reach into another screen to borrow its implementation.

Explore the technical details

Inside this folder

src/ui/components/shared/
src/ui/components/common/
src/ui/settings/
expo / src/ui/settings/Included example

A small feature, all the way through.

Appearance settings connect a screen, controller, use case, reducer, and storage adapter, including loading and failure states.

Why it exists

You can inspect one complete path through the architecture before introducing your own feature.

Explore the technical details
Follow a settings change

A simplified path through the included Settings feature. Select a step to explore its home.

Inside this folder

src/ui/settings/
src/hooks/settings/useSettingsController.ts
src/use-cases/settings/settings.ts
src/services/settings.ts
expo / src/ui/puzzle-lab/Included example

An example with an exit.

A working chess puzzle feature shows how to fetch data, handle errors, and connect the pieces of an app.

Why it exists

Learn from a complete example, then archive it when you are ready to add your own feature. The included Settings feature stays separate.

Explore the technical details

Keep the lesson. Remove the demo.

src/*/puzzle-labdocs/reference/puzzle-lab

This command is specific to Puzzle Lab. It archives the example source and records its shared contributions for review.

pnpm puzzle-lab:move-to-docs
pnpm check

Inside this folder

src/ui/puzzle-lab/
src/hooks/puzzle-lab/usePuzzleLab.ts
src/use-cases/puzzle-lab/puzzle-lab.ts
src/services/lichess-puzzles/
expo / src/hooks/Autotomy foundation

The pieces meet here.

Composition hooks connect state, use cases, and services, then prepare a model and actions for the screen.

Why it exists

A screen can focus on presentation while this layer coordinates the work needed to make it useful.

Explore the technical details
Follow a settings change

A simplified path through the included Settings feature. Select a step to explore its home.

Inside this folder

src/hooks/settings/useSettingsController.ts
src/hooks/settings/settingsScreenModel.ts
expo / src/use-cases/App logic

Your app makes the decisions.

This is where your app decides what to do. The Settings feature uses it to save and restore a person’s preferences.

Why it exists

The decision to save is separate from the storage library. You can test that behavior without writing to a real device.

Explore the technical details
Follow a settings change

A simplified path through the included Settings feature. Select a step to explore its home.

Inside this folder

src/use-cases/settings/settings.ts
src/use-cases/puzzle-lab/puzzle-lab.ts
expo / src/state/App logic

A change you can follow.

Pure reducers describe state transitions. They keep durable client facts and use Immer for immutable updates.

Why it exists

Network and storage effects live elsewhere. Given the same state and input, a reducer can produce the same result again.

Explore the technical details
Follow a settings change

A simplified path through the included Settings feature. Select a step to explore its home.

Inside this folder

src/state/settings/settings.state.ts
src/state/puzzle-lab/puzzle-lab.state.ts
expo / src/services/Autotomy foundation

Outside tools. Inside boundaries.

This folder connects your app to storage and outside services. It checks incoming data and handles failures before passing a result back.

Why it exists

Each integration has a clear home. Your app’s decisions stay separate from the outside tool doing the work.

Explore the technical details
Follow a settings change

A simplified path through the included Settings feature. Select a step to explore its home.

Inside this folder

src/services/settings.ts
src/services/api/
src/services/query-client.ts
expo / src/types/App logic

Shared meanings, written down.

Settings, routes, errors, and async data have explicit types. The result contract uses the neverthrow library.

Why it exists

Compartments can agree on what they exchange without importing each other’s implementation.

Explore the technical details
Follow a settings change

A simplified path through the included Settings feature. Select a step to explore its home.

Inside this folder

src/types/settings.ts
src/types/result.ts
expo / src/theme/Autotomy foundation

One place to change the language of the UI.

Semantic tokens and theme runtime define the app’s visual vocabulary. tokens.ts generates the theme block in global.css.

Why it exists

Change the source tokens instead of patching generated CSS. Shared components carry those choices into screens.

Explore the technical details

Inside this folder

src/theme/tokens.ts
src/theme/provider.tsx
src/theme/css-variables.ts
expo / src/route-error/Autotomy foundation

When a screen cannot render.

The Expo Router error adapter logs render faults and provides a contained recovery view.

Why it exists

The fallback avoids depending on the failed screen’s providers, so recovery has fewer reasons to fail with it.

Explore the technical details

Inside this folder

src/route-error/index.tsx
expo / scripts/Autotomy foundation

Rules that can be checked.

Scripts support architecture rules, theme generation, source packaging, and the Puzzle Lab archive workflow.

Why it exists

pnpm check combines checks for types, boundaries, tests, generated theme, native configuration, and dependencies. It can catch issues; it is not a guarantee of a bug-free app.

Explore the technical details

Inside this folder

scripts/eslint-rules.cjs
expo / docs/Autotomy foundation

The reasoning stays with the source.

Ownership maps, feature patterns, and slice archetypes describe how the project is organized and how to extend it.

Why it exists

Both you and your AI collaborator have a shared reference for the next change. Later engineers can read the same decisions.

Explore the technical details

Inside this folder

docs/SLICE_ARCHETYPES.md
docs/SETTINGS.md
docs/PUZZLE_LAB.md
expo / AGENTS.mdAutotomy foundation

Give your AI the project’s rules.

AGENTS.md records the architecture boundaries and instructions for working in this repository.

Why it exists

A bounded feature request can point to those instructions and the slice archetypes, then require pnpm check before review.

Explore the technical details

Inside this folder

AGENTS.md
ARCHITECTURE.md
expo / START_HERE.mdAutotomy foundation

Start with a concrete sequence.

The owner guide covers installation, running the starter, checking a change, and recovering when something goes wrong.

Why it exists

You get editable source and a documented workflow. App-store accounts, signing, and product-specific release decisions remain yours.

Explore the technical details

Inside this folder

START_HERE.md
PRIVATE_BETA.md
Choose a folder to see its purpose.TypeScript · Expo

Give your AI a clear starting point.

Use the prompt below in Codex, Claude Code, or Cursor. You complete account and payment steps in your browser; your agent resumes the installation.

Paste this into your coding agent
Set up Autotomy in this project. Inspect the current directory and Git status first. Preserve all existing work and secrets. Run npx autotomy doctor --json to inspect compatibility, then npx autotomy install for an Autotomy or unchanged Lite checkout; use npx autotomy init <new-directory> for a new project. If the CLI requests authentication or a purchase, show me its browser link and let me complete it myself, then resume the command. Never ask me to paste credentials into chat. Do not bypass compatibility or verification failures, overwrite conflicting files, or subscribe on my behalf. Follow the installed project instructions, report any required hook approval, run npx autotomy check, and show me how to start the app from its expo directory.
Get started

What is Autotomy?

Autotomy is an Expo and React Native starter with editable TypeScript source, architecture checks, and a CLI for your AI coding agent.

What comes with the foundation?

The complete Foundation source, baseline checks, agent setup, and access to your purchased release and published v1 fixes.

What do you add?

Your product’s features. Authentication, a backend, payments, and permissioned native capabilities are deliberately left for the product that needs them. You choose the services and implement the relevant feature slice.

Make one change. Then check it.

Start with START_HERE.md. Describe one bounded feature to your AI collaborator, follow the slice archetypes, and run the checks. Inspect the result before building on it.

Explore the instructionsLook inside the starter
Paste this into your coding agent
Add <feature> as a cohesive slice in this Autotomy project. Read AGENTS.md and expo/docs/SLICE_ARCHETYPES.md first. Preserve architecture boundaries, explicit error handling, and existing work. Do not modify generated theme CSS directly. Run npx autotomy check, fix failures without weakening gates, and summarize the change and verification evidence.

Start with the source. Keep help close.

Buy the Foundation once. Add maintained audits and upgrade guidance when you need them.

Lite

Free

A minimal Expo shell and the folder structure. Explore the starting point before buying.

Explore Lite setup

Starter

US$149one-time

The complete Foundation source, baseline checks, agent setup, and access to your purchased release and published v1 fixes.

Starter includes 30 days of Pro. No automatic renewal.

Continue to your account

Pro

US$19/ month

or US$190 / year

Maintained audits, verification-drift checks, agent-guided Expo upgrades, and premium hook feedback.

Your account

One developer, unlimited Autotomy projects. Pro requires Starter. Your own coding agent and its costs stay separate.

After Pro expires, premium commands stop. Your source, baseline checks, builds, and deployed apps keep working.

A separately purchased Pro subscription bills immediately. Unused included days are not credited. Cancel before renewal to keep access through the paid period.

Installation and purchases open when the release is ready. You can explore the setup guide now.

Before you start

What am I buying?

Starter is editable Expo Foundation source and baseline verification. Pro is an optional developer-tool subscription for maintained audits and agent-guided upgrades. Neither is a hosted app builder.

What happens after the included 30 days?

Pro stops unless you explicitly subscribe. There is no automatic charge. Starter source and baseline checks keep working.

Does Autotomy change my app automatically?

Installation manages explicitly owned files. Audits report evidence and repair prompts. Your chosen AI applies feature changes and upgrade plans, and you review them.

Which source license applies?

The existing Foundation remains MIT-licensed. New premium tooling and recipes have separate commercial terms. Third-party packages retain their own licenses.

Does the starter include app authentication or payments?

No. Your Autotomy account buys developer tools. Your app’s identity, backend, payments, signing, and store release remain product decisions.

Notes on building with AI

Read the journal