macro README

The project's README from github.com/macro-inc/macro. As one markdown file: README.md.

Frame 11

Sign up · Docs · Book demo · Website · Feature requests · Contribute · Hiring


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
Email 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:

  1. Multi-account. Triage all your Google accounts in a single inbox, with the same tagging and sharing system. Or triage individually.
  2. Unified inbox: emails, messages, @mentions, and tasks to complete, all in the same list. Use j k and e to navigate everything.
  3. 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.

Macro email thread with actions, tags, and properties in the sidebar

  1. 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.
  2. Company/Contact objects. Macro has native CRM capability so you can cmd+k to a contact, like [email protected] 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, e.g. @acme.com. 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.

Email docs →


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.

Macro #Engineers channel with threads, mentions, and an inline GitHub check

Messages docs →


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 (e.g. Slack, Macro, Discord, etc.) 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.

Macro tasks list grouped by assignee, with a task detail showing its source message and linked PR

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.

Tasks docs →


@linked markdown docs powered by CRDTs

We wanted everything in a single markdown editor without switching tools.

A PRD in Macro with tags, assignees, properties, and references

Agents can edit documents that are open or closed. One interesting use case for agentic editing is to maintain team-context. For example we have a Macro Automation that runs daily to update our in-office Pool Games markdown doc. It scans through all of the channels to see if anyone has one and then updates the doc. If somebody has already edited the doc, it can know that and forgo the update. Conflicts are handled natively by the CRDT collaboration system.

Docs →


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. We went through all the CRMs, including the new AI-native ones, and while they're well-designed they're just structurally set up to fail over time.

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. It's not your fault, it was the CRM's fault!

Macro CRM board grouped by pipeline stage

We haven't innovated on the core idea of CRM other than what you read in the above paragraph. None of this should be that interesting:

CRM docs →


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. The net result:

Team memory comes in quite handy. For example, I took a screenshot of some features I'd written in a paper notepad and asked the agent to create tickets and assign to the appropriate engineer which it did perfectly without any runtime tool use.

A Macro task being handed off to a coding agent, with a linked branch

Memory isn't supposed to encompass everything. Macro also has a tool/MCP surface with near 100% coverage of the things you can do in Macro's UI, so that your agents aren't limited in what they can do like they are in most SaaS. There are also no rate limits on MCP.

Agents docs →

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

See MCP setup and agent recipes for what they can do once connected.


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.

Deeper reading: key concepts covers blocks, mentions, properties, and permissions; the FAQ covers comparisons, licensing, and self-hosting.


Using the hosted app

Sign up and connect your Gmail or Google Workspace account. Macro runs in any modern browser, with an iOS app for your phone. The getting started guide takes you from a fresh account to a working setup in about 15 minutes. Coming from Notion, Slack, Superhuman, or Linear? See Switch to Macro.


Running it locally

To run the frontend against hosted services, or to run the local stack, follow Running locally.

To contribute, see CONTRIBUTING.md.


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

Services follow a hexagonal layout: inbound adapters, a domain core with ports, outbound adapters. docs/STYLE_GUIDE.md has the conventions and CONTRIBUTING.md covers the PR process.


Security

ISO 27001 and SOC 2 Type II badges

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. Send reports to [email protected].


License

Macro is fully open source — not "open core" — under the GNU Affero General Public License v3.0. See LICENSE.txt for details.

You can self-host Macro under the terms of the AGPLv3; the FAQ covers what that involves. If you want to build on top of Macro under a different license, contact [email protected]. For managed hosting or commercial arrangements, contact [email protected].


Community

Have an idea, want to contribute, or want to work on Macro?


Star us on GitHub

If Macro is interesting/useful to you, please scroll up and give the repo a star (scroll to the top of this page -> click Star in top right). Stars are how most users hear about Macro because they move us up GitHub's search and trending pages.

macro (macro-inc/macro)

Searching Database…

4.7K ·GitHub
这是什么?Macro 是面向团队的一体化工作区,把邮件、聊天、文档、任务、智能体、通话和 CRM 统一到一个快捷的界面里,并带有共享的团队级 AI 记忆,不必再周旋于 Slack、Linear、Notion、HubSpot 和 Superhuman 这些各自独立的工具。
这是一个应用,还是一堆拼接起来的集成工具?它是一个由模块化“块”组成的应用(Email、Messages、Tasks、Docs、Canvas、Agents、Calls、CRM 等),全部共享同一个后端,文档、任务、邮件或消息之间的每个交叉引用都以双向图的形式原生存储。
我实际要怎么用上 Macro——有网页版、桌面版还是移动版?Macro 目前提供网页应用和 iOS 应用,Android 版即将推出;代码库是一个 monorepo,web 客户端位于 apps/web,使用 Bun 和 TypeScript 工具链(Biome、tsc)构建。
使用它需要 Gmail 账号或特定 AI 服务商的密钥吗?邮件功能连接 Google 账号来做统一收件箱分诊,AI 功能则通过模型选择器工作,支持 OpenAI、Google 和 Anthropic 的模型,不会把你锁定在某一家服务商。
目前还有哪些不完善或缺失的地方?文档版本控制还处于 v1——只有基础的历史记录和分叉,还达不到完整的 git 级追踪——而且 Android 应用尚未发布(网页版和 iOS 版已可用)。
我的数据实际存在哪里——是同步到服务器,还是可以离线工作?文档通过由 Cloudflare durable objects 支撑的 CRDT 实时同步,实现近乎即时的协作;同时也支持离线编辑,重新联网后会自动合并。
Macro 的 CRM 与 HubSpot 或 Salesforce 有何不同?它与团队聊天和邮件同处一处,而不是一个独立系统,因此 @提及某个公司或联系人会创建指向该对话的实时双向链接,每笔交易也会自动获得自己的置顶频道。
AI 智能体实际上是怎么与 Macro 交互的?智能体被视为一等协作者:它们可以直接编辑 CRDT 文档(包括已打开的文档)、创建任务、起草并发送邮件,并通过 MCP 使用任何已连接的模型(OpenAI、Google、Anthropic)从统一的团队记忆中获取信息。
为什么要打造一套全新的系统,而不是把 Slack、Linear 和 Notion 组合起来?在把上一家创业公司扩展到约 20 人之后,创始人发现用 MCP 和 Zapier 拼接各类顶级工具会让公司变得“不可计算”且混乱,于是他们把所有东西重建为一个建立在共享双向图后端上的统一系统。
共享的团队记忆是如何构建的?一个每日定时任务会把团队对话、私信、收发的邮件和已完成的任务合成为一个 markdown 记忆文件,并与之前的记忆合并,智能体和任何 AI 模型都能通过 MCP 访问它。
Creator
macro-inc
Size
1.8 GB
Stars
4.7K
Age
11mo
Commits · 90 Days