A space for your own days.
A writer, a translator and a beekeeper. Picture what one day could look like.
Your tools and your assistant in one place you own.
Nordvik Interiors' mm and cm mix is approved, #1268. It goes out with the next release.
Good, I'll tell Ebba. Vainio Joinery is asking about slow plans again, the same one as KP-425.
The fix for Rebane Kitchens' export is in review, #1287. A wall with two openings stopped it at wall 3.
Trying it on their project now. My e2e run on #1276 still has 3 failures, unrelated.
@Antti Harju Joinery has been locked out since Monday. The €240 renewal was declined on Nov 2, next retry Nov 6, and they have a kitchen going to the CNC on Friday. Can we hold it open?
Mikko also has the Studio proposal open, €7,080. I'll call him once the card is sorted.
A made-up studio’s space. These extensions are examples of what can be built on SpaceMIX: most don’t exist yet, and the ones that do look different. Product names belong to their owners. The chat is scripted and faster than real time, and its model name and speed are for show.
Your space
On your own computer, or on a server you pick. Or, coming soon, on one we run for you.
Stored on this server. Everyone on it sees the same data.
Each server has its own members, and everyone on it sees the same data.
https://kaarna.example
Maija Laine
maija@studiokaarna.example
Your account is managed by SpaceMIX Hub
Edit your name and preferences there · https://spacemix.ai
The address others reach this server at, used in invite links. Leave empty to use the server's address above.
Your data lives in one place on this server.
Your AI
You choose the model. It works across everything.
The models the assistant can use, stored on this server for everyone on it.
Connect any OpenAI-compatible endpoint, a coding agent's CLI on your own subscription, or a SpaceMIX Hub model from below, each with its own settings. Local runtimes keep every prompt on your machine.
llama3.2 · http://localhost:11434/v1
qwen3 · http://localhost:1234/v1
gpt-5 · https://api.openai.com/v1
Studio model
Studio is where widgets and extensions are built; its chats can use a different model.
Models run by SpaceMIX Hub, billed per token to this server's SpaceMIX Hub credit. Prompts go through SpaceMIX Hub to the model; the Hub keeps only token counts and cost, never the messages.
When SpaceMIX Hub offers models, they show up here to add.
What this server spends on SpaceMIX Hub models. Everyone who may use Hub models spends from it.
Balance
€0.00
No card saved
This month
€0.00
No monthly limit
Recent activity
Top-ups and what Hub models cost show up here, newest first.
Mix
Whatever your days need, side by side. If it doesn’t exist yet, someone will make it. It might be you.
Find extensions for your servers, or sell your own.
Browse and edit the people, companies, opportunities and custom objects in your Twenty CRM.
v0.1.7·by SpaceMIX Team·0 servers
Can send data to any host it asks for. · 5 risks under Technical details
Free. Install it on any server where you can manage extensions.
Browse and edit the records in a Twenty workspace: people, companies, opportunities, notes, tasks and any custom objects. The assistant can read and change the same records.
twenty/
index.ts Entry point: manifest + view + action handlers
manifest.ts Id, permissions and the actions offered to the assistant
actions.ts Action handlers, written against lib/client.ts
lib/types.ts Settings, object/field metadata, records, list parameters
lib/client.ts The REST client (auth, envelopes, errors, metadata, search) and display helpers
lib/events.ts Declared events; the client emits them after each create and update
lib/settings.ts Connection settings, shared by the view and the actions
lib/mcp.ts The connection to Twenty's own MCP server (`mcpServerFor`), and which of its tools ask first
lib/hooks.ts Live data hooks for the view
lib/route.ts The view's route (Back/Forward, links): parse and format
lib/viewState.ts Saved view per object (columns, sorts, filters, layout) → Twenty filter/order_by strings
lib/related.ts Hooks for a record's timeline, tasks, notes, files and links
view/ The view, laid out like Twenty itself (see below)
It copies Twenty's placement of things, not its styling:
ObjectRail: Twenty's navigation drawer: workspace menu, Settings, then the "Workspace" objects (People, Companies, Opportunities, Tasks, Notes, then the rest) and custom ones.IndexPage: header with the object name, "New record" and "⋯"; ViewBar under it (view picker, Filter, Sort, Options, and a chips row for what's applied); then RecordTable or Kanban. Selecting rows brings up the floating action bar (Delete, Export).RecordTable: checkbox column, sticky name column with avatar and an "Open" button on hover, field icons in headers, a "+" header for hidden fields, inline cell editing (CellEditor), "+ Add New" row and a "Count all" footer. More rows load on scroll.Kanban: one column per option of a select field (Stage for opportunities), drag cards between columns.RecordPanel: the side panel next to the table, or the full show page when "Open" is pressed. Summary card, fields as label/value rows, relation sections, and the Timeline / Tasks / Notes / Files tabs (view/record/). Notes and tasks show their body and what they're linked to.chips.tsx and icons.tsx: Twenty's value chips, select tags, avatars, and object/field icons (Tabler names mapped to Lucide).The listed object, the open record and how it's shown are the view's route (lib/route.ts), so Back and Forward step through them and a reload reopens the same place:
| Route | Opens |
|---|---|
"" | People (or the first standard object) |
<list> | That object's index, by plural name: companies |
<list>/<object>/<id> | A record in the side panel beside <list>'s index. <object> can differ from <list> after following a relation |
<list>/<object>/<id>/page | The same record's full show page |
…/<id>[/page]/<tab> | With the tasks, notes or files tab open instead of the first |
The connection dialog, menus, the view's filters/sorts (saved per object instead) and which pane a phone shows are not in the route. A route naming an object the workspace doesn't have falls back to the nearest page with replace; deleting the open record does the same. Notification targets (<object>/<id>) open the record over the current list as a new step.
Twenty is remote and is the source of truth. Nothing is cached on disk except the connection settings (server URL and API key, under host storage key settings), so the view and the assistant always see what's in Twenty.
createClient(settings) in lib/client.ts, a wrapper over host.net.fetch that sends the key as a Bearer token and turns failures into a TwentyError that says how to fix them (bad key, unreachable server, Twenty's own validation messages).net:* because the user names the server; the app asks once per new host./rest/metadata/objects, fetched once per client and kept in memory. Only active, non-system objects and active fields are used. The actions keep one client per server + key; the view builds its own./rest/{namePlural}. Writes made through any client fire changes, so the view refetches after the assistant edits something.summarize turns a record into the compact form the assistant sees: composites flattened to text where nothing is lost, related records as { id, label }, long text cut off.Twenty's metadata format differs between versions (paginated data: [...] now, data: { objects } before; relation targets under relation, fromRelationMetadata/toRelationMetadata, or only settings.joinColumnName). The client reads all of them; see relationOf.
Links in the view (web links, attachments) open through host.shell.openUrl; email addresses and phone numbers are copied, since the frame can't open them.
Twenty has no collections, so these are all its events. lib/client.ts emits them after every successful create and update made through SpaceMIX (view and assistant alike); changes made in Twenty itself, or through its own MCP tools, aren't seen. Twenty's system records (the links between tasks or notes and records) are left out. Both target <object>/<id>, which opens the record.
| Event | When | Payload |
|---|---|---|
record_created | A record was created: a new row or card, a note or task on a record, twenty_create | object (plural name), objectLabel, id, title |
record_updated | A record was changed: a cell or field edit, a board drag, a relation, a task ticked, twenty_update | object, objectLabel, id, title, changed (field names sent) |
twenty_objects, twenty_fields, twenty_list, twenty_get, and, with the user's approval, twenty_create, twenty_update, twenty_delete. They need the extension to be connected; until then they return an error asking the user to paste an API key.
The assistant also gets every tool of Twenty's MCP server ({serverUrl}/mcp, same API key), prefixed twenty_. They're listed when a chat turn starts (cached for five minutes) and only while the extension is connected. Read-only tools run directly; anything else asks for approval (see "MCP servers" in EXTENSIONS.md). A server tool whose name matches one of the actions above (objects, fields, list, get, create, update, delete) is left out, since the action is tuned for this extension, and the chat shows a notice. If the server can't be reached or rejects the key, the chat shows that too and the actions above keep working.
No ratings yet.
To rate it, sign in to SpaceMIX ID on a server that has it installed.
Can send data to any host it asks for. Once it's installed on Studio Kaarna, it can send what it reads there. The requests it makes through SpaceMIX (host.net and git) are logged by host, and its network can be turned off, in Settings → Extensions → Data leaving.
Can ask to reach any host
It may connect to any address. The first time it reaches a new one, someone on this server is asked; once allowed, that address is allowed for everyone.
May use MCP servers on those hosts (any port)
MCP calls are made by the app directly, not through this server, so they are not in the network log.
Can load images, media and pages from any address
Its view may load pictures, audio, video and embedded pages from anywhere without a network permission, and could put data in those addresses. These aren't logged.
WebRTC isn't blocked
Browser peer-to-peer connections aren't covered by the frame's restrictions, so data could leave that way. These aren't logged.
Can open any web address in your browser
Every extension can open a link in a new browser tab, with data in the address, without asking for a permission. These aren't logged.
The big idea
A space you own, and a community building everything it can be.
That community is still to come. People will build things here that we can’t picture yet. It starts with one person’s need.
Then it starts again, with someone new.
Your extension appears here
Describe it in the chat, or start from one of these:
0 visits
3 visits
Together
Send a link. They’re in.
Who's on this server. Inviting and removing people needs the Members permission.
People join with an invite link and sign in with their SpaceMIX ID.
Maija Laineyou
maija@studiokaarna.example
Sofia Lind
sofia@studiokaarna.example
Elias Koskinen
elias@koskinen-rakenne.example
Ville Aho
ville@sahkoaho.example · Engineers · expires in 7 days
Send this link to the person you're inviting. It works once and expires in 7 days.
Where next
A writer, a translator and a beekeeper. Picture what one day could look like.
Who can do what, where your data lives, and building exactly what your team lacks.
What people will build, and how your name stays on it.
Open source
SpaceMIX’s core is open source under the AGPL-3.0; extensions are licensed separately. Run it yourself, for free. Our services make the start easier. You don’t need them.
The core of SpaceMIX, the app and the server, is open source under the AGPL-3.0. Run it on your own computer or server, and change what you need. Extensions are licensed separately.
Coming soonOptional service
Managed hosting is coming soon. We’ll run the server for you or your team, the same open-source SpaceMIX you could run yourself.
Create your accountComing soonOptional service
Hosted open models are coming soon: pay only for the tokens you use. No GPU to set up and no separate provider account.
Or bring your own model. Use many AI providers, or a model running on your own computer, and switch whenever you like. A server runs with no Hub at all, so none of our services are required.
Run SpaceMIX yourself, for free. Create a SpaceMIX ID when you want one sign-in across servers, or soon a server we host.