SkyTwin
Open-source personal AI. A digital twin that learns what matters to you, with you in control.
Imagine opening your day to a short list of what needs you, with the context already there: what happened, why it matters, and what your AI thinks you would want to do. Correct it once, and see what it learned.
That's the experience SkyTwin is building. Your digital twin is a growing model of your preferences, risk tolerance, and decision patterns. The goal is fewer repeated explanations and less routine decision work, with a visible reason behind each suggestion and clear limits on what it may do for you.
If personal AI already appeals to you, SkyTwin gives you a way to explore the next question: how should an assistant learn your judgment, earn permission to act, and stay accountable as it improves? You can inspect its memory, correct its assumptions, choose where reasoning runs, and adapt the source.
Download the current desktop alpha · Explore SkyTwin · Take the five-minute tour · Run the latest source
Try it today: the current unsigned desktop alpha is a real packaged app for Apple Silicon Macs, x64 Windows, and x86-64 Linux—no source checkout required. On first launch, create an account by supplying a Google Web Application OAuth client that you create and control; the desktop window runs the local dashboard and walks you through the consent flow. After the first account is established, an authenticated browser can use the same dashboard at http://localhost:3200. A fictional-data sample remains available when you do not want to connect an inbox. This is an alpha release: expect OS warnings, and do not interpret it as a managed OAuth service, Google verification, signing, or notarization claim.
Actual app screenshot from a source development run, using fictional sample data. The messages, account indicators, and “handled” counts illustrate the product; no real account is connected and no real task was executed.
A personal AI you can get to know
The core principle is ask the twin before asking the user. The intended experience brings a few things together:
- Know what needs you. A briefing separates things to act on from things to catch up on, with the source behind each item.
- Stop repeating yourself. Preferences have supporting evidence, confidence, and a history you can inspect. You can see what the twin believes and correct it.
- Understand the suggestion. Review what happened, which preferences mattered, why an action was proposed, and how to change its mind.
- Give it room at your pace. The policy model starts with suggestions and checks trust, spend, risk, reversibility, and origin before considering an action. You decide what authority to grant.
- Keep your choices yours. Local reasoning is the default and does not silently fall back to a remote provider. Hosted reasoning is an explicit choice. The code is Apache-2.0 licensed.
The current desktop alpha lets you connect a real Gmail inbox through your own Google OAuth app. Use its desktop window for first-account setup; the same local web dashboard can be used in a browser that already holds a valid SkyTwin session. The fictional sample lets you experience the review-and-correct loop without connecting an account. The Gmail path is an advanced alpha capability—not a supported managed SkyTwin OAuth service or a claim of current Google verification.
Try the experience
For the fastest real-app path, download the current desktop alpha. Start with the screenshot-led walkthrough, or follow the source start guide to explore the fictional sample yourself. You do not need an inbox, credentials, or an AI provider key for the sample.
- Meet the sample twin. Open the fictional profile's briefing and see what needs a decision, alongside what is just useful to know.
- Follow a suggestion. Inspect a decision, the evidence behind it, and the explanation of why it needs approval.
- Try a correction. Use the sample's simulated approve, reject, or correct controls and see the session-local learning. The product views are read-only; these interactions have no provider, connector, or execution-adapter effects.
- Explore what it remembers. Visit “What I've learned” to see the preferences behind the suggestions. Think about which of your own routines you would want a twin to learn.
For a plain-language walkthrough, begin with how to use the fictional sample, then use the documentation site: how to start, how safety works, where inference runs, and the five-minute fictional-data demo.
Where this is headed
These examples explain the intended judgment model; they are not a list of workflows included in the current desktop artifacts. The beta release contract below limits launch support to workflows backed by tagged-artifact evidence.
| Future scenario | Intended experience |
|---|---|
| Newsletter arrives | Your twin recognizes your archive pattern and proposes moving the message out of the Inbox. You confirm before the mailbox changes, and the explanation is logged. |
| Calendar conflict | You always prioritize skip-level 1:1s over standups. Standup rescheduled with a note to the organizer. |
| Subscription renewal | $15.99/mo streaming service, used 3x this month, 18 months of renewals. Auto-renewed within your spend norms. |
| Grocery reorder | Repeats your last order with your substitution rules. Flags the one item that jumped 15% in price. |
| Flight booking | Finds the United aisle seat, morning departure, direct, $380. At high trust: books it. At low trust: presents top 3 options. |
| Unknown sender email | Low confidence. Escalates with a one-line summary so you can decide in 5 seconds instead of 5 minutes. |
What makes the twin yours
Conversation connects to decisions. SkyTwin includes chat and an “Ask your twin” surface. Its broader goal is to bring the same personal context into briefings, suggestions, and eventually connected-account actions, so useful work can begin without a new prompt each time.
Trust grows domain by domain. New users start at observer — the system only suggests. Its trust model lets approvals and corrections inform autonomy separately for each domain; trust in email triage need not imply trust with your calendar. See the policy types and policy engine.
Safety constraints are the product. Typed candidate-action paths through the policy engine apply spend limits, trust-tier gating, reversibility checks, and sensitivity classification; the release-wide entry-path inventory remains a beta gate. The system can be inspected, overridden, narrowed, and shut off at any time. Read the full safety model →
Recorded decisions are inspectable. Supported paths can produce an explanation record covering what happened, the evidence and preferences used, the selected action, and correction guidance. Release-wide explanation coverage is still under audit, and a hosted model's internal reasoning remains subject to that provider's own transparency limits.
Your twin is inspectable. It's not a vector embedding or a bag of keywords. It's a typed, versioned data structure where every preference has a confidence level, supporting evidence, and provenance. Contradictions are tracked, not hidden.
Memory knows who said what. Signals from supported connectors arrive stamped with an authoring tier — content you wrote vs. a newsletter vs. an inbound stranger — and tier-weighted retrieval lets self-authored content outrank broadcast noise. The twin feels like it knows you instead of just having read your inbox.
You can teach a Watch. The source includes versioned, read-only signal-digest workflows: describe what to watch for, replay a candidate, compare revisions, and explicitly activate or roll back a version. These are a separate development surface, outside the disposable sample credential. Model-assisted authoring requires a qualified model, artifact, and runtime build; the current catalog's downloadable model has not cleared that quality gate. Explore Watches →
Go deeper when you're ready
| If you want to… | Start here | Then go deeper |
|---|---|---|
| Try the packaged desktop app now | Download the alpha | Alpha limitations and OS warning steps |
| Connect a real Gmail inbox from the app (or an authenticated local web session) | Gmail setup guide | Privacy boundary and Google API plan |
| Understand the idea without installing anything | Documentation site | Plain-language FAQ and glossary |
| See the product model safely | Five-minute fictional-data walkthrough | Safety model and data guide |
| Run and inspect the source | Source start guide | Operations guide and troubleshooting |
| Extend it with tools or agents | Agent and MCP guide | Architecture and reference |
The rest of this README covers installation, source architecture, deployment, and release status. The full documentation index keeps every technical guide within reach.
Quick Start
Download the desktop alpha
Open the SkyTwin desktop alpha release →
Download the installer for Apple Silicon macOS, x64 Windows, or x86-64 Linux and open the packaged app. No repository checkout is required. This is the quickest way to try SkyTwin as an application rather than only reading the tour or running the fictional source sample.
The alpha is unsigned. macOS Gatekeeper and Windows SmartScreen will warn on
first launch; follow the platform-specific steps below.
It packages current 0.6.106.0 source under the prerelease tag
alpha-0.6.106.0. It is not the planned supported v0.7.0-beta and does not carry
signing,
notarization, auto-update, or clean-machine evidence.
The same current alpha can connect a real Gmail inbox or open the account-free
sample. Keep the app running and open Connect Gmail in its desktop
window for the reliable first-account flow. The same page is served at
http://localhost:3200/#/connect-gmail, but a fresh browser does not inherit the
desktop's session token; use that browser route only after the browser has been
paired or otherwise authenticated. Create a Web Application OAuth client in a Google
Cloud project you control, add SkyTwin's loopback callback URLs, then paste the
client ID and secret into the wizard. SkyTwin requests Google identity,
Calendar, gmail.readonly, and
gmail.modify scopes and its worker uses the resulting grant to ingest live
signals. Use a test account first: the OAuth client secret and newly authorized
tokens are stored without app-level encryption in the alpha's configured
database, the build is unsigned, and supported Gmail/Calendar mutation is not
part of the capability claim. Follow the real-inbox setup guide.
Build from source (one-command, macOS / Linux / WSL)
curl -fsSL https://raw.githubusercontent.com/jayzalowitz/skytwin/main/install.sh | bash
The installer detects your OS, installs anything missing (Homebrew on mac, Node 20+, pnpm), fetches the official CockroachDB single-node binary (hash-verified), clones the repo to ~/skytwin, runs the bootstrap, starts the services, and opens the dashboard at http://localhost:3200 once it's up. Re-running pulls latest and restarts.
The command above intentionally follows the moving main branch. For a
reviewable, immutable source evaluation, use the exact-commit archive workflow
in Internal Source Candidates. Those
archives are source-only internal materials, not public releases, and preserve
the existing signed-artifact beta gate.
No Docker required. Before v0.6.56 the installer pulled Docker Desktop and ran CockroachDB inside a container — by far the heaviest dependency on the list, with its own EULA and a "open it once after install" gotcha. The default path now installs the CRDB binary directly into ~/.local/share/skytwin/bin/cockroach and spawns it as a child process. Docker remains supported via SKYTWIN_USE_DOCKER=true for users who already have a Docker workflow.
To stop later: cd ~/skytwin && ./bin/skytwin-dev --stop.
The first 60 seconds in a development/source run:
- The dashboard opens. "Ask your twin" can show a predicted action, confidence, alternatives, and an explanation; the exact model-backed path depends on an available local runtime or provider, while deterministic fallbacks cover supported paths when no model responds.
- After
pnpm db:seed, click "Just show me around" on the welcome screen to skip OAuth and use the development demo seed. Alex has recent decisions, a daily briefing, four pending approvals, "What I've learned", Capabilities, Search, and a trust bar climbing toward "handle most things". The development seed also includes Pat (a power user) and Carol (a brand-new user), so the dev "Switch user" button tells three stories. This development path can exercise mock approval actions; it is separate from the packaged build's read-only data authority and isolated, non-persistent simulation. - The welcome screen recommends a local model from the machine's RAM, architecture, and free disk. The current maintained catalog contains one pinned Qwen2.5 1.5B Instruct Q4_K_M artifact (about 1.0 GiB). The artifact is downloaded on request and must pass exact-size, SHA-256, registry, and runtime-compatibility checks before automatic discovery will load it. A compatible llama.cpp binary remains a separate prerequisite. The artifact remains available for ordinary local inference but is not qualified for adaptive-workflow authoring because it did not clear the checked-in quality gate. "Change" opens Settings → AI (and the local memory backend).
- Want to look around first? Press Esc, click the × in the modal corner, or hit Skip for now — the dashboard chrome stays navigable behind the modal, and a "Sign in" button on the placeholder gets you back into the wizard whenever you're ready.
- The packaged alpha offers both its isolated sample and the installation-bound
BYO Google wizard. Advanced source operators can explicitly enable the same
provider path with
SKYTWIN_GOOGLE_CONNECTION_MODE=experimental. Neither path is a managed or supported public OAuth service.
Advanced env vars
The default source install starts SkyTwin's core services without Docker or a hosted-model API key. Model-backed reasoning still requires an available local runtime plus verified model artifact, or a provider you configure. Power users can opt into:
| Env var | Effect |
|---|---|
SKYTWIN_USE_DOCKER=true |
Run CockroachDB inside Docker instead of as a native binary. Useful for users who already have Docker and prefer container lifecycle. |
SKYTWIN_DOCKER_SQL_PORT, SKYTWIN_DOCKER_ADMIN_PORT, SKYTWIN_DOCKER_API_PORT |
Override Docker Compose host ports for SQL, the Cockroach admin UI, and the optional API container. Useful when another Conductor workspace or local stack already owns 26257, 8080, or 3000. |
TURBO_DEV_CONCURRENCY |
Override the `pnpm dev |
