Deploy on Vercel
This is Previously's recommended form: the same kernel running inside your own Vercel project, with your own private GitHub repository as the memory backend — no database; the same files, just lying in your repo. You get a tab you can open from anywhere (including your phone's browser), plus the full cloud execution capabilities (durable runs, resuming after dropped connections — see How a Cloud Turn Works).
If you'd rather not deploy anything, the local npm client is the optional other path — see Getting Started.
Single-user product, no login system. The cloud kernel has no accounts: anyone who gets your deployment URL can use your instance and read your memory. Guard the URL, and set ACCESS_SECRET if needed (see "Defenses" below).
Steps
- Create the private repo. On previously-lab/agent, click Use this template to create your copy, and make it private — it will hold your memory data.
- Create a token. A GitHub fine-grained personal access token, scoped to only this repository, with Contents: Read and write.
- Deploy to Vercel. Import the repo, set the environment variables, hit Deploy.
GITHUB_TOKEN=github_pat_... # the token from step 2
GITHUB_REPO_OWNER=your-username
GITHUB_REPO_NAME=your-private-repo
# a provider key for the main model (OPENAI_API_KEY / ANTHROPIC_API_KEY / … pick one)
DEEPSEEK_API_KEY=sk-... # powers the search colleague's web retrieval
# ACCESS_SECRET= # optional: access key for non-browser callers
The cloud brain comes in exactly one kind: your own provider API key. Whichever provider's key you set, that provider's models appear in the settings page — this is the fullest experience. DEEPSEEK_API_KEY is reserved for the search colleague (webSearch's provider retrieval) and has nothing to do with the chat model.
The machine-layer facts the local form writes into ~/.previously/config.json (port, backend, brain) are carried by these environment variables in the cloud; the memory-layer preferences (memory/user/config.json, profile.md) are identical across both forms — they live in the repo either way. See Configuration.
Defenses
Mutation endpoints sit behind a same-origin guard: calls from your own browser pass automatically; non-browser callers like curl or scripts need an x-access-key header once ACCESS_SECRET is set. If you only ever use your own browser, you can leave it unset. The execution model behind the guard is in How a Cloud Turn Works.
Upgrades
Upgrades ride on GitHub: Sync from upstream in your instance's settings page merges upstream changes into your repo as a proper merge commit, and Vercel redeploys right after. The sync touches code only — it never overwrites what's in memory/.
Related
- How a Cloud Turn Works — how each chat turn actually runs after deployment
- Getting Started — the entry point for both ways to run
- Architecture — one kernel, two storage homes