Replies, outreach and meeting promises turn into one daily queue of next actions, with the context your team and your AI assistant need to act on them.
Use it free · Docs · Quick start · Connect an assistant · Self-host · Contribute
Note
Gravity is a Preview. It is in daily use and developed in the open, but some integrations still need live qualification and self-hosting is not yet a supported production release. The roadmap lists exactly what is finished and what is next.
Most CRMs assume one company sells one product. Real teams sell an evaluation platform and a services retainer to the same person, through different owners, on different timelines. In a typical CRM that becomes duplicate contacts, a tangle of custom fields, or one deal record that hides three conversations.
Gravity keeps one person with a separate relationship for each product: its own owner, context, outreach and deals. Every reply, sequence step and promise made in a meeting becomes a next action in one queue, so the question each morning is simply "who needs me today, and why?"
It is built for the way sales work is starting to happen, with an AI assistant alongside. Every business operation in the app is also an MCP tool, running under the same permissions, so Claude, Codex or any MCP client can prepare your queue, draft follow-ups and update records without ever seeing more than you shared.
| Next actions queue | Replies, promises you made, things you are waiting on and scheduled follow-ups, filtered by product, owner and type |
| Multi-product relationships | One canonical person or company, with separate owner, context, outreach and deals per product |
| Organizations and products | Several organizations per account and several products per organization, with product-level membership enforced on the server |
| Team access | Invitation links that require the recipient's verified email, roles, per-product access and member removal |
| Conversation inspector | Imported email, LinkedIn and meeting history beside each action, with private conversations visible only to their owner unless shared |
| Outreach and sequences | Drafts bound to recipient, channel and product; approval is invalidated when anything changes, and replies pause follow-ups automatically |
| Explicit sending | Approved Gmail and LinkedIn sends with durable idempotency. Nothing sends because a date passed or a webhook arrived |
| Deals and pipelines | Several pipelines per product with amount, probability, close date, outcome and loss reason |
| Overview analytics | Clickable follow-up, activity, workload and pipeline metrics by product, teammate, channel and date range |
| Meetings | Calendar and Fireflies notes enter a private review queue; commitments become owned, dated next actions |
| File library | Private, product-scoped folders with document previews and direct-to-storage uploads up to 100 MiB, plus stage-linked sales materials |
| Connections | Gmail and primary Calendar, LinkedIn through your own Unipile account, and Fireflies, each authorized by its owner |
| MCP server | OAuth with PKCE, organization and product selection, revocable grants, and a tool for every business operation |
| Keyboard first | Cmd K for the command menu, ? for every shortcut, keyboard movement through every list |
| Live updates | Changes appear for teammates within a second, without losing an unsaved draft |
| Themes | Light and dark, compact or comfortable density |
Open gravity.noveum.ai and sign in with Google, GitHub or an email code. Create an organization and its first product, add people and next actions, then connect your own Gmail, Calendar, LinkedIn and Fireflies accounts from Connections. There is nothing to install and no card to enter.
To run Gravity locally you need Node.js 22.12+ and Bun 1.3.14. No Docker, database or API keys.
git clone https://github.com/Noveum/gravity.git
cd gravity
bun install --frozen-lockfile
bun run devOpen http://127.0.0.1:3014. The first run creates an embedded PostgreSQL database
in .data/, applies migrations and loads fictional workspaces. You are signed in
automatically as a demo user.
- Northstar Collective has three products sharing some of the same people. Open Next actions, select Mira's follow-up, read her reply and rework the draft.
- Lunar Studio is a separate organization, so you can check that nothing leaks.
The demo identity is disabled automatically when DATABASE_URL is set or demo
mode is off, so it can never reach production.
Gravity's MCP endpoint is https://gravity.noveum.ai/mcp (or /mcp on your own
deployment). It uses OAuth, so there is no API key to copy.
claude mcp add --transport http gravity https://gravity.noveum.ai/mcpYou choose the organization and products to share and approve the scopes. An
assistant never has more access than you do: tools run through the same services
and permission checks as the app, cannot read a teammate's private inbox, and can
only send with the separate crm:send scope, a current approval and a stable
idempotency key.
Things that work today:
"Review today's replies, pause the sequences that got a response, and prepare the next follow-ups for each product."
"Brief me on Northstar Labs before my call: open deals, last three conversations, and anything we promised."
The setup guide covers Codex, Claude Code and other clients, and lists every tool.
Gravity is one Next.js application backed by PostgreSQL and, for file uploads, an S3-compatible bucket.
The button creates your own repository and Vercel project. You bring the database, secrets and a verified email sender; nothing is shared with the hosted instance. Migrations are applied separately, by you, with a dedicated migration role.
- Deploy on Vercel: environment values, callbacks, scheduled sync
- Supabase PostgreSQL: migrations, restricted runtime role, TLS
- Setup and OAuth MCP: every environment variable
After deploying, bun run test:deployment https://your-domain.example checks the
public pages, sign-in, health endpoint, icons and the MCP OAuth challenge.
| Documentation index | Every guide, grouped by what you are doing |
| Architecture | Tenant boundaries, the operation registry and storage |
| Connections | What each provider imports and how review works |
| Accounts and privacy | Who sees which conversations |
| Overview metrics | How each number is calculated |
| Agent access and sending | Scopes, approvals and idempotency |
| Roadmap | Next slices and production gates |
src/app/ Next.js App Router: pages, HTTP routes, sign-in, OAuth, /mcp
src/components/ Queue, inspector, records, dialogs, command menu
packages/operations/ One definition per business operation, shared by HTTP and MCP
packages/core/ Authorized domain services and permissions
packages/database/ Drizzle schema, PostgreSQL and PGlite clients, fictional seed
packages/auth/ Better Auth: Google, GitHub and email codes
packages/mcp/ MCP server that registers every operation as a tool
packages/connectors/ Gmail, Calendar, Unipile LinkedIn and Fireflies
packages/storage/ Private file storage
packages/i18n/ Interface strings
TypeScript in strict mode, Next.js 16, React 19, Drizzle on PostgreSQL, Better Auth with its MCP plugin, the official MCP server SDK and Zod. Bun is the toolchain; Node is the runtime.
Every tenant-owned row carries an organization ID and product-owned rows carry a product ID, enforced with composite foreign keys. Because HTTP and MCP execute the same operation registry, adding a business operation adds an API route and an assistant tool with identical validation and permissions.
Contributions are welcome, and not only code: docs, bug reports, translations, accessibility and design all count.
bun run verify # lint, licenses, types, tests, build and public smoke test- Good first issues, small and with file paths in the description
- Help wanted, bigger pieces we would like a hand with
- The roadmap, for what comes next
The house rules that will otherwise surprise you in review: Bun only; every
business operation goes in packages/operations/catalog.ts, never an HTTP-only
handler; interface strings go in packages/i18n/translations/en.json; and fixtures
use fictional data only. The full guide is in CONTRIBUTING.md,
and AGENTS.md gives coding assistants the same rules.
- Discussions for questions and ideas
- Issues for bugs and concrete work
- Security for anything that should not be public
Everyone taking part follows the Code of Conduct. If Gravity is useful to you, a star helps other people find it.
Gravity is built and hosted by Noveum AI, which also builds Orbit, the free open-source task manager whose design Gravity follows.
Apache License 2.0. Use it, run it, change it and ship it, commercially or otherwise. The NOTICE asks only that a public fork picks its own name. Dependency licenses are listed in THIRD_PARTY_NOTICES.md.




