Migrating from v1
v2.0.0 is the team-workspace rebuild. Solo data carries forward untouched; the surface around it changed in a few specific places. This page covers what moved and what to do about it.
The headline change
v1 Switchy was a multi-model chat with private memory. v2 is a shared workspace where teammates, models, and MCP tools all chat in the same room. If you were using v1 alone, nothing in your chats or memory has been deleted; what used to be your account is now your org, and your existing chats live inside one starter Space.
Account → Org
- Your user record is unchanged. You still log in with the same email + password (or Google).
- An organization named after you was created the first time you logged in to v2. You are its OWNER.
- Your existing sessions were moved into a Space called General inside that org. Conversation history, memory, attachments — all still there.
Memory: now has visibility
v1 memory was implicitly "mine." v2 memory has three visibilities:
PRIVATE— only you can read it.SPACE— anyone in the Space can read it.ORG— anyone in the org can read it.
Every memory imported from v1 was set to PRIVATE. If you want a piece of context to be teammate-visible, edit it in Settings → Memory and bump the visibility. Retrieval enforces the same rules at the SQL layer, so you can't accidentally surface a private note in a teammate's search.
Billing: now org-scoped
v1 credits were per-user. v2 credits are per-org on Team plans, per-user on Starter and Pro. If you were on the v1 Pro plan:
- You were re-mapped to the v2 Pro plan at the same price.
- Your v1 credit balance was carried over as a one-time top-up that never expires.
- If you upgrade to Team, the same balance moves to the org pool on the same terms.
Full mechanics: Team billing guide.
SDK: namespaces changed
v1 SDKs (@switchy-ai/sdk@0.1.x, switchy-sdk@0.1.x) had a flat surface — client.chat(), client.memory.search(), etc. v2 (0.3.x) is org-scoped:
// v1
const reply = await client.chat({ model: 'claude-sonnet', message: 'hi' });
// v2
const space = await client.spaces.create({ name: 'General' });
const session = await client.sessions.create({ spaceId: space.id });
await client.messages.send({
sessionId: session.id,
body: '@claude hi',
});Old SDK calls keep working for one minor cycle and emit a deprecation warning. The new namespaces are: spaces, sessions, messages, memory, invitations, members, billing.
Side-by-side migration tables ship in the SDK README; we'll link them here once SDK 0.3.0 publishes (see the v2.0.0-wave-10 changelog entry).
API: same auth, new surface
API keys minted in v1 keep working. The v2 API adds /spaces, /sessions, /messages, /invitations, /members endpoints and reorganises memory under /memory with a visibility filter. The OpenAPI 3.1 spec is at /api/openapi.json and rendered at API reference.
MCP: now bidirectional
v1 only let you talk TO the AI. v2 lets the AI talk to your tools (GitHub, Notion, custom HTTPS MCPs) and lets your client (Claude Desktop, Cursor) talk to Switchy.
- To install Switchy as an MCP server in Claude Desktop, see Quickstart 4.
- To connect external tools INTO Switchy, see MCP integrations.
What broke
Two things from v1 are gone:
- Per-user "default model" — replaced by the Space's default model + per-message
@mention. Model preferences from v1 became Space defaults on the General Space. - The v1 dashboard
/docspage — replaced by these public docs. Old in-app deep links auto-redirect.
Questions
If something carried over wrong, get in touch with your v1 user ID — the migration job logs every step and we can replay individual records.