Macro (GitHub Repo)
Macro is an all-in-one workspace that uses a bidirectional graph to link email, chat, docs, tasks, and CRM into a unified team operating system.
Deep dive
- Unified Architecture: Uses a bidirectional graph for all entities (emails, tasks, docs, CRM).
- Core Technologies: Built with SolidJS for the frontend and Rust for backend reliability.
- Integration Strategy: Aggregates multi-account Gmail inboxes alongside internal team communication.
- Task Management: Implements lightweight issues linked directly to chat and email threads.
- Agent Support: Native MCP (Model Context Protocol) support allows external agents to access the entire workspace graph without rate limits.
- Collaborative Docs: Uses CRDTs (Conflict-free Replicated Data Types) for real-time markdown-native editing.
- Open Source: Licensed under AGPLv3, allowing for self-hosting.
Decoder
- Bidirectional Graph: A data structure linking two items so they can reference each other, ensuring that updating one affects or reflects in the other.
- CRDT: Data structures that allow multiple users to edit the same data concurrently without conflicts.
- MCP: Model Context Protocol, a standard for connecting AI models to external data sources and tools.
Original article
Macro is the all-in-one workspace for you and your team. It unifies email + messages + docs + tasks + agents + CRM into a single fast interface with shared team-level memory. Everything in your workspace is @linked and searchable so your team (and your agents) never have to switch tools.
Why Macro
We built Macro because we wanted a single operating system for our startup. There are many good software products, and we used them all — Slack, Linear, Notion, HubSpot, and Superhuman — but they don't work together as one system. As we scaled our last venture to ~20 people things started to break: every team got their own tools and the company was held together by MCP and Zapier. The company was not computable. It was chaotic.
Macro is a complete redesign of work software from the ground up as a single system.
Designed by us in NYC and Toronto, dogfooded by our team of ~15 for two years. Built in SolidJS and Rust for speed and reliability. We're focused on building something that any small company or team at a larger company can use as their "operating system".
Features
Macro is composed of 'blocks' designed to be modular, extensible, and work together like Lego. For each block, we studied the best prior art and tried to make it even better.
Each surface is purpose-built for its job rather than composed from a generic block primitive — but every one of them shares the same backend; cross-references between a doc and a task, or a channel message and an email, are natively stored as a bidirectional graph.
| Block | Docs | What it does |
|---|---|---|
| Docs → | Multi-account unified inbox, keyboard shortcuts, and shared inboxes. Gmail. | |
| Messages | Docs → | Channels and direct messages designed for focused technical discussions. |
| Tasks | Docs → | Linear-inspired tasks, tightly integrated with channels, email, and agents. |
| Docs | Docs → | Real-time collaborative, markdown-native docs built on CRDTs, with @mentions. |
| Canvas | Docs → | 2D board with embedded @links to tasks, files, and emails. |
| Agents | Docs → | Unified, team-level memory. Can take action on your behalf. |
| Calls | Docs → | Recorded, transcribed, and logged to team memory for agents. |
| File storage | Docs → | Auto-imported from email and channels, fully searchable. |
| Pull requests | Docs → | Linked to tasks, embeddable in channels, available to agents. |
| CRM | Docs → | Customer and contact objects, custom properties, email sync, enrichment. |
Multiple email inboxes w/ good AI tools, integrated CRM
Macro Mail is inspired by Superhuman's keyboard-first interface with a few key additions:
- Multi-account. Triage all your Google accounts in a single inbox, with the same tagging and sharing system. Or triage individually.
- Unified inbox: emails, messages, @mentions, and tasks to complete, all in the same list. Use
jkandeto navigate everything. - Better AI, with a tools/MCP surface designed to work across inboxes and to help your agents more accurately retrieve information. For example, we expose a unified search tool that allows agents to search all file attachment PDFs (parsed out of email) directly, rather than pulling email threads then attachments. You can also draft, edit and send emails right from AI chats, without opening your email.
- Multitasking ability — Macro has a built-in window manager that lets you create 3+ splits (scales with monitor size) so you can draft emails while reviewing prior threads.
- Company/Contact objects. Macro has native CRM capability so you can
cmd+kto a contact to see all emails between you and that person, or companies, to see all emails and files between everyone on your team and everyone at that company. All of this right from your email without having to open a heavyweight CRM like HubSpot or Salesforce. Email aggregation by contact or company is also available to your agents so they can better assist with CRM-type queries and actions.
Macro Mail lives in the same interface as channels, docs, tasks, and code. From any email, hit "task" to create a linked task, e.g. a ticket for an engineer from a customer support email. @mention emails in documents, e.g. @Re: Contract Signature.eml inside of Todos.md. In Macro, your email is brought into the fold with all of your tools, and your team, in the same permissions system: just hit Share to share an email to any DM or channel — no need to screenshot.
Team chat for focused technical discussions
Macro Chat is designed to be more focused than Slack. The first couple of replies show inline and the rest collapse into a thread, so a busy channel stays readable. Threads are permissioned severally so you can share threads across channels by copying links. Everything is stored in a bidirectional graph, so tasks @link to messages that created them, customer support emails tie into support channels, CRM records get updated when they're discussed in messages, etc. The core idea is that (i) messaging should be the centerpiece around which tasks, mail, docs, and content management are built, all in a lightweight way, and agents should be first-class citizens like human users and (ii) messaging needs to be more focused and readable for technical conversations, and not turn into battles where context is lost and progress is indistinguishable from noise.
Task management built around chat
Linear recently published a report that issue tracking is dead. We agree with that, but the stronger form is that issue tracking never really worked, at least for us. We really tried and we blamed ourselves, but as we talked to other companies, it turns out that nobody was using their issue tracker "correctly". And if that's the case, the problem is the design of the tool, not the companies that use it.
The core problem with traditional issue trackers or project management tools is that they get out of date. The reason they get out of date is that (i) they're a separate system from where the conversation really happens in team chat and (ii) they don't add much benefit beyond tracking the work. They're a chore with near-term costs and only the promise of long-term benefit. They're too rigid compared to a 2D canvas, too opinionated, and don't match how your project actually functions.
The solution isn't to forgo tracking entirely. We tried that and it was a different form of chaos. The solution we've found is lightweight issues tightly coupled to your channels and DMs, so that issue tracking naturally occurs where the conversation itself happens.
Creating tasks in Macro is easy. Where possible, tasks created are bidirectionally linked to the creating context (e.g. a customer email) so the full chain is auditable from "why are we doing this" → task → agent → pull request, all in one system.
- Create a task from an email
- From anywhere via
ct - From a markdown doc with
/task - From any
- [ ]bullet by highlighting and clicking "Task" @Macrocreate tasks in any channel or DM- In any agent chat
- Via external MCP, API or SDK
@linked markdown docs powered by CRDTs
We wanted everything in a single markdown editor without switching tools.
- Native markdown compatibility and bulk/import export.
- Live collaboration with CRDTs and Cloudflare durable objects make it feel like you're editing on the same computer. Edits come in ~instantly.
- Version control: history and forking, with a neat UI for scrubbing history.
- Offline editing and reconciliation.
- @-linked to everything in your workspace: email, docs, tasks, messages, channels, companies, contacts, etc.
- Mobile-friendly, in our iOS app or on the web.
- Agent native editing, powered by swarms of agents operating as peers in the CRDT collaboration system like human collaborators.
CRM that keeps itself up to date
The problem with standalone CRM is the same as with task trackers: it's not up to date. The CRM only partially reflects reality, so if you want to know what the latest status on a deal is you still have to message the AE/SDR and ask for context. CRMs are also too rigid and closed-source, while DIY CRMs in Airtable/Notion don't provide email aggregation by Company/Contact/Deal that is the core feature of CRM.
Macro fixes this by colocating your CRM with your team chat and email, instead of having a separate system. When you @mention a company record in a message, your team can click that record to see the latest — it's much faster than navigating to your CRM to find the record, going back to Slack and pasting it in, and this speed difference makes all the difference. Secondly, @mentioning a Company/Contact creates a bidirectional link between that message and the record, so from the record later you can trace the conversations that happened. This fixes the core issue we had with Attio/HubSpot/Salesforce: the actual important conversation about a deal happens not in the CRM but over messages. Macro makes this a feature rather than making you feel disorganized about it.
- Kanban board and customizable deal stages, list view, saved views, shareable views, personal and team views, etc.
- "Notes" on the company actually use the same system as channels/DMs, so you can @mention and do all of the things you expect in a channel. Basically, every deal gets its own channel, automatically, that's pinned right to the deal record.
- @mention the company or contact from any note, message, task, pull request, etc., to create a bidirectional link between the record and that thing.
Agents and unified team-level memory
Since Macro has the team context in a single database, it is uniquely positioned to offer team-level memory with full context of all of the operations of the business. We do this every day via a cron job. Your memory is updated from team conversations, your DMs, your sent and received emails, tasks created and completed, etc. All of this is synthesized together in one pass, rather than severally, and combined with your previous memory to form the new memory output.
- Macro has the best memory on what you're working on and what you care about vs. chatbots that only build memory from prior chats.
- This memory is available to external agents via MCP, or any AI model (OpenAI, Google, Anthropic, etc.) through the model picker for maximum portability.
- The memory is plainly stored in markdown so you can export it as you please. To manually update it, just ask the AI to remember something/update your memory.
Your coding agents can use Macro too. Point Claude Code, Codex, or any MCP client at your workspace:
claude mcp add --transport http macro https://mcp-server.macro.com/mcp
How it all works together
As we've discussed above, each of the blocks is designed to be best-in-class. We have thoughtfully designed each of Chat, Docs, Email, Agents, etc., to improve on your status quo individually. But where it all comes together is how it's more than the sum of its modules; it's how they work together.
Bidirectional @linking. @mention a doc in a message and both know about each other. Your workspace becomes a web of context you can navigate in either direction.
Channel-based permissions. Anything you @mention in a channel is automatically shared with its members. Join a channel, gain access; leave, lose it. No permission-request dance.
Unified memory. Agents remember what your whole team is doing across email, messages, tasks, docs, and calls, not just your own chat history. Refreshed nightly.
One inbox. Emails, channel messages, task assignments, @mentions, and agent responses all land in one place, split into Signal and Noise. Keyboard-first throughout.
Layout
macro/
├── apps/
│ ├── web/ SolidJS client — browser, Tauri desktop, mobile
│ └── docs/ docs.macro.com
├── services/ 42 deployable services, workers, and Lambda handlers
├── crates/ 167 Rust libraries — domain logic, models, db clients
├── packages/ shared TypeScript — collaboration, lexical-core, loro-mirror
├── infra/ Pulumi definitions
├── docker/ local Compose stack
├── nix/ pinned dev shell and build inputs
└── tooling/ repo scripts and code generators
Security
Enterprise-grade security. Zero data retention with model providers, including no training on customer data. SOC 2 Type II certified. We welcome responsible security reports and pay bounties in accordance with severity and impact.
License
Macro is fully open source — not "open core" — under the GNU Affero General Public License v3.0.
Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi