# Exponential documentation > Productivity OS that turns meeting transcripts into projects, actions and decisions, with an assistant (Zoe), external agents, and product-management tools. --- # Introduction Section: Get started · URL: https://www.exponential.im/docs > What Exponential is, who it is for, and where to start Exponential is a productivity OS that turns meeting transcripts into projects, actions and decisions. Record a meeting, and Zoe, the built-in assistant, extracts the actions and decisions and files them against the right project. Plan your day from what is due, track time, review the week, and let agents (Zoe, specialist agents, or your own external agents) act across all of it. Product teams get a second layer on top: products, features, tickets, cycles and metrics. ## Who it is for - **On your own.** Capture actions from anywhere (phone, browser, chat), plan each day from Today, keep a journal and a weekly plan, and ask Zoe to think things through with you. - **As a team.** Share a workspace, run meetings through Fireflies, turn them into actions and decisions, and keep goals, projects and OKRs aligned in one place. - **As a product team.** Turn on the Product Management plugin for products, features, tickets, cycles, retrospectives and delivery metrics. ## How the pieces fit ``` Workspace ├─ Goals → Key results the outcomes ├─ Projects → Actions, Epics the work ├─ Meetings → Decisions what was said, what was agreed ├─ Products → Features, product teams (plugin) │ Tickets, Cycles ├─ Pages, Knowledge what Zoe can read ├─ CRM the people you work with └─ Zoe, agents, plugins who works with you ``` Every object lives in a workspace. You get a personal workspace on sign-up and can create more for teams or clients. [Concepts](https://www.exponential.im/docs/concepts) defines each term in two sentences. ## Start here 1. **Ten minutes in.** Follow the [Quickstart](https://www.exponential.im/docs/quickstart): sign in, meet the sidebar, create a project and three actions, plan your day, ask Zoe a question, and connect one way to capture from your phone or browser. 2. **Bring your meetings.** Connect [Fireflies](https://www.exponential.im/docs/meet/fireflies) so every recorded meeting arrives with its actions extracted, then review them on the [Meetings](https://www.exponential.im/docs/meet/meetings) page. 3. **Set the direction.** Write [Goals](https://www.exponential.im/docs/plan/goals) and [OKRs](https://www.exponential.im/docs/plan/okrs), link projects to them, and run the [Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan) on Fridays. ## What is in the box | Area | What you will find | Start with | |---|---|---| | **Plan** | Goals, OKRs and key results, decisions, Wheel of Life | [Goals](https://www.exponential.im/docs/plan/goals) | | **Do** | Inbox, Today, the daily plan, actions, projects, epics, time tracking, pages, activity and views | [Inbox & Today](https://www.exponential.im/docs/do/inbox-and-today) | | **Build (Products)** | Products, tickets, features and cycles; retrospectives, insights and metrics; sprint insights | [Products](https://www.exponential.im/docs/build/products) | | **Reflect** | Journal, startup and wind-down routines, habits, weekly plan | [Journal](https://www.exponential.im/docs/reflect/journal) | | **Meet** | Meetings that become actions and decisions, Fireflies, ceremonies, calendar and scheduling | [Meetings](https://www.exponential.im/docs/meet/meetings) | | **People (CRM)** | Contacts and organisations, lists, automations, pipeline, forms, broadcasts | [Contacts](https://www.exponential.im/docs/crm/contacts) | | **Collaborate** | Workspaces, teams, members and access, notifications | [Workspaces](https://www.exponential.im/docs/collaborate/workspaces) | | **Zoe & AI** | The assistant, the knowledge base, chat over WhatsApp, Telegram and Matrix | [Zoe](https://www.exponential.im/docs/zoe/assistant) | | **Capture anywhere** | iOS shortcut, Chrome extension, mobile app, desktop app | [iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut) | | **Integrations** | Slack, Notion, GitHub, Google, Monday.com, calendar feeds | [Integrations](https://www.exponential.im/docs/integrations) | | **Developers & agents** | API tokens, external agents, the CLI reference, the MCP server and SDK | [API tokens](https://www.exponential.im/docs/developers/api-tokens) | | **Reference** | Your settings, workspace settings, plugins, keyboard shortcuts | [Your settings](https://www.exponential.im/docs/reference/your-settings) | | **Self-hosting** | Running your own installation | [Self-hosting](https://www.exponential.im/docs/self-hosting) | ## Getting help - Press **/** on any docs page to search. - Ask Zoe inside the app: the **Ask Zoe · ⌘J** button at the bottom right of every page opens her drawer. - See [What's new](https://www.exponential.im/docs/whats-new) for the latest features and fixes. - Email support@exponential.im. - For agents and LLM tools: [/llms.txt](https://www.exponential.im/llms.txt) indexes every page, and [/llms-full.txt](https://www.exponential.im/llms-full.txt) is the whole documentation as one Markdown file. --- # Concepts Section: Get started · URL: https://www.exponential.im/docs/concepts > The objects Exponential is built from, each in two sentences, with a link to its guide Exponential uses a small, fixed vocabulary. This page defines each term the way the product uses it; the guides go deeper. ## Workspace The container everything else lives in: projects, goals, meetings, members, plugins and settings. You get a personal workspace when you sign up and can create more for a team or a client; switch between them from the top of the sidebar. See [Workspaces](https://www.exponential.im/docs/collaborate/workspaces). ## Project A container for related work with a status, a priority, an optional owner and end date, and its own kanban board. Projects can belong to a product, be linked to goals and key results, and be restricted so only named members see them. See [Projects](https://www.exponential.im/docs/do/projects). ## Action A single thing to do: the unit of daily work, with a due date, a priority, an optional project and assignee. Actions come from you, from a meeting Zoe processed, from a chat message, from the iOS shortcut or the browser extension, and show up in Inbox and Today. See [Actions](https://www.exponential.im/docs/do/actions). ## Epic A group of related actions that together form a bigger initiative, such as a launch or a campaign. Every epic belongs to a product, so epics need the Product Management plugin and the workspace's Advanced Action Features switched on. See [Epics](https://www.exponential.im/docs/do/epics). ## Goal and key result A goal (called an objective in OKR screens) is a strategic outcome; a key result is the number that says whether you are getting there, updated through check-ins. Projects and features link to key results as the work that moves them. See [Goals](https://www.exponential.im/docs/plan/goals) and [OKRs](https://www.exponential.im/docs/plan/okrs). ## Meeting A recorded conversation: transcript, summary and participants, usually arriving from Fireflies. Zoe extracts actions and decisions from it once you assign it to a project. A scheduled meeting is a future calendar booking and is a different thing. See [Fireflies](https://www.exponential.im/docs/meet/fireflies). ## Decision A recorded choice with its context, the alternatives considered, who decided and when, and the meeting it came from. Decisions live in the workspace Decision Log under **Plan** in the sidebar and can be formalised as architecture decision records. See [Decisions](https://www.exponential.im/docs/plan/decisions). ## Ceremony and occurrence A ceremony is a recurring team meeting defined once: standup, planning, review, retrospective, with a cadence, participants and an agenda template. Each date it happens is an occurrence, which collects the agenda, the recorded meeting, and the decisions and actions that came out of it. Managed at workspace settings → Ceremonies. See [Ceremonies & occurrences](https://www.exponential.im/docs/meet/ceremonies). ## Page A free-form document, written by you or by Zoe, that stands on its own: a spec, a wiki page, a brief. Pages are workspace-scoped, can attach to a project, and are searchable by Zoe. Find them under [**Work → Pages**](https://www.exponential.im/go/pages) in the sidebar. See [Pages](https://www.exponential.im/docs/do/pages). ## Product, feature, ticket and cycle A product is a unit of delivery with its own backlog; features are the permanent registry of what the product is made of; tickets are the engineering work items inside it; cycles are the time boxes tickets are planned into. Actions and tickets are different things: a ticket may have child actions, but a ticket is a product artefact and an action is a piece of daily work. These need the Product Management plugin; see [Plugins](https://www.exponential.im/docs/reference/plugins). ## Plugin An optional module a workspace switches on: OKRs and CRM are on by default, Product Management is off. Plugins add sidebar items and pages. See [Plugins](https://www.exponential.im/docs/reference/plugins). ## Zoe The assistant built into Exponential. She reads your workspace, answers questions, drafts plans, extracts actions from meetings and can act on your behalf; specialist agents can be tagged with @ in a conversation. See [Zoe](https://www.exponential.im/docs/zoe/assistant). ## External agent Third-party agent software you connect to Exponential as a member of your workspace, with its own identity and a revocable key. It can never do more than you can, and loses access when you do. See [External agents](https://www.exponential.im/docs/developers/external-agents). ## Knowledge Documents, web pages and meeting transcripts you add to the knowledge base so Zoe can search them semantically and cite them. See [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base). ## Team A named group of workspace members that projects and integrations can be shared with. See [Teams](https://www.exponential.im/docs/collaborate/teams). --- # Quickstart Section: Get started · URL: https://www.exponential.im/docs/quickstart > Ten minutes from sign-in to a planned day, with Zoe and one capture channel set up This walkthrough takes about ten minutes. By the end you will have a project with three actions, a plan for today, one answer from Zoe, and a way to capture actions from your phone or browser. ## 1. Sign in Go to [/signin](https://www.exponential.im/signin). Sign in with Google or Discord, or enter your work email and use the sign-in code it sends you. Some installations also offer Microsoft. ![The sign-in page: Google, Discord, or a work-email sign-in code](https://www.exponential.im/doc-assets/signin.png) You land in your personal workspace. Every account has one; teams and clients get their own workspaces later. ## 2. Meet the sidebar ![Workspace home with the sidebar open](https://www.exponential.im/doc-assets/home.png) The sidebar has three items that are always there, then four sections: | Item | What it is | |---|---| | **Inbox** | Actions with no project or date yet | | **Today** | The actions due or scheduled today, with a timeline of your day | | **Time** | Your timer and time entries | | **Plan** | Goals, Decisions | | **Work** | Actions, Projects, Pages (plus Products and Metrics when the Product Management plugin is on) | | **People** | CRM | | **Tools** | Agents, Meetings, Knowledge | The workspace switcher is at the top; your user menu (Settings, Teams, Journal, Workflows and more) is at the bottom. You can rename, reorder and hide sections and items under [Settings → Navigation](https://www.exponential.im/settings). ## 3. Create a project 1. Open **Projects** under **Work** in the sidebar. 2. Click **New project**. 3. Give it a name. Status defaults to **Active**; set a **Priority** if you like. Product, goals and dates are optional. 4. Click **Create Project**. ![The New project form](https://www.exponential.im/doc-assets/new-project.png) ## 4. Add three actions 1. Press **⌘N** (or click **Create Action** at the top of the sidebar). 2. Type the action, for example "Draft the brief". Add a description if you want. 3. Pick a priority (the first control, which defaults to **Quick**), set a **Date** if you like, and choose your project under **Select a project**. 4. Click **New action**, then repeat twice. ![The Create action dialog](https://www.exponential.im/doc-assets/create-action.png) Actions without a project or date go to **Inbox**; you can file them later. ## 5. Plan today Open [Today](https://www.exponential.im/today). Overdue actions sit at the top with a **Reschedule all → Today** button; the right-hand column shows your calendar for the day. Use **Add task** at the bottom to add something directly to today. **Plan** at the top right opens the [daily plan](https://www.exponential.im/docs/do/daily-plan), a short wizard that walks you through choosing the day's focus (you can plan today or tomorrow). ![Today with the day timeline](https://www.exponential.im/doc-assets/today.png) ## 6. Ask Zoe one question Click **Ask Zoe · ⌘J** at the bottom right of any page. Try "What should I focus on today?" or "Break the brief project into steps". Zoe answers in the drawer, can create the actions she suggests, and remembers the thread; **New thread** starts a fresh one. ![The Zoe drawer](https://www.exponential.im/doc-assets/zoe-drawer.png) The full chat page is **Agents** under **Tools** in the sidebar. See [Zoe](https://www.exponential.im/docs/zoe/assistant). ## 7. Capture from anywhere Pick one: - **iPhone, iPad or Mac:** install the [iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut) to add actions by voice or text from anywhere. - **Browser:** install the [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension) to capture from any tab. - **Phone, no install:** add Exponential to your home screen as a [mobile app](https://www.exponential.im/docs/capture/mobile-app). Each of these needs an API key from [Settings → API keys](https://www.exponential.im/settings/api-keys); the guides walk you through it. ## Where next - Bring your meetings in with [Fireflies](https://www.exponential.im/docs/meet/fireflies), then assign each meeting to a project to turn its action items into actions. - Set a direction with [Goals](https://www.exponential.im/docs/plan/goals) and link your project to one. - Working with others? Create a team workspace: [Workspaces](https://www.exponential.im/docs/collaborate/workspaces). - Every term you just met is defined in [Concepts](https://www.exponential.im/docs/concepts). - The shortcuts worth learning on day one, ⌘K, ⌘N and ⌘J, are in [Keyboard shortcuts](https://www.exponential.im/docs/reference/keyboard-shortcuts). ## FAQ **Which sign-in methods are there?** Google, Discord and a work-email sign-in code on exponential.im. Microsoft appears on installations that have it configured. You can link Google, Discord and Notion to one account under Settings → Profile. **I typed an action but cannot find it.** Actions without a date or project are in [Inbox](https://www.exponential.im/inbox). Actions with a date appear on Today on that date and under **Upcoming** before then. **Can I use this on my phone?** Yes: the web app works on phones, and the [mobile app](https://www.exponential.im/docs/capture/mobile-app) guide shows how to install it to your home screen. --- # What's new Section: Get started · URL: https://www.exponential.im/docs/whats-new > User-visible changes from the last 90 days, newest first; the full history is on the product timeline Features added and bugs fixed in Exponential over the last 90 days, grouped by month. Each line links the change on GitHub. For every commit, including internal work, see the live [product timeline](https://www.exponential.im/product-timeline). ## September 2026 ### New - **docs** — Generate llms.txt and llms-full.txt from the docs ([#769](https://github.com/positonic/exponential/pull/769)) - **docs** — Help & docs in the user menu and contextual ? links ([#767](https://github.com/positonic/exponential/pull/767)) - **docs** — /go/<route> resolver and workspace-agnostic doc links ([#766](https://github.com/positonic/exponential/pull/766)) - **ceremonies** — Add the Shutdown routine template ([#764](https://github.com/positonic/exponential/pull/764)) - **seo** — Add og-image.png for link previews ([#752](https://github.com/positonic/exponential/pull/752)) - **crm** — Merge selected contacts with a reviewable smart-merge proposal ([#731](https://github.com/positonic/exponential/pull/731)) - **crm** — Create an organization inline from the contact edit drawer ([#730](https://github.com/positonic/exponential/pull/730)) - Seed the occurrence notes page from the agenda and append the capture summary ([#729](https://github.com/positonic/exponential/pull/729)) - Link a notes Page to each ceremony occurrence and render it inline ([#728](https://github.com/positonic/exponential/pull/728)) - **projects** — Tickets-style filter popover with My projects, visibility and ETA facets ([#724](https://github.com/positonic/exponential/pull/724)) - **voice** — Give zoe the user's local clock on ask_exponential ([#706](https://github.com/positonic/exponential/pull/706)) - **tickets** — Highlight-to-comment on ticket bodies (ADR-0024 parity) ([#699](https://github.com/positonic/exponential/pull/699)) - **workspace-settings** — Set a workspace as your default from its settings page ([#697](https://github.com/positonic/exponential/pull/697)) - **voice** — Get_todays_plan returns the Daily summary Markdown for display ([#695](https://github.com/positonic/exponential/pull/695)) - **goals** — Features tab and Key results accordion on the Objective page ([#694](https://github.com/positonic/exponential/pull/694)) - **voice** — Get_todays_plan speaks the Daily summary digest, with focus + timezone ([#691](https://github.com/positonic/exponential/pull/691)) - **meetings** — Rename a meeting in place from its title ([#689](https://github.com/positonic/exponential/pull/689)) - **meetings** — Project Meetings tab uses shared meeting cards and opens /recording page ([#687](https://github.com/positonic/exponential/pull/687)) - **meetings** — Ceremony icons and tidier meeting cards ([#685](https://github.com/positonic/exponential/pull/685)) - **meetings** — Project, ceremony and feature pickers on Add Meeting; link meetings to features ([#684](https://github.com/positonic/exponential/pull/684)) - **meetings** — Collapse AI summary on listing cards and drop transcript peek ([#682](https://github.com/positonic/exponential/pull/682)) - **meetings** — Drag images onto Add Meeting and the Screenshots tab ([#678](https://github.com/positonic/exponential/pull/678)) - **decisions** — Open Decision Log rows in a peek drawer ([#676](https://github.com/positonic/exponential/pull/676)) - **decisions** — Link actions from the log modal and the decision page ([#672](https://github.com/positonic/exponential/pull/672)) - V4: one create payload from the client ([#670](https://github.com/positonic/exponential/pull/670)) - V3: agent and voice callers delegate to the module ([#669](https://github.com/positonic/exponential/pull/669)) - V2: applyActionUpdate and one deriveActionPatch ([#668](https://github.com/positonic/exponential/pull/668)) - V1: createAction behind the four create paths ([#666](https://github.com/positonic/exponential/pull/666)) - V4: assign unassigned time and remember the choice ([#665](https://github.com/positonic/exponential/pull/665)) - V3: day view on /time and the Daily summary line ([#664](https://github.com/positonic/exponential/pull/664)) - V2: reconcile proposed time against manual time and confirm a day ([#662](https://github.com/positonic/exponential/pull/662)) - V1: log proposed time into Exponential ([#660](https://github.com/positonic/exponential/pull/660)) - Draft ADR — render the ADR file an accepted decision would become ([#659](https://github.com/positonic/exponential/pull/659)) - **notifications** — Let users set when the Daily summary is sent ([#652](https://github.com/positonic/exponential/pull/652)) - Ceremonies V3 — async-first standup and skip proposal ([#654](https://github.com/positonic/exponential/pull/654)) - **decisions** — Draw Decisions beside ADRs in the graph, and add a Timeline view ([#650](https://github.com/positonic/exponential/pull/650)) - **goals** — Move the Mine and Timeline toggles into each dashboard's header ([#648](https://github.com/positonic/exponential/pull/648)) - **decisions** — Classify open questions, bullet bodies, and a Decisions tab ([#645](https://github.com/positonic/exponential/pull/645)) - Decisions V2: extraction drafts and review ([#637](https://github.com/positonic/exponential/pull/637)) - Ceremonies V2: generated agenda, circulated ahead ([#635](https://github.com/positonic/exponential/pull/635)) - **goals** — Replace the My Goals tab with Mine + Timeline toggles ([#638](https://github.com/positonic/exponential/pull/638)) - Decisions V1: entity, manual create and one Decision Log ([#633](https://github.com/positonic/exponential/pull/633)) - Ceremonies V1: definitions, occurrences and the meeting link ([#631](https://github.com/positonic/exponential/pull/631)) - **okr** — Mark linked pipelines with a Pipeline chip in executing work ([#628](https://github.com/positonic/exponential/pull/628)) - V1: redesigned Daily summary (structured digest, Matrix markdown) ([#626](https://github.com/positonic/exponential/pull/626)) - **decisions** — Redesign the Decisions index per handoff ([#622](https://github.com/positonic/exponential/pull/622)) - **pages** — Flat row listing with visibility tabs, sort, filters, and row actions ([#621](https://github.com/positonic/exponential/pull/621)) - **decisions** — Bring product decisions lens to parity with workspace page ([#619](https://github.com/positonic/exponential/pull/619)) - **projects** — Remember filters and view tab, hide finished work by default ([#620](https://github.com/positonic/exponential/pull/620)) ### Fixed - **plugins** — New workspace members inherit plugins enabled by an owner/admin ([#763](https://github.com/positonic/exponential/pull/763)) - **assistant** — Unblock Matrix/Telegram connect and resolve the assistant settings page to the gateway assistant's workspace ([#762](https://github.com/positonic/exponential/pull/762)) - **ci** — Stop the migration guard crashing when main moves mid-run ([#758](https://github.com/positonic/exponential/pull/758)) - **email** — Escape user text in the generic notification email HTML ([#753](https://github.com/positonic/exponential/pull/753)) - **public** — Restore 9 images truncated by e60d55c46 ([#754](https://github.com/positonic/exponential/pull/754)) - **email** — Escape user text in assignment and mention notification HTML ([#748](https://github.com/positonic/exponential/pull/748)) - **landing** — Remove invented testimonials and placeholder stats ([#745](https://github.com/positonic/exponential/pull/745)) - **today** — Light-mode palette for the Today shell ([#732](https://github.com/positonic/exponential/pull/732)) - **projects** — Print the next action's text, not its legacy HTML, in project brief lines ([#727](https://github.com/positonic/exponential/pull/727)) - **projects** — Close the update modal on save and align row action icons ([#725](https://github.com/positonic/exponential/pull/725)) - **crm** — Skip retired pipelines when resolving the default pipeline ([#723](https://github.com/positonic/exponential/pull/723)) - **mastra** — Zoe's meeting list sees every Meeting the user can, dated by when it happened ([#702](https://github.com/positonic/exponential/pull/702)) - **comments** — Don't persist a comment highlight until its first comment posts ([#700](https://github.com/positonic/exponential/pull/700)) - **day** — Scope getByDate notes/exercises to caller ([#698](https://github.com/positonic/exponential/pull/698)) - **today** — Tomorrow and Upcoming keep the /today layout and agenda rail ([#693](https://github.com/positonic/exponential/pull/693)) - **actions** — Scope searchForDependencies to actions the caller can read ([#690](https://github.com/positonic/exponential/pull/690)) - **time** — Show action names as text, not raw HTML markup ([#673](https://github.com/positonic/exponential/pull/673)) - **decisions** — Extraction drops open questions ([#681](https://github.com/positonic/exponential/pull/681)) - **notifications** — Stop Slack digest links pointing at localhost in prod ([#680](https://github.com/positonic/exponential/pull/680)) - **invites** — Build copy-invite links server-side instead of a localhost fallback ([#677](https://github.com/positonic/exponential/pull/677)) - **dates** — One shared DateTimeField so the calendar reads as a panel ([#674](https://github.com/positonic/exponential/pull/674)) - **theme** — One calendar look for every @mantine/dates component ([#671](https://github.com/positonic/exponential/pull/671)) - **time** — One-line themed chart tooltips that never grow the page ([#667](https://github.com/positonic/exponential/pull/667)) - **time** — Upsert assignee shape and owner-scoped list under an agent key ([#663](https://github.com/positonic/exponential/pull/663)) - **actions** — UpsertBySource under an agent key assigns the agent's owner ([#661](https://github.com/positonic/exponential/pull/661)) - **actions** — Stop the create-action modals dropping tags and sprint ([#656](https://github.com/positonic/exponential/pull/656)) - **ceremonies** — Reachable reopen and per-skip notice key (V3 review Highs) ([#658](https://github.com/positonic/exponential/pull/658)) - **actions** — QuickCreate accepts any project the caller can edit ([#655](https://github.com/positonic/exponential/pull/655)) - **products** — Make the product pages usable on a phone ([#651](https://github.com/positonic/exponential/pull/651)) - **nav** — Align lists Decisions instead of Alignment, and the decisions source filter keeps its own row ([#649](https://github.com/positonic/exponential/pull/649)) - **tickets** — A view switch no longer drops filter changes on the backlog ([#647](https://github.com/positonic/exponential/pull/647)) - **decisions** — Fold draft evidence behind a toggle; one pass finds questions too ([#646](https://github.com/positonic/exponential/pull/646)) - **theme** — Keep themed input colours when a call site overrides styles ([#643](https://github.com/positonic/exponential/pull/643)) - **decisions** — Extraction blew the transaction budget, and a coverage note posed as an error ([#644](https://github.com/positonic/exponential/pull/644)) - **ceremonies** — CLEAR inventory owners must match a member record ([#641](https://github.com/positonic/exponential/pull/641)) - **decisions** — Verify evidence quotes against the transcript, and resolve a D-label server-side ([#640](https://github.com/positonic/exponential/pull/640)) - **crm** — Search contacts and organizations server-side in every picker ([#634](https://github.com/positonic/exponential/pull/634)) - **okr** — Unnest the row action buttons on the OKR dashboard ([#632](https://github.com/positonic/exponential/pull/632)) - **home** — Render prose fields as text instead of raw markup ([#624](https://github.com/positonic/exponential/pull/624)) - **meetings** — Render markdown in the AI summary ([#623](https://github.com/positonic/exponential/pull/623)) ## August 2026 ### New - **decisions** — Make the decision graph full-screen ([#618](https://github.com/positonic/exponential/pull/618)) - **crm** — Contacts total count, search/filter/sort toolbar, infinite scroll ([#616](https://github.com/positonic/exponential/pull/616)) - **crm** — CSV contact import with column mapping and revenue-to-deal ([#614](https://github.com/positonic/exponential/pull/614)) - **goals** — Port the projects search/filter toolbar to the Goals tab ([#613](https://github.com/positonic/exponential/pull/613)) - **goals** — OKR dashboard icon controls + DRI in Goals Owner column ([#612](https://github.com/positonic/exponential/pull/612)) - **goals** — Nest connected projects under goals with collapsible rows ([#611](https://github.com/positonic/exponential/pull/611)) - **email** — Split sign-in code email from post-first-login welcome email ([#608](https://github.com/positonic/exponential/pull/608)) - **pipeline** — Redesign deal drawer to match contact page, add contact/org pickers ([#601](https://github.com/positonic/exponential/pull/601)) - **meetings** — Extract action items from meeting notes, not just transcript ([#600](https://github.com/positonic/exponential/pull/600)) - Scheduling window, day-spread slots, availability grid ([#598](https://github.com/positonic/exponential/pull/598)) - V3 workspace meeting scheduling ([#597](https://github.com/positonic/exponential/pull/597)) - V2 unified busy-time sync (Google + Microsoft into CalendarEvent) ([#596](https://github.com/positonic/exponential/pull/596)) - V1 ICS calendar feeds end-to-end ([#594](https://github.com/positonic/exponential/pull/594)) - V4 Decision Log graph view & push webhook ([#593](https://github.com/positonic/exponential/pull/593)) - V3 Decision Log cron sync, rate-limit short-circuit & ticket linking ([#592](https://github.com/positonic/exponential/pull/592)) - V2 Decision Log detail page, supersession & cross-repo mentions ([#591](https://github.com/positonic/exponential/pull/591)) - V1 Decision Log projection core ([#590](https://github.com/positonic/exponential/pull/590)) - **mastra** — Let agents set the do-date (scheduledStart) on created actions ([#588](https://github.com/positonic/exponential/pull/588)) - **home** — Tiered daily workspace home on the Activity layout ([#582](https://github.com/positonic/exponential/pull/582)) - Rebuild /auth/verify-request on the shared auth-surface design ([#581](https://github.com/positonic/exponential/pull/581)) - Deprecate Outcomes and remove them from the product ([#562](https://github.com/positonic/exponential/pull/562)) - **metrics** — All-cycles roll-up and per-cycle trend chart ([#561](https://github.com/positonic/exponential/pull/561)) - Match ticket fun IDs word-order-insensitively in search ([#577](https://github.com/positonic/exponential/pull/577)) - Show priority and sort by it on the product roadmap board ([#578](https://github.com/positonic/exponential/pull/578)) - Invite-aware welcome variant ([#576](https://github.com/positonic/exponential/pull/576)) - Mentions inbox reading the existing notification pipeline ([#573](https://github.com/positonic/exponential/pull/573)) - **matrix** — Create an unencrypted room from the picker ([#563](https://github.com/positonic/exponential/pull/563)) - Your work panel on the workspace home ([#571](https://github.com/positonic/exponential/pull/571)) - Content-Security-Policy — enforce safe subset, report-only full policy ([#568](https://github.com/positonic/exponential/pull/568)) - **matrix** — Bind a room to a project and post a meeting summary ([#557](https://github.com/positonic/exponential/pull/557)) - **insights** — Unify insight activity on the shared timeline ([#555](https://github.com/positonic/exponential/pull/555)) - V1: OKR events in the workspace activity feed ([#551](https://github.com/positonic/exponential/pull/551)) - **comments** — One shared comment system for tickets, features, scopes and pages ([#552](https://github.com/positonic/exponential/pull/552)) - **activity** — Render feature events with real names in the feed ([#549](https://github.com/positonic/exponential/pull/549)) - **auth** — Sign-in codes replace magic links ([#544](https://github.com/positonic/exponential/pull/544)) - **matrix** — Register a workspace Matrix server and browse its rooms ([#546](https://github.com/positonic/exponential/pull/546)) - **product** — Scope epics to a product and give them a detail page ([#541](https://github.com/positonic/exponential/pull/541)) - **product** — Read a feature's key result links from the feature side ([#540](https://github.com/positonic/exponential/pull/540)) - **google** — Gate Calendar/Contacts/Gmail behind a tester allowlist ([#539](https://github.com/positonic/exponential/pull/539)) - **notion-sync** — Explain what Dry run and Sync now actually do ([#538](https://github.com/positonic/exponential/pull/538)) - **search** — Add an All workspaces toggle to the command palette ([#531](https://github.com/positonic/exponential/pull/531)) - **tickets** — Add prev/next ticket navigation arrows and hotkeys ([#529](https://github.com/positonic/exponential/pull/529)) - Add external agent avatars ([#524](https://github.com/positonic/exponential/pull/524)) - Lane layout for genuinely colliding agenda blocks ([#520](https://github.com/positonic/exponential/pull/520)) - Scheduled / unscheduled indicator on task rows ([#519](https://github.com/positonic/exponential/pull/519)) - **goals** — Nest sub-goals in the project goal listing ([#514](https://github.com/positonic/exponential/pull/514)) - **api** — Expose the workspace member roster so agents can @mention ([#501](https://github.com/positonic/exponential/pull/501)) - **voice** — Give the voice router the chat thread it's sitting in ([#504](https://github.com/positonic/exponential/pull/504)) - **wiki** — Browse and edit the local wiki in the desktop app ([#500](https://github.com/positonic/exponential/pull/500)) - Grant agents access to multiple workspaces at once ([#497](https://github.com/positonic/exponential/pull/497)) - **desktop** — Native macOS window tabs in the Tauri shell (ADR-0053) ([#490](https://github.com/positonic/exponential/pull/490)) - Label Sentry/GlitchTip bugs with the service they came from ([#488](https://github.com/positonic/exponential/pull/488)) - Accept GlitchTip generic webhooks on the Sentry bug endpoints ([#472](https://github.com/positonic/exponential/pull/472)) - Server-side global search (search.global) — Cmd+K coverage over the API ([#478](https://github.com/positonic/exponential/pull/478)) - Create the local wiki from a button, not a side effect ([#475](https://github.com/positonic/exponential/pull/475)) - Label Sentry bugs ai-fixable for allowlisted projects ([#469](https://github.com/positonic/exponential/pull/469)) - Agent visual testing - sessions without OAuth, seeded fixture, Playwright ([#468](https://github.com/positonic/exponential/pull/468)) - Ingest and lint for the local wiki ([#466](https://github.com/positonic/exponential/pull/466)) - Announce new Sentry bugs in Matrix ([#465](https://github.com/positonic/exponential/pull/465)) - Tickets accordion on the feature detail page and peek ([#464](https://github.com/positonic/exponential/pull/464)) - Wire up Sentry error reporting end-to-end ([#462](https://github.com/positonic/exponential/pull/462)) - Local wiki + librarian (query + write-back) ([#459](https://github.com/positonic/exponential/pull/459)) - Tauri shell at sign-in parity (macOS) ([#457](https://github.com/positonic/exponential/pull/457)) - Near-real-time inbound Notion ticket sync via webhook ([#456](https://github.com/positonic/exponential/pull/456)) - Live sandbox Notion sync smoke test + nightly workflow ([#453](https://github.com/positonic/exponential/pull/453)) - HtmlToMarkdown + migrate Goal description editor to MarkdownInput ([#445](https://github.com/positonic/exponential/pull/445)) - V5: Key rotation ([#444](https://github.com/positonic/exponential/pull/444)) ### Fixed - **crm** — Use app surface tokens for edit-contact drawer and pipeline deal cards ([#617](https://github.com/positonic/exponential/pull/617)) - **crm** — Process CSV imports in client-driven chunks (serverless-safe) ([#615](https://github.com/positonic/exponential/pull/615)) - **auth** — Align Google OAuth scopes with Cloud Console for verification ([#607](https://github.com/positonic/exponential/pull/607)) - **transcriptions** — Keep screenshot refs paired to the right actions when a create fails mid-list ([#603](https://github.com/positonic/exponential/pull/603)) - **meetings** — Show Schedule meeting button only on workspace meetings page ([#606](https://github.com/positonic/exponential/pull/606)) - **chat** — Report agent-stream errors to Sentry and Exponential Bug tickets ([#604](https://github.com/positonic/exponential/pull/604)) - **crm** — Edit-contact drawer opens bottom-left instead of docked right ([#605](https://github.com/positonic/exponential/pull/605)) - **crm** — Show uploaded contact image as avatar on detail and list pages ([#602](https://github.com/positonic/exponential/pull/602)) - **recordings** — Move Keywords section below Topics Discussed ([#599](https://github.com/positonic/exponential/pull/599)) - **cycles** — Scope cycle date-overlap validation per product ([#595](https://github.com/positonic/exponential/pull/595)) - **ticket-sync** — Make the Notion badge deep-link for adoption-era sync records ([#589](https://github.com/positonic/exponential/pull/589)) - Serve the public docs to anonymous visitors instead of /signin ([#587](https://github.com/positonic/exponential/pull/587)) - **metrics** — Natural cycle order, cycle-date and merged-PR backfill scripts, Week in Review below the fold ([#586](https://github.com/positonic/exponential/pull/586)) - **home** — Persist mention reads and stop kanban-done actions returning as overdue ([#584](https://github.com/positonic/exponential/pull/584)) - Send invited existing users straight to their new workspace, with a joined banner ([#585](https://github.com/positonic/exponential/pull/585)) - Land the member-added email on the invite page, not a signin wall ([#575](https://github.com/positonic/exponential/pull/575)) - Render meeting-summary markdown properly in app and Matrix posts ([#580](https://github.com/positonic/exponential/pull/580)) - Stop the auth middleware redirecting /public assets ([#579](https://github.com/positonic/exponential/pull/579)) - Default-deny middleware route gating — /w/ workspace routes were unprotected ([#569](https://github.com/positonic/exponential/pull/569)) - GitHub webhook fails closed; shared constant-time signature compare ([#566](https://github.com/positonic/exponential/pull/566)) - **activity** — Derive sparkline isToday from the week's local calendar ([#558](https://github.com/positonic/exponential/pull/558)) - **activity** — Hide Notion ticket-sync runs from the feed ([#553](https://github.com/positonic/exponential/pull/553)) - **comments** — Show mentions as @Name in composers instead of raw markup ([#556](https://github.com/positonic/exponential/pull/556)) - **comments** — Mentions in anchored-thread composers + discardable highlights ([#554](https://github.com/positonic/exponential/pull/554)) - **activity** — Record the feature name on meeting-promoted feature events ([#550](https://github.com/positonic/exponential/pull/550)) - **goals** — Render Markdown in goal updates, comments and OKR drawer ([#548](https://github.com/positonic/exponential/pull/548)) - **calendar** — Show the connection toast after a successful OAuth return ([#547](https://github.com/positonic/exponential/pull/547)) - **auth** — Give the iOS/Mac app its own native-auth redirect scheme ([#542](https://github.com/positonic/exponential/pull/542)) - **goals** — Partial updateGoal, workspace-scoped okr.getAll, mount setParent ([#533](https://github.com/positonic/exponential/pull/533)) - **assistant** — Scope assistants to their owner (odd.iris) ([#536](https://github.com/positonic/exponential/pull/536)) - **ticketSync** — Identify pages by back-link, not by title ([#537](https://github.com/positonic/exponential/pull/537)) - **ticketSync** — Stop the mirror duplicating rows Notion already has ([#534](https://github.com/positonic/exponential/pull/534)) - Quick-reschedule stops stamping a wall-clock time into scheduledStart ([#513](https://github.com/positonic/exponential/pull/513)) - **ci** — Make a green PR-Agent check mean a review actually happened ([#532](https://github.com/positonic/exponential/pull/532)) - **projects** — Stop the search box navigating on every keystroke ([#530](https://github.com/positonic/exponential/pull/530)) - **ticketSync** — Gate content rewrites on Notion's own created_by ([#528](https://github.com/positonic/exponential/pull/528)) - **ticketSync** — Stop the body-repair pass deleting human Notion content ([#527](https://github.com/positonic/exponential/pull/527)) - Finish agenda rail hardening and light-mode rich docs ([#525](https://github.com/positonic/exponential/pull/525)) - Cursor-batch the body-repair mutation (serverless timeout) ([#522](https://github.com/positonic/exponential/pull/522)) - Render ticket bodies as real Notion blocks + repair pass for created pages ([#521](https://github.com/positonic/exponential/pull/521)) - **okr** — Show linked features under the KR accordion ([#474](https://github.com/positonic/exponential/pull/474)) - Short agenda blocks stay legible ([#515](https://github.com/positonic/exponential/pull/515)) - Rail blocks use the task's real length, not a 60-minute default ([#507](https://github.com/positonic/exponential/pull/507)) - **settings** — Stop the agent-key modal from scrolling ([#506](https://github.com/positonic/exponential/pull/506)) - **topbar** — Link the section crumb to its own index ([#493](https://github.com/positonic/exponential/pull/493)) - **topbar** — Link the workspace crumb back to the workspace root ([#492](https://github.com/positonic/exponential/pull/492)) - Gate action create/update writes on workspace membership ([#487](https://github.com/positonic/exponential/pull/487)) - Gate assignee writes on workspace membership ([#484](https://github.com/positonic/exponential/pull/484)) - **ui** — Let the workspace crumb clear the sidebar re-open button ([#485](https://github.com/positonic/exponential/pull/485)) - **desktop** — Stamp the titlebar marker from the shell, not a head script ([#482](https://github.com/positonic/exponential/pull/482)) - Gate epic reads on workspace membership ([#481](https://github.com/positonic/exponential/pull/481)) - **today** — Keep the Today title clear of the re-open button ([#477](https://github.com/positonic/exponential/pull/477)) - Keep the window controls off the sidebar in the desktop shells ([#476](https://github.com/positonic/exponential/pull/476)) - Read Matrix token from MATRIX_ACCESS_TOKEN ([#467](https://github.com/positonic/exponential/pull/467)) - Stop logging JWT payload PII on authenticated requests ([#463](https://github.com/positonic/exponential/pull/463)) - Own the local-wiki turn loop — the librarian could not write ([#461](https://github.com/positonic/exponential/pull/461)) - Accept the signed Notion webhook handshake during bootstrap ([#460](https://github.com/positonic/exponential/pull/460)) - Surface unreadable cycle-relation pages instead of silently dropping them ([#454](https://github.com/positonic/exponential/pull/454)) - Snapshot-aware echo suppression — stop stranding pending human edits ([#452](https://github.com/positonic/exponential/pull/452)) - V4: Encryption becomes mandatory ([#443](https://github.com/positonic/exponential/pull/443)) - GitHub connect flow wipes the stored access token ([#442](https://github.com/positonic/exponential/pull/442)) - V3: Every credential read decrypts ([#441](https://github.com/positonic/exponential/pull/441)) - V2: Slack webhook fails closed ([#440](https://github.com/positonic/exponential/pull/440)) - V1: Close credential exposure ([#439](https://github.com/positonic/exponential/pull/439)) ## July 2026 ### New - **ai-worker** — Run Claude Code directly against OpenRouter, add ai-buildable ([#438](https://github.com/positonic/exponential/pull/438)) - Meeting provenance + duplicate warning on accept ([#434](https://github.com/positonic/exponential/pull/434)) - Ideate features from chat (conversational path) ([#433](https://github.com/positonic/exponential/pull/433)) - **sentry** — Allow supplying a custom webhook signing secret in the UI ([#432](https://github.com/positonic/exponential/pull/432)) - Workspace-scoped Sentry webhooks ([#431](https://github.com/positonic/exponential/pull/431)) - Ideate features from a meeting, review, and accept into the backlog ([#429](https://github.com/positonic/exponential/pull/429)) - **notifications** — Include action deep link in Matrix reminders ([#426](https://github.com/positonic/exponential/pull/426)) - Auto-link PRs to Tickets by number (unblocks CLEAR merge hooks) ([#425](https://github.com/positonic/exponential/pull/425)) - Metrics page — cycle selector (view any cycle) ([#423](https://github.com/positonic/exponential/pull/423)) - V4 daily/weekly summaries on the unified notification pipeline ([#420](https://github.com/positonic/exponential/pull/420)) - Merged-PR turnaround metric ([#419](https://github.com/positonic/exponential/pull/419)) - Velocity trend across recent completed cycles ([#418](https://github.com/positonic/exponential/pull/418)) - V3 due-date reminders on the unified notification pipeline ([#416](https://github.com/positonic/exponential/pull/416)) - Metrics page tracer bullet — nav + route + active-cycle velocity ([#417](https://github.com/positonic/exponential/pull/417)) - Notify meeting participants when notes are ready ([#415](https://github.com/positonic/exponential/pull/415)) - Notify team members added as meeting participants ([#414](https://github.com/positonic/exponential/pull/414)) - **product** — Add per-product logo ([#410](https://github.com/positonic/exponential/pull/410)) - V2 Mention on the unified notification pipeline ([#408](https://github.com/positonic/exponential/pull/408)) - V1 unified notification dispatch (Foundation + Assignment) ([#406](https://github.com/positonic/exponential/pull/406)) - Outbound creation full mirror + open-ticket backfill + outbound archive ([#407](https://github.com/positonic/exponential/pull/407)) - Enable-push toggle + outbound property push on ticket mutation ([#405](https://github.com/positonic/exponential/pull/405)) - Add team members as meeting participants (shared picker) ([#404](https://github.com/positonic/exponential/pull/404)) - **electron** — Working macOS desktop app + system-browser sign-in ([#403](https://github.com/positonic/exponential/pull/403)) - Matrix notification opt-in + scheduled-summary delivery (V2) ([#399](https://github.com/positonic/exponential/pull/399)) - MatrixNotificationService — outbound notifications via the gateway (V2) ([#398](https://github.com/positonic/exponential/pull/398)) - Derive Action.source from the caller's JWT token type (Matrix provenance) ([#394](https://github.com/positonic/exponential/pull/394)) - Matrix settings surface — matrixGateway tRPC router + MatrixGatewayCard ([#393](https://github.com/positonic/exponential/pull/393)) - V3: /welcome sole gate — retire the onboarding wizard ([#392](https://github.com/positonic/exponential/pull/392)) - Matrix gateway app seam — JWT type, refresh-token route, mappings routes ([#391](https://github.com/positonic/exponential/pull/391)) - V2: Work hours + editable profile in Settings ([#389](https://github.com/positonic/exponential/pull/389)) - **welcome** — Assistant-guided Getting Started page (Chat + Checklist views) ([#385](https://github.com/positonic/exponential/pull/385)) - **pages** — Comment feed on Knowledge Pages via shared CommentSection base ([#384](https://github.com/positonic/exponential/pull/384)) - **prd** — @-mention workspace members in feature/scope comments ([#380](https://github.com/positonic/exponential/pull/380)) - First-sync dry-run preview gate on Sync now ([#379](https://github.com/positonic/exponential/pull/379)) - Sync revert — revert a sync run with guardrail and preview ([#378](https://github.com/positonic/exponential/pull/378)) - **tickets** — Notion sync Phase 1 completion — cron, cycles/assignees, archive, badge, agent repoint ([#374](https://github.com/positonic/exponential/pull/374)) - Sync run history table on product Notion sync settings ([#376](https://github.com/positonic/exponential/pull/376)) - Soft disconnect: sync provenance survives disconnect and integration deletion ([#375](https://github.com/positonic/exponential/pull/375)) - **tickets** — Notion ticket sync — schema foundation + product connection settings ([#373](https://github.com/positonic/exponential/pull/373)) - **features** — Registry V2 - Areas, Live/Deprecated lifecycle, EARS requirements, spec-page links ([#370](https://github.com/positonic/exponential/pull/370)) - **crm** — Choose pipeline on deal create + edit, default stage to Lead ([#371](https://github.com/positonic/exponential/pull/371)) - **insights** — Detail page, decision-based triage, board publishing, duplicates + activity ([#369](https://github.com/positonic/exponential/pull/369)) - **okr** — Add comment composer to the drawer Overview tab ([#367](https://github.com/positonic/exponential/pull/367)) - **agent** — Let the assistant link projects to Key Results ([#366](https://github.com/positonic/exponential/pull/366)) - **cycles** — Back-to-cycles nav + cycle-name favourite label ([#364](https://github.com/positonic/exponential/pull/364)) - **tickets** — Wire up the Filter button on the tickets backlog ([#363](https://github.com/positonic/exponential/pull/363)) - **agent** — Read tickets/cycles + link dependencies from the assistant ([#362](https://github.com/positonic/exponential/pull/362)) - Drawer-canvas handoff, collision rules, and navigate-away abort ([#361](https://github.com/positonic/exponential/pull/361)) - Stamp Zoe canvas turns web-canvas in interaction history ([#360](https://github.com/positonic/exponential/pull/360)) - **products** — Mission-control redesign of the product Overview tab ([#358](https://github.com/positonic/exponential/pull/358)) - Zoe canvas MVP on /home behind ?canvas=1 ([#359](https://github.com/positonic/exponential/pull/359)) - **cycles** — Edit cycle name and dates from the cycle detail page ([#356](https://github.com/positonic/exponential/pull/356)) - **pages** — Favourite knowledge pages from the page header ([#351](https://github.com/positonic/exponential/pull/351)) - **integrations** — Per-workspace Postmark email sender ([#347](https://github.com/positonic/exponential/pull/347)) - **pages** — Sub-page tree, public breadcrumb, duplicate-with-subpages ([#349](https://github.com/positonic/exponential/pull/349)) - **tickets** — One-call Notion cycle import + labels on bulkCreateTickets ([#350](https://github.com/positonic/exponential/pull/350)) - **editor** — Tables in the Pages/PRD editor (slash command + round-trip) ([#348](https://github.com/positonic/exponential/pull/348)) - **pages** — Resolve page links on public pages + publish linked pages ([#346](https://github.com/positonic/exponential/pull/346)) - **today** — Split /today into Overdue, Today, and Completed sections ([#344](https://github.com/positonic/exponential/pull/344)) - **pages** — /page slash command creates and links a sub-page ([#343](https://github.com/positonic/exponential/pull/343)) - **pages** — Publish pages to the web + duplicate (ADR-0038) ([#341](https://github.com/positonic/exponential/pull/341)) - **nav** — Add Pages link under Deliver in the sidebar ([#339](https://github.com/positonic/exponential/pull/339)) - **forms** — Share a form via QR code from the editor ([#338](https://github.com/positonic/exponential/pull/338)) - **forms** — Checkbox groups, field placeholders, submit label + footnote ([#337](https://github.com/positonic/exponential/pull/337)) - **forms** — Per-form applicant-account offer toggle + custom prompt ([#336](https://github.com/positonic/exponential/pull/336)) - **forms** — Rename a form's public slug from the editor ([#335](https://github.com/positonic/exponential/pull/335)) - **forms** — Create_insight destination — forms feed product Insights ([#333](https://github.com/positonic/exponential/pull/333)) - **insights** — Fold Problem into Insight — schema, router, unified /insights UI (B1–B5) ([#332](https://github.com/positonic/exponential/pull/332)) - **crm** — "Enrich" button with AI-source provenance (ADR-0036) ([#327](https://github.com/positonic/exponential/pull/327)) - **crm** — Explicit "enrich now" trigger for existing contacts ([#325](https://github.com/positonic/exponential/pull/325)) - **crm** — Organization API surface + event-driven contact enrichment ([#323](https://github.com/positonic/exponential/pull/323)) - **okr** — Toggle to show/hide the OKR overview hero cards ([#324](https://github.com/positonic/exponential/pull/324)) - Time-trap on the public form intake ([#313](https://github.com/positonic/exponential/pull/313)) ### Fixed - **ai-bug-fixer** — Use the metered API key, not the capped subscription token ([#436](https://github.com/positonic/exponential/pull/436)) - **pages** — Restore list markers on published pages ([#437](https://github.com/positonic/exponential/pull/437)) - Agents page unusable on mobile (ticket #229) ([#435](https://github.com/positonic/exponential/pull/435)) - **ai-bug-fixer** — Restore push credential, stop committing scratch, never strand — and work any ticket type ([#430](https://github.com/positonic/exponential/pull/430)) - **ai-bug-fixer** — Support API-key auth and add opt-in agent debug output ([#428](https://github.com/positonic/exponential/pull/428)) - **ai-bug-fixer** — Grant id-token: write so the coding agent can authenticate ([#427](https://github.com/positonic/exponential/pull/427)) - GitHub PR/push webhooks dropped — matcher ignores WorkspaceRepository ([#424](https://github.com/positonic/exponential/pull/424)) - **ci** — Stop Exponential merge hook dying on PRs with no #-refs ([#422](https://github.com/positonic/exponential/pull/422)) - Metrics page — compute cycle metrics from Tickets, not Actions ([#421](https://github.com/positonic/exponential/pull/421)) - **migration** — Dedupe notification-prefs backfill (unblocks prod migrations) ([#411](https://github.com/positonic/exponential/pull/411)) - **products** — Add page padding to New product screen ([#409](https://github.com/positonic/exponential/pull/409)) - **nav** — Open Goals tab by default instead of OKRs ([#401](https://github.com/positonic/exponential/pull/401)) - Wire Matrix notification opt-in into the live /settings/notifications page ([#400](https://github.com/positonic/exponential/pull/400)) - **prd** — Surface non-conflict autosave failures instead of failing silently ([#396](https://github.com/positonic/exponential/pull/396)) - **prd** — Sync descriptionDoc when feature description is updated via API ([#383](https://github.com/positonic/exponential/pull/383)) - **tickets** — Show time alongside date on ticket activity comments ([#382](https://github.com/positonic/exponential/pull/382)) - **chat** — Render AI message links and paragraph breaks in ManyChat ([#381](https://github.com/positonic/exponential/pull/381)) - **content** — Collapse whitespace-only soft-break runs into a single <br> ([#372](https://github.com/positonic/exponential/pull/372)) - **okr** — Make "My Goals" a strictly DRI-scoped view ([#368](https://github.com/positonic/exponential/pull/368)) - **cycles** — Cancelled cycles no longer block dates; allow deleting them ([#357](https://github.com/positonic/exponential/pull/357)) - Agent tools 405 on tRPC query procedures — enable method override ([#353](https://github.com/positonic/exponential/pull/353)) - **editor** — Serialize autosaves so a tab cannot conflict with itself ([#345](https://github.com/positonic/exponential/pull/345)) - **theme** — Make Mantine the single source of truth for color scheme ([#342](https://github.com/positonic/exponential/pull/342)) - **pages** — Fill full available width instead of narrow centered container ([#340](https://github.com/positonic/exponential/pull/340)) - **forms** — Active switch persists immediately via dedicated form.setActive ([#334](https://github.com/positonic/exponential/pull/334)) ## How it connects - **Product timeline** — every commit, as it lands: [product timeline](https://www.exponential.im/product-timeline). - **Introduction** — what Exponential is, if you are new: [Introduction](https://www.exponential.im/docs). --- # Goals Section: Plan · URL: https://www.exponential.im/docs/plan/goals > Set the outcomes you are working toward, give each one an owner and a period, and connect the projects that deliver it Goals are the outcomes you are working toward. Each goal has an owner (the DRI), a period, a health, and the projects that execute it. Team and organisation workspaces use OKR vocabulary: a goal is an **Objective** and carries measurable [Key Results](https://www.exponential.im/docs/plan/okrs). ![The Goals tab listing objectives with their owner, target period, projects and health](https://www.exponential.im/doc-assets/goals.png) ## Where to find it Open [Goals](https://www.exponential.im/goals) — or **Plan** → **Goals** in the sidebar. The page has two tabs: **Goals** (this page) and **OKRs**. ## How to create a goal 1. Click **+** at the top right of the **Goals** tab. 2. Type the goal in the **What's your goal?** field. 3. Pick a **DRI** — the directly responsible individual. This is required. 4. Open **More details** if you want to set a **Status** (Planned, Active, Completed, Archived), a **Parent goal** to nest under (up to 5 levels), **Why this goal?**, a **Due date**, a **Period** such as Q1 2026 or Annual 2026, a **Project**, or **Notes**. In a team workspace you can add key results here too. 5. Click **Create Goal**. In a team workspace the same form says **objective** wherever this page says goal. ## How to find a goal - Switch between **Active**, **Planned** and **Completed** with the pills above the list. - Type in **Search** (⌘F) to filter by name. - Click **Filter** to narrow by **Target** period, **Health** or **Owner**. - Click **Mine** to show only goals you are the DRI on. - Click **Timeline** to see the same goals laid out by period instead of as a list. - Click the arrow beside a goal to expand its sub-goals and projects. ## How to work on a goal Click a goal to open its page. It has **Overview**, **Activity** and **Projects** tabs, a **Features** tab when the Product Management plugin is on, and a settings tab (the gear). - **Overview** shows sub-goals, the owner, the period and progress. Click the status badge to move the goal between **Active**, **Complete** and **On Hold**. Progress comes from key results; **Manual progress** lets you type a percentage, **Revert to auto (key results)** undoes that. - **Activity** is where health lives. Choose **Update**, pick **On track**, **At risk** or **Off track**, and write what changed. The latest update is the goal's **Initiative Health** in the list (**No update** until then). **Comment** is for discussion that does not change health. - **Projects** lists the projects delivering the goal. Link a project to a goal from the project form's **Link to Goals (Objectives)** field. ## How it connects - **[OKRs](https://www.exponential.im/docs/plan/okrs)** — the **OKRs** tab on the same page adds measurable key results to each objective and tracks them by quarter. - **[Projects](https://www.exponential.im/docs/do/projects)** — a project can serve several goals; the goal's **Projects** tab and **Active Projects** column show them. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — review your goals and check in on key results each week. - **[Wheel of Life](https://www.exponential.im/docs/plan/wheel-of-life)** — a life assessment that points at the areas worth a goal. ## Tips - Give every goal a **Period**. Goals without one show **No target** and sit outside the timeline. ## FAQ **Why does my workspace say "Objective" instead of "Goal"?** Personal workspaces use plain language (goals). Team and organisation workspaces use OKR language (objectives and key results). They are the same object. **Can I file a goal under a life domain?** Not from the goal form. The **OKRs** tab can group objectives by life domain, and a project can be tagged with life domains from the project form. **What happens when a goal is done?** Set its status to **Complete** on the goal page; it moves from **Active** to **Completed**. --- # OKRs Section: Plan · URL: https://www.exponential.im/docs/plan/okrs > Put measurable key results under your objectives and check in on them quarter by quarter OKRs (Objectives and Key Results) turn a goal into numbers you can check in on. In Exponential an Objective is a [Goal](https://www.exponential.im/docs/plan/goals), and each Key Result under it has a start value, a current value and a target. Key results are grouped by period — a quarter or a year — so the dashboard always shows what the workspace is betting on right now. ![The OKRs tab for Q3 with period tabs, the year switch and the New objective button](https://www.exponential.im/doc-assets/okrs.png) ## Where to find it Open [Goals](https://www.exponential.im/goals) — or **Plan** → **Goals** in the sidebar — and switch to the **OKRs** tab. The OKR plugin is on by default; a workspace owner can turn it off under [workspace settings → **Plugins**](https://www.exponential.im/go/settings/plugins) (see [Plugins](https://www.exponential.im/docs/reference/plugins)). ## How to pick a period 1. Click **Q1**, **Q2**, **Q3**, **Q4** or **Annual** under the heading. Each tab shows that period's progress. 2. If more than one year has OKRs, use the year switch beside the tabs. The heading reads **What we're betting on this quarter** while the period is open, and switches to past tense once it has ended. ## How to add a key result 1. Click **Add Key Result** — in the empty state, or beside an objective. 2. Choose the **Objective (Goal)** it belongs to. If you need a new one, click **New objective** at the top of the page instead; it opens the goal form. 3. Give it a **Key Result Title**, an optional **Description**, and a **Period**. 4. Set the **Start Value** and **Target Value**, and pick a **Unit**: **Percentage (%)**, **Count (#)**, **Currency ($)**, **Hours** or **Custom** with your own **Custom Unit Label**. 5. Save. The key result appears under its objective with a progress bar. ## How to check in 1. Click a key result to open it. 2. Click **Update progress**, enter the new current value and, if you like, a note about what changed. Progress is the share of the distance from start to target that you have covered. The status updates itself on every check-in: **Achieved** at 100%, **On track** from 70%, **At risk** from 40%, **Off track** below that. To overrule it, click **Edit** on the key result and set **Status** and **Confidence (%)** by hand. An objective's own health is set from its page with **Set status manually**. ## How to read the dashboard - The overview cards show **Quarter progress**, **Key results by confidence**, **Check-ins this week** and **Trajectory**. Hide or show them with the toggle beside the period tabs. - **Group objectives** switches between **None** and **Life domain**. - **Filter by status** narrows to **On track**, **At risk**, **Off track** or **Not started**. - **Mine** shows only objectives and key results you are the DRI on; **Timeline** lays the period out on a timeline. - A **Zoe noticed:** banner appears above the list when Zoe spots something worth a look, such as a key result with no recent check-in. ## How it connects - **Favourites** — pin an objective or key result to the sidebar: [Activity, views, timeline & favourites](https://www.exponential.im/docs/do/activity-views-timeline). - **[Goals](https://www.exponential.im/docs/plan/goals)** — every objective is a goal; its progress bar is calculated from its key results unless you set it manually. - **[Projects](https://www.exponential.im/docs/do/projects)** — the project form has a **Link to Key Results** field, so the work that moves a number is visible from the key result. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — the weekly plan includes an OKR check-in step for the current period. ## Tips - Keep the **Start Value** honest. A key result that starts at zero when you are already halfway shows progress you have not made. - Two to four key results per objective is enough to see whether it is moving. ## FAQ **Is there an OKR widget on the home page?** Not yet. The dashboard on the **OKRs** tab is the only place progress is summarised. **Can I use half-year periods?** No. Periods are the four quarters and **Annual**. **Who can check in on a key result?** Its owner and any member of the workspace. Agents can post check-ins too, through the API. --- # Wheel of Life Section: Plan · URL: https://www.exponential.im/docs/plan/wheel-of-life > Rank the ten areas of your life by current and desired priority, score your satisfaction, and see where the gaps are The Wheel of Life is a short self-assessment across ten areas of your life. You rank the areas by how much attention they get now and how much you want them to get, optionally score your satisfaction with each, and the result shows where the gaps are. It is personal to your account and pairs with [Goals](https://www.exponential.im/docs/plan/goals) when you decide what to change. ![The Wheel of Life page with the quarterly assessment banner and the Take Assessment button](https://www.exponential.im/doc-assets/wheel-of-life.png) ## Where to find it Open [/wheel-of-life](https://www.exponential.im/wheel-of-life). It is not in any menu, so bookmark the address. ## How to take an assessment 1. Click **New Assessment** (or **Take Assessment** the first time). 2. Under **Choose Your Assessment Mode**, pick **Quick Assessment** (about three minutes: current ranking, desired ranking, gap analysis) or **Deep Assessment** (adds a satisfaction score for each area). 3. **Current Priorities**: drag the ten areas into the order they get your attention today, most first. 4. **Desired Priorities**: drag them into the order you want. 5. Deep mode only — **Satisfaction**: score each area from 1 to 10. The guide is 1–3 struggling, 4–5 needs work, 6–7 good, 8–10 thriving. 6. **Summary** shows each area's current rank, desired rank, gap and score. Add any notes, then click **Complete Assessment**. The ten areas are Career/Business, Finance/Wealth, Health/Fitness, Family/Relationships, Romance/Partnership, Personal Growth, Fun/Recreation, Physical Environment, Social/Friends and Spirituality/Purpose. ## How to read your results - **Latest Assessment** shows the mode, the date, and a **New Assessment** button. - **Priority Gap Analysis** charts the gap between current and desired rank for every area. A positive gap means the area gets less attention than you want it to. - Areas needing attention are listed with their gap, **Current** and **Desired** rank, and satisfaction score in deep mode. - **Your Notes** repeats what you wrote on the summary step. - **Next Steps** offers **Talk to Coach**, which opens a chat with an agent that has your assessment in front of it, and **Compare Progress**, which puts your previous and current gaps side by side. - **Assessment History** lists earlier assessments; **Compare with current** opens the comparison for any of them. ## How to keep it quarterly When you have not assessed yet this quarter, a banner reads **Time for your assessment!** with the quarter's name. Click **Start Assessment** to take one tagged to the quarter, or close the banner to dismiss it. The **Latest Assessment** card shows the quarter tag on assessments started this way. ## How it connects - **[Goals](https://www.exponential.im/docs/plan/goals)** — turn an area with a large gap into a goal with an owner and a period. - **[Habits](https://www.exponential.im/docs/reflect/habits)** — a daily habit is the smallest change that moves a low-scoring area. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — review the areas you decided to focus on when you plan the week. ## FAQ **Who can see my assessments?** Only you. Assessments belong to your account, not to a workspace, so nobody you share a workspace with can open them. **Where are the AI recommendations?** Not yet. The **AI Recommendations** panel and its **Create Goal** buttons only appear once recommendations exist, and nothing in the app writes them today. Use **Talk to Coach** to discuss your results instead. **Can I edit an assessment after completing it?** No. Take a new one; the old one stays in **Assessment History** for comparison. --- # Decisions Section: Plan · URL: https://www.exponential.im/docs/plan/decisions > The Decision Log: every choice your workspace made, where it came from, what it replaced and what implements it, beside the ADRs in your repositories A decision is a recorded choice: one line saying what was decided, the context and alternatives behind it, who decided and when, and where it came from, whether a meeting, a person, or an agent. The Decision Log keeps them beside the architecture decision records (ADRs) of the repositories your workspace tracks, so "why did we do it this way?" has one answer for product and engineering alike. An open question is simply a decision that has not been made yet. ![The Decision Log](https://www.exponential.im/doc-assets/decisions.png) ## Where to find it [**Plan → Decisions**](https://www.exponential.im/go/decisions) in the sidebar. Each product also has a **Decisions** tab scoped to it, and each meeting's **Decisions** tab shows what that meeting produced. ADR sync is configured at [workspace settings → **Decisions**](https://www.exponential.im/go/settings/decisions). ## How to read the log - Filter by status: **All**, **Accepted**, **Superseded**, **Proposed**, **Open**. - Filter by source: **Code** (ADRs projected from git, read-only), **Meeting** (extracted from a transcript), **Manual** (logged by hand or by an agent). - **Grouped** puts decisions under their repository, ceremony or project; **Flat** is one list. **All products** narrows to one product. - Search matches statements and bodies. Decisions are numbered from a workspace sequence (`D-0042`); ADRs keep their repository's prefix (`API-0003`). When two ADRs claim the same number the group shows a **conflict** badge. ## How to log a decision 1. Click **New decision**. 2. Write the **Decision** in one line, pick its status (**Accepted**, **Proposed**, or **Open question** for something still to decide) and the **Decided** date. 3. Fill in the body under the headings the editor offers: **Context**, **Alternatives considered**, **Consequences**. **Preview** renders it. 4. Click **Log decision**. The decision's page shows the statement, who decided (**Deciders**, **Owner**) and where (the ceremony or meeting), the **Evidence** quotes, the body, and four controls: ![A decision's page, with its evidence and links](https://www.exponential.im/doc-assets/decision.png) - **Change status** — move it through the lifecycle below. - **Edit scope** — attach it to a **Product**, **Project**, **Objective** or **Key result**. - **Link ticket or feature** — record what implements it. - **Draft ADR** — turn it into an architecture decision record for a repository. ## How decisions come from meetings Open a meeting's **Decisions** tab and click **Extract decisions & questions**. Zoe drafts candidates from the notes and transcript, each with the quoted turns it rests on; a candidate with no evidence is discarded, never published. Review the drafts with Zoe, confirm the real ones and reject the rest. Only confirmed decisions reach the log, with the meeting and the quotes as their provenance. See [Meetings](https://www.exponential.im/docs/meet/meetings). ## How the lifecycle works **Open** (a question) → **Proposed** → **Accepted** → **Superseded** or **Deprecated**. Superseding records the newer decision on the older one (**Superseded by**), so the chain stays readable. Use **Change status** on the decision's page; superseded and deprecated are reached from there, never at creation. ## How to see the graph **Open graph** draws both sources in two views: a **Timeline** (time left to right, one lane per repository, ceremony or project; **Today** marked; undated items parked at the end) and a relationship view showing **supersedes**, **mentions (detected)** and **formalised as ADR** links. Click a decision to open it; use **Fit to width** and the zoom controls to move around. ## How to sync ADRs from git 1. Track the repositories under [Settings → Integrations](https://www.exponential.im/settings/integrations) → **GitHub Repositories** (this needs the GitHub App installed by an administrator); see [GitHub, Google & Monday.com](https://www.exponential.im/docs/integrations/github-google-monday). 2. Open [workspace settings → **Decisions**](https://www.exponential.im/go/settings/decisions) and enrol the repositories whose `docs/adr` files should appear. 3. ADRs are projected read-only; git stays the source of truth. Their content becomes readable by every workspace member, including people without access to the repository on GitHub, so enrol deliberately. ## How it connects - **Meetings** — the main source of decisions: [Meetings](https://www.exponential.im/docs/meet/meetings). - **Ceremonies** — a ceremony's occurrences collect the decisions made in them; grouped view shows decisions under their ceremony. - **Products** — tickets and features implement decisions: [Products](https://www.exponential.im/docs/build/products). - **Goals** — decisions can be scoped to an objective or key result: [OKRs](https://www.exponential.im/docs/plan/okrs). - **CLI** — `exponential decisions` lists, logs, links and moves decisions, including `decisions draft extract` for meetings. ## FAQ **Can I edit an ADR here?** No. ADRs are read-only projections of files in git; change the file in the repository. **Who can log decisions?** Workspace members. Drafts an agent proposed are visible only until someone confirms or rejects them. **What is the difference between an open question and a proposed decision?** An open question has no answer yet; answering it turns it into a decision. A proposed decision is a specific answer awaiting acceptance. --- # Inbox & Today Section: Do · URL: https://www.exponential.im/docs/do/inbox-and-today > Clear what needs you in the Inbox — notifications, things waiting on you and unsorted actions — then work from Today Inbox and Today are the two views you open every day. **Inbox** is where everything that needs you lands, across all your workspaces: your notifications, the things waiting on you, and every action that has no date and no project yet, so nothing you capture gets lost. **Today** shows what is due today and what is overdue, beside your calendar, with **Tomorrow** and **Upcoming** a tab away. ![The Inbox tabs, with the Actions tab listing unsorted actions beside the tag filter and Bulk edit control](https://www.exponential.im/doc-assets/inbox.png) ## Where to find it Open [Inbox](https://www.exponential.im/inbox) or [Today](https://www.exponential.im/today) — they are the first two items in the sidebar, above **Time**. The Inbox count in the sidebar is your unread notifications (apart from daily summaries, which you read by email) plus the things waiting on you; the number of unsorted actions is on the Inbox's **Actions** tab. [Upcoming](https://www.exponential.im/upcoming) is a plain list of what is scheduled after tomorrow; the **Upcoming** tab on Today shows the same actions grouped by day. ## The three Inbox tabs Each tab clears its own way, and each shows how many items it holds. - **Notifications** — assignments, mentions, due-date reminders, meeting and agenda updates, and summaries, newest first. **Unread** is the default, so opening an item (or clicking its tick) clears it; switch to **All** for the history, pick a type from **All types** to narrow it, or click **Mark all read**. - **Waiting on me** — what is blocked on you: **Decisions** you own or are a decider on that are still open or proposed, meetings with **Draft decisions to review**, **QA tickets** that are yours to promote (marked **PR merged — promote?** once the pull request has merged), and **Overdue actions**. These leave the tab when you act on them — decide, confirm the drafts, promote the ticket, reschedule or finish the action — not when you read them. Archiving a meeting also clears its drafts from here, and resolving a meeting's last draft marks its "draft decisions to review" notification read. - **Actions** — every action with no date and no project, described below. Your own recent history is not in the Inbox, because it never needs clearing: it is the **Mine** filter on [Activity](https://www.exponential.im/activity). ## How to clear the Actions tab An action lands in the Inbox when it has no due date, no scheduled time and no project. It leaves as soon as you give it any of those. 1. Click an action to open it. 2. Set a due date, or pick a **Project**, or both. 3. Click **Save changes**. The action moves to Today, Upcoming or its project. To handle several at once, click **Bulk edit**, tick the actions, then **Reschedule** them to a date, **Move** them to a project, or **Delete** them. Use **Filter by tags…** to work through one tag at a time. When the Inbox is empty you get a small celebration. ## How to work from Today ![Today with the overdue section open, the calendar rail and the Add task button](https://www.exponential.im/doc-assets/today.png) 1. Open the **Overdue** section at the top. Each row shows how long ago it was due. Click **Reschedule all → Today** to pull everything into today, or click the calendar icon on a row to reschedule just that one. 2. Work down the list. Tick the circle to complete an action; it stays visible as done for the rest of the day. 3. Click **Add task** at the bottom to capture something new with today's date. 4. Click **Plan** at the top to open the daily plan, and the score ring for your **Daily Productivity Score**. The rail on the right shows today's calendar events from a connected calendar (see [Integrations](https://www.exponential.im/docs/integrations)). Switch to **Tomorrow** or **Upcoming** with the tabs at the top right; **Upcoming** groups actions by day. **Filter by tags…** and **Bulk edit** work here too, and **Exit bulk** returns to the normal list. ## How it connects - **Daily plan** — the **Plan** button's six-step routine that fills Today: [Daily plan](https://www.exponential.im/docs/do/daily-plan). - **Calendar** — the events in Today's rail come from your connected calendars and feeds: [Calendar & scheduling](https://www.exponential.im/docs/meet/calendar). - **[Actions](https://www.exponential.im/docs/do/actions)** — everything in these views is an action; the workspace board under **Work** → **Actions** shows the same actions by status. - **[Projects](https://www.exponential.im/docs/do/projects)** — assigning a project is the usual way out of the Inbox; each project's **Tasks** tab shows only its own actions. - **[Routines](https://www.exponential.im/docs/reflect/routines)** — the startup routine and wind-down are built around clearing the Inbox and reviewing Today. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — pick the week's actions from Upcoming when you plan. ## Tips - Capture first, sort later. Anything you add without a date or project goes to the Inbox, so **Create Action** (⌘N) from anywhere is safe. - Overdue actions that were created together are grouped, so you can reschedule a batch that came from one meeting in one click. ## FAQ **Why is an action with a due date not in my Inbox?** The Inbox's **Actions** tab only holds actions with no date and no project. An overdue one shows on **Waiting on me** as well as on Today. A dated action is on Today or Upcoming; a project action is on its project's **Tasks** tab. **Is there a "this week" or "this month" view?** Not as separate tabs. **Upcoming** groups everything after tomorrow by day. **Can I reschedule overdue actions to a date other than today?** Yes. Use the calendar icon on a row, or **Bulk edit** → **Reschedule** to pick any date. --- # Actions Section: Do · URL: https://www.exponential.im/docs/do/actions > Create actions with priorities, dates and projects, and move them across a kanban board from Backlog to Done An Action is the unit of work in Exponential: one thing to do, with a priority, an optional due date and an optional project. Actions flow through the [Inbox and Today](https://www.exponential.im/docs/do/inbox-and-today), sit on project boards, and can be grouped into [Epics](https://www.exponential.im/docs/do/epics) and sprints. A few UI labels still say "task" — the **Add task** button on Today, the **Projects & Tasks** tab, the **Tasks** entry in the command palette — they all mean actions. ![The workspace Actions board with Backlog, To Do, In Progress and In Review columns](https://www.exponential.im/doc-assets/actions.png) ## Where to find it **Work** → **Actions** in the sidebar opens the workspace board. Actions also appear on [Inbox](https://www.exponential.im/inbox), [Today](https://www.exponential.im/today), [Upcoming](https://www.exponential.im/upcoming) and each project's **Tasks** tab. Create one from anywhere with the **Create Action** button (⌘N) above the sidebar items. ## How to create an action 1. Click the **Create Action** button above the sidebar items, or press ⌘N. 2. Type the **Task name**, and a **Description** if it needs one. 3. Set a **Priority**, a due date, a project, tags and an assignee as needed. 4. If Advanced Action Features is on, the next row offers **Sprint**, **Epic**, **Effort** and **Blockers**. 5. Click **New action**. To change an action later, click it, edit, and click **Save changes**. ## How to use priorities There are eleven priorities. **1st Priority** to **5th Priority** order the important work. The rest describe a kind of action rather than a rank: **Quick** (a few minutes), **Scheduled** (tied to a time), **Errand** (tied to a place), **Remember** (reference), **Watch** (something to monitor) and **Someday Maybe** (not now). ## How to work the board The workspace board opens on the **All Items** view. 1. Switch between the kanban and list layouts with the view toggle, and choose a **Group by**. 2. Open **Filters** to narrow by project or status. 3. Drag a card between **Backlog**, **To Do**, **In Progress**, **In Review**, **Done** and **Cancelled**. Dropping a card on **Done** completes the action; dragging it back out reopens it. ## How to use the advanced features These need **Advanced Action Features**, which a workspace owner or admin turns on under [workspace settings → **Features**](https://www.exponential.im/go/settings) (see [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings#advanced-action-features)). - **Epic** — group the action under a larger initiative. See [Epics](https://www.exponential.im/docs/do/epics). - **Sprint** — assign it to a cycle. Cycles are created under a product's **Cycles** page with **New cycle**, which needs the Product Management plugin. - **Effort** — size the work in story points, t-shirt sizes or hours. The method is chosen once per workspace under **Features**. - **Blockers** — pick the actions that must finish first. A blocked action shows a **Blocked** chip until its blockers are done. ## How it connects - **Views** — every action on one filterable board, and saved lists: [Activity, views, timeline & favourites](https://www.exponential.im/docs/do/activity-views-timeline). - **Keyboard shortcuts** — ⌘N to create an action, ⌘K to find one: [Keyboard shortcuts](https://www.exponential.im/docs/reference/keyboard-shortcuts). - **[Inbox & Today](https://www.exponential.im/docs/do/inbox-and-today)** — where actions are captured and worked day to day. - **[Projects](https://www.exponential.im/docs/do/projects)** — a project's **Tasks** tab is a board of its own actions. - **[Epics](https://www.exponential.im/docs/do/epics)** — larger initiatives made of several actions. - **[Time tracking](https://www.exponential.im/docs/do/time-tracking)** — time entries are logged against actions. - **[Notion](https://www.exponential.im/docs/integrations/notion)** — a project synced with Notion gets **Sync with Notion** and **Refresh from Notion** buttons on its action list. - **[Chrome extension](https://www.exponential.im/docs/capture/chrome-extension)** and **[iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut)** — capture actions from outside the app. ## Tips - Keep **1st** to **5th Priority** for the handful of things that matter this week; everything else can be **Quick** or **Someday Maybe**. - Reserve the due date for real deadlines. An action with no date and no project waits in the Inbox instead of nagging you on Today. ## FAQ **Are tasks and actions different things?** No. "Action" is the product's word; the few buttons that say "task" are labels that have not caught up. **Can several people be assigned to one action?** The assignee picker on the form supports it, and each assignee sees the action on their own Today. **Where did a completed action go?** Into the **Done** column of its board. It stays on Today as done until the day ends. --- # Projects Section: Do · URL: https://www.exponential.im/docs/do/projects > Group related actions into a project with an owner, a status, a priority and the goals it serves A Project groups the actions that deliver one outcome. It has a status, a priority, a DRI, optional dates, and links to the [Goals](https://www.exponential.im/docs/plan/goals) it serves. Each project has its own board, timeline, meetings and integrations, and its access can be opened to the workspace or restricted to named members. ![The Projects list filtered to Active and On Hold, with health, status, priority, DRI and ETA columns](https://www.exponential.im/doc-assets/projects.png) ## Where to find it **Work** → **Projects** in the sidebar. The page has three tabs — **Projects**, **Projects & Tasks** and **Timeline** — plus **Search** (⌘F), **Filter**, **Sort**, **Ask Zoe** and **New project**. ## How to create a project 1. Click **New project**. 2. Enter a **Project name** and, optionally, a **Project description** and **Instructions** — guidance Zoe and agents follow when they work inside the project. 3. Set the **Status** (**Active**, **On Hold**, **Completed**, **Cancelled**) and **Priority** (**None**, **Low**, **Medium**, **High**), and a **Start date** and **End date** if you have them. 4. Link it: **Link to Goals (Objectives)**, **Link to Key Results**, **Life Domains (optional)** and **Ceremonies (optional)**. With the Product Management plugin you can also pick a **Product**. 5. Choose a **DRI**, and decide access with the **Public project** and **Restricted project** switches (see below). 6. Save. The project appears in the list; if you cannot see it, check the status chips above the table. ## How to find a project - Click a status or priority chip on **Filter** to narrow the list; the active chips show above the table. - Change a project's **Status** or **Priority** inline from the dropdowns in its row. - Switch to **Projects & Tasks** to see each project with its open actions, or **Timeline** to see projects by date. ## How to work inside a project Click a project to open it. Its tabs: - **Overview** — dates, linked goals and recent activity. - **Tasks** — the project's kanban board: **Backlog**, **To Do**, **In Progress**, **In Review**, **Done**, **Cancelled**. Drag cards to change status. - **Goals** — the goals this project serves. - **Timeline** — the project's actions and milestones over time. - **Workflows** — automations linked to the project (see [Workflows](https://www.exponential.im/workflows) in the user menu). - **Meetings** — meetings linked to the project, including [Fireflies](https://www.exponential.im/docs/meet/fireflies) recordings and the actions extracted from them. - **Integrations** — task sync with **Notion Tasks Sync** or **Monday.com Integration** (one at a time), **Slack Notifications** with a **Slack Workspace** and **Slack Channel**, and a **Matrix Room** for summaries. - **Access** — the project's members and who created it. Projects owned by a team also get **Weekly Team Review** and **Weekly Commitments** tabs. ## How to control who sees a project - Every member of the workspace can see an ordinary project, whatever their role. - Turn on **Restricted project** to limit it to the creator, people added as members on the **Access** tab, and workspace owners and admins. Members of the owning team are not included automatically — add them as project members. People who attended a meeting can still view that meeting. - To hand a project to a team, open the team under [Teams](https://www.exponential.im/teams) in the user menu and add the project there. ## How it connects - **Timeline** — projects by start and end date: [Activity, views, timeline & favourites](https://www.exponential.im/docs/do/activity-views-timeline). - **Access** — public and restricted projects and project guests: [Members, roles & access](https://www.exponential.im/docs/collaborate/members-and-access). - **[Actions](https://www.exponential.im/docs/do/actions)** — a project's actions live on its **Tasks** tab and in the workspace board. - **[Goals](https://www.exponential.im/docs/plan/goals)** and **[OKRs](https://www.exponential.im/docs/plan/okrs)** — link a project to the goals and key results it moves. - **[Teams](https://www.exponential.im/docs/collaborate/teams)** — team-owned projects gain the weekly review tabs. - **[Notion](https://www.exponential.im/docs/integrations/notion)** and **[Slack](https://www.exponential.im/docs/integrations/slack)** — set up from the **Integrations** tab. - **[Fireflies](https://www.exponential.im/docs/meet/fireflies)** — recordings matched to a project appear on its **Meetings** tab. ## Tips - Give a project a **DRI** and an **End date** — the **ETA** column and the **Timeline** tab are empty without them. ## FAQ **Can I sync a project with GitHub issues?** Not from the project page. The **Integrations** tab offers Notion and Monday.com for task sync. **Does a project track a progress percentage?** Not as a field you set. The **Health** ring in the list summarises the project's state. --- # Epics Section: Do · URL: https://www.exponential.im/docs/do/epics > Group related actions together into larger initiatives to see the bigger picture Sometimes a single action is not enough to capture a bigger piece of work. That is where Epics come in. An epic is simply a way to group related actions under one umbrella, so you can track progress on a larger initiative at a glance. Think of epics like chapters in a book — each chapter (epic) holds several pages (actions) that tell the same story. ## Where to find it Epics live inside the action form, behind the **Epic** button. Two things need to be in place first: - **Advanced Action Features** must be on. A workspace owner or admin turns it on under [workspace settings → **Features**](https://www.exponential.im/go/settings) (see [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings#advanced-action-features)). - Every epic belongs to a **Product**, so the Product Management plugin must be on and at least one product must exist. ## How to create an epic You can create an epic right from the action form — no need to leave what you are doing. 1. Open an action, or click the **Create Action** button (⌘N) above the sidebar items. 2. Click the **Epic** button. 3. Click **New Epic** at the bottom of the list. 4. Fill in the **Name** (required), a **Description**, the **Product** it belongs to, a **Priority** (**High**, **Medium**, **Low** or **None**), and an optional **Start Date** and **Target Date**. 5. Click **Create**. Your new epic is ready to use straight away. ## How to put an action in an epic 1. Open the action and click the **Epic** button. 2. Pick the epic from the list. Each row shows the epic's status and how many actions it already holds. The button turns purple and shows the epic's name. Click it again to switch epics or clear it. ## How to follow an epic's progress Every epic has a status that moves through simple stages: | Status | What it means | |--------|---------------| | **Open** | Work has not started, or is just getting going | | **In Progress** | Someone is actively working on it | | **Done** | All the work is complete | | **Cancelled** | The initiative is no longer needed | Open an epic to see its **Status**, **Priority**, **Product**, **Owner**, **Start** and **Target** dates, and the **Actions** and **Tickets** inside it. Change the status, priority or dates from there. ## How it connects - **[Actions](https://www.exponential.im/docs/do/actions)** — the building blocks inside an epic; assign them with the **Epic** button. - **[Projects](https://www.exponential.im/docs/do/projects)** — projects group work by outcome; epics group it by initiative, and an epic's actions can come from several projects. - **Sprints** — assign an epic's actions to a cycle with the **Sprint** button next to **Epic** (see [Actions](https://www.exponential.im/docs/do/actions#how-to-use-the-advanced-features)). ## Tips - An epic should be a meaningful chunk of work — bigger than one action, smaller than a project. "Redesign onboarding flow" or "Q1 marketing campaign" are the right size. - Even a rough **Target Date** gives everyone a shared sense of when the initiative should wrap up. - Check on your epics during the [weekly plan](https://www.exponential.im/docs/reflect/weekly-plan): are they moving, or do any need to be reprioritised or cancelled? ## FAQ **I do not see the Epic button.** Turn on **Advanced Action Features** in [workspace settings → **Features**](https://www.exponential.im/go/settings). If it is on and the list is empty, you also need a product to attach the epic to. **Is there a page listing all my epics?** Not yet. Assign and switch epics from the action form; each epic has its own page once you open it. **Can an epic span more than one project?** Yes. An epic groups actions, and those actions can belong to any project in the workspace. --- # Time tracking Section: Do · URL: https://www.exponential.im/docs/do/time-tracking > Track where your time goes with a timer, let an agent propose the rest of your day, and confirm it in one click Time tracking shows where your days actually went: per action, per project and per product. Time reaches Exponential in two ways. **You record it** — a timer from the Chrome extension, or an entry from the CLI — and it is always treated as correct. Or **an agent proposes it** — an [external agent](https://www.exponential.im/docs/developers/external-agents) logs time on your behalf, for example from yesterday's AI coding conversations — and it shows on your Time page straight away but counts for nothing until you confirm it. Most people use both: the agent fills in the work it can see, and you time the calls, whiteboard sessions and reading it can't. ![The Time page in Week view with the Day / Week switch, workspace menu and date range](https://www.exponential.im/doc-assets/time.png) ## Where to find it Open [Time](https://www.exponential.im/time) — it is in the sidebar just below **Today**. The header shows your totals for **Today** and this **Week**. Use the **Day** / **Week** switch to change view, and the workspace menu (**All workspaces** by default) to narrow it to one workspace. ## How to read the Week view The week view lists your time entries grouped by day, most recent first, with three reports underneath: - **By project** — hours per project - **By action (top 10)** — the actions that took the most time - **Daily totals** — hours per day across the range Click any entry to edit it. You can change when it **Started** and **Ended**, **Reassign** it to a different action, or delete it. ## How to read the Day view The day view is built for the question "what did I do yesterday?". | What you see | What it means | |---|---| | **Attention** | The minutes you spent working. If two entries overlap, each minute is counted once. | | **Session** | The plain total of all your entries. It is higher than attention whenever you work on two things at once. | | **Agent-run** | Time an agent spent working on your actions while you were not involved. Shown separately and never added to your attention. | | **Proposed** | How many entries are waiting for you to confirm them. | | **Unassigned** | How many entries sit on actions that belong to no project or ticket. | Below the headline you'll find: - **By product** and **By action** charts - A **Timeline** with one lane per product, an **Unassigned** lane, and an **Agent-run** lane last - A table of every action with its **Ticket**, **Product**, **Attention** and **Agent-run** time When two entries overlap, the charts split the shared minutes evenly between them, so they add up to your attention time. Your entries themselves are never shortened. ## How to track time yourself ### With the timer 1. Open the [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension) and go to the **Track Time** tab 2. Type what you're working on, or pick an existing action 3. Start the timer The running timer appears in the Exponential sidebar, where you can stop it with **Stop timer**. You can only run one timer at a time. Starting a new one stops the previous one automatically. ### From the command line Log a finished block of time with explicit start and end times. This never touches a running timer. ```bash exponential time log --action --from 2026-09-11T14:00 --to 2026-09-11T15:30 --note "Planning call" ``` Entries you log with your own token count as your time and are confirmed immediately. See [How to use the CLI](#how-to-use-the-cli) below for setup. ## How to confirm proposed time When an external agent logs time for you, the entry is created as **proposed**: - It belongs to **you** and appears on your Time page, but the agent is recorded as the one who wrote it. - It is marked with a **proposed** badge in the week view and drawn dashed on the day timeline. - It does **not** count towards an action's time spent until you confirm it. - An agent can never confirm time. Only you can. To confirm a day: 1. Open **Time** and switch to **Day** 2. Pick the day and check the entries look right 3. Click **Confirm day** Every proposed entry on that day becomes confirmed, and the actions' time spent updates. If you've picked a workspace in the workspace menu, only that workspace's entries are confirmed. If nothing was proposed, the button is disabled. **Editing a proposed entry confirms it.** If you change its times or move it to another action, the agent treats it as settled and will never change it again, even if it runs again for the same day. ### Your time always wins When proposed time overlaps something you recorded yourself, Exponential keeps yours: - **Same action.** If the agent proposes time on an action you already timed, the proposal is dropped. Your entry gets a note linking to where the proposal came from. - **Different action.** If the agent proposes time on another action during minutes you already timed, the proposal is trimmed to the minutes you didn't cover. If that leaves nothing, or less than 5 minutes, nothing is added. - **Your entries are never changed.** The agent never moves, shortens or reassigns time you recorded. ### Forgotten timers If a timer you ran ends more than an hour after your last recorded activity that day, the week view marks it **forgotten timer?**. Exponential leaves it exactly as it is. Click the entry and fix the end time if the timer ran on. ## How to place unassigned time Work that belongs to no project or ticket yet, such as a strategy memo, lands as **Unassigned** rather than being guessed into the wrong place. 1. Open **Time** → **Day** 2. In the action table, click **Assign** on the unassigned row 3. Search for a project or ticket and pick it Leave **Remember for conversations with this title** ticked, and the next time an agent logs work under the same title it lands in the same place automatically. ### How time rolls up Every time entry belongs to an action. The action decides where the time is counted: - An action linked to a **ticket** counts towards that ticket's **product** - Otherwise, an action in a **project** counts towards that project's **product** - An action with neither is **Unassigned** For product teams, the cycle **Metrics** page also shows how much confirmed time went into work with no ticket, so untracked work is visible. ## How to use the CLI ### Set up Install the CLI, then sign in with a **JWT Token** created under [Settings → API keys](https://www.exponential.im/settings/api-keys) (see [API tokens](https://www.exponential.im/docs/developers/api-tokens)). The `--api-url` is the address you open Exponential at in your browser: ```bash npm install -g exponential-cli exponential auth login --token --api-url ``` To let an agent log time for you, give the agent its own key instead. Under an agent key, every entry is created as **proposed** and belongs to you. See [External agents](https://www.exponential.im/docs/developers/external-agents). ### Commands | Command | What it does | |---|---| | `exponential time log` | Log one finished entry with `--action`, `--from` and `--to`. Add `--note` for a one-line description. | | `exponential time log --from-file ` | Log many entries at once from a JSON file. Use `-` to read from standard input. | | `exponential time list --date YYYY-MM-DD` | List a day's entries with their status. Add `--proposed` to see only proposed ones. | | `exponential time report --date YYYY-MM-DD` | The same numbers the Day view shows. Outputs JSON when piped. | | `exponential time confirm --date YYYY-MM-DD` | Confirm a day from the terminal. Works with your own token only. | | `exponential time segment` | Turn a conversation's message timestamps into entries. See below. | | `exponential actions upsert` | Create an action for an outside source, or update it if it already exists. | Every command that takes a date also accepts `--workspace` to limit it to one workspace. ### Logging many entries A batch file is a JSON array. Each entry needs an action and a start and end time: ```json [ { "action": "", "from": "2026-09-11T09:20", "to": "2026-09-11T10:30", "note": "Fixed the slow create-task modal", "ref": "my-tool:session-42#0" } ] ``` Accepted fields are `action`, `from`, `to`, `note`, `ref`, `source` and `status`. Unknown fields are rejected, so a typo never silently drops data. **Use `ref` to make logging safe to repeat.** An entry with the same `ref` is updated instead of duplicated. Once you've confirmed or edited it, a repeat run leaves it alone. ### Recipe: logging your AI coding sessions If you work with an AI coding assistant, its conversation history already records when you were working. Three commands, run by a script or a scheduled job under an agent key, turn that into proposed time. **1. Create one action per conversation.** The same source ID always maps to the same action, so running this again only refreshes the title: ```bash exponential actions upsert --source-type ai-session --source-id \ -t "Fix the slow create-task modal" --workspace ``` Add `--project` if you know where the work belongs. If you don't, the action lands as Unassigned for you to place. **2. Cut the conversation into working stretches.** Give `time segment` the timestamps of each message: ```json [ { "at": "2026-09-11T09:22:10Z", "role": "user" }, { "at": "2026-09-11T09:23:45Z", "role": "assistant" } ] ``` A gap of more than 30 minutes between your messages ends one stretch and starts the next. Each stretch is widened to whole 5-minute marks, so 09:22 to 10:28 becomes 09:20 to 10:30. Long runs where only the assistant was working become **Agent-run** time instead of yours. **3. Pipe the result straight into `time log`:** ```bash exponential time segment --from-file messages.json --action \ --ref-prefix ai-session: \ | exponential time log --from-file - ``` Each stretch gets a stable reference, so running the recipe twice for the same day changes nothing. Open **Time → Day** the next morning, check the day, and click **Confirm day**. ## How it connects - **[Actions](https://www.exponential.im/docs/do/actions)** — every entry belongs to an action, and confirmed time becomes the action's time spent. - **[External agents](https://www.exponential.im/docs/developers/external-agents)** — an agent key is what makes logged time proposed rather than confirmed. - **[Notifications](https://www.exponential.im/docs/collaborate/notifications#summaries)** — the Daily summary carries a line like `Yesterday's time: 1h 32m across Exponential, CLEAR, 2 proposed` linking to the Time page, or **No time recorded yesterday**. ## FAQ **Why doesn't proposed time count straight away?** So an agent can be wrong without consequence. Proposed entries show you what the agent saw, but your action totals and reports only move once you've agreed. **Can an agent change time I recorded myself?** No. Your own entries always win. The agent can only add a note to them, never change their times, action or owner. **Why is my session time higher than my attention time?** You worked on more than one thing at once. Session time adds up every entry. Attention time counts each minute once. **Does agent-run time count as my time?** No. It is shown on its own lane and in its own column so you can see how much the agent did, but it never adds to your attention hours. **Can I start a timer from the Exponential web app?** Not yet. Start timers from the [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension), and stop them from either the extension or the Exponential sidebar. You can log finished blocks of time from the CLI. --- # Pages Section: Do · URL: https://www.exponential.im/docs/do/pages > Free-form documents that stand on their own, written by you or by Zoe, searchable by her, and publishable to the web A page is a document that is not tied to a day, a meeting or a product: a spec, a brief, a wiki page, a set of notes. Pages belong to a workspace, can attach to a project, can be published to the web, and are indexed so Zoe can read and cite them. Zoe can also write pages for you. ![The Pages list, filtered to public pages](https://www.exponential.im/doc-assets/pages.png) ## Where to find it [**Work → Pages**](https://www.exponential.im/go/pages) in the sidebar. Each page has its own URL; a published page also has a public one. ## How to read the list - **All**, **Public** and **Private** filter by visibility; **Filters** narrows by **Created by** and **Project**; sort by **Date modified**, **Date created** or **Title**. - **Search ⌘F** finds pages by title. - The star on a row adds the page to your **Favourites**; the **⋯** menu on a row holds its actions. ## How to write a page 1. Click **New page**. A blank page opens straight away, untitled and private. 2. Give it a title, then write. Select text to format it; type **/** to insert a block (headings, lists, images, dividers and more). 3. Everything saves as you type. **Use full width** widens the editor. Pages can nest: a page lists its **subpages**, so a spec can hold its sections as pages of their own. Mention teammates with **@** in the **Activity** thread below the page (**⌘Enter** to send) to discuss it. ## How to share a page Click **Share** on the page. - **Publish to web** turns on a public link for anyone, signed in or not. **Copy public link** and **Open public page** appear once it is published; you can edit the readable part of the **Link** (the ending is permanent, so old links keep working); **Allow search engines** decides whether it can be indexed, otherwise it is link-only. The list shows it under **Public** with a **Published** badge. - Unpublished pages are visible to your workspace's members. A page attached to a restricted project follows that project's access. ## How to use pages with Zoe - Ask Zoe to draft a page ("write a PRD for the onboarding redesign") and it appears in the list for you to edit. - Pages are part of the [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base): Zoe searches them when answering and cites the page. - A ceremony occurrence's notes are a page too; the page shows a link back to the occurrence. ## How it connects - **Products** — a feature's **Docs** can hold a PRD page: [Products](https://www.exponential.im/docs/build/products). - **Knowledge base** — pages, meeting transcripts and uploaded documents share one search: [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base). - **Projects** — a page can be attached to a project so it shows up in that project's context. - **CLI** — `exponential pages` creates, lists and links pages, and `features link-page` attaches one to a feature. ## FAQ **Can I import from Notion or Google Docs?** Not yet. Paste the content in; Markdown pastes cleanly. **Can someone outside the workspace comment on a public page?** No. Public pages are read-only for visitors; comments need a workspace account. **Where did my page go?** Check the **Private** filter and your favourites, and search by title. Deleted pages are gone; **Duplicate** first if you want a copy. --- # Daily plan Section: Do · URL: https://www.exponential.im/docs/do/daily-plan > A six-step routine that turns what is due into a day you can actually finish, with times on a grid and a written plan at the end The daily plan is a short routine you run once a day, for today or for tomorrow: pick the work, estimate how long each piece takes, fill the rest of the day from your existing actions and calendar, put it in priority order, lay it on a time grid, and write it up. The result is what [Today](https://www.exponential.im/today) shows as planned, and the daily summary and the home page banner nudge you until it is done. ![The daily plan wizard](https://www.exponential.im/doc-assets/daily-plan.png) ## Where to find it [Daily plan](https://www.exponential.im/daily-plan), the **Plan** button at the top right of [Today](https://www.exponential.im/today), and the **Plan** tab of the bottom bar on a phone. The **Daily Plan Banner** feature in workspace settings shows a reminder on the home page while the plan is unfinished. ## How to plan a day The wizard has a welcome step and six numbered steps (Fill task list and Prioritize share a screen); you can go back at any point. 1. **Which day?** Choose **Today** or **Tomorrow**. In the afternoon it suggests planning tomorrow instead. Click **Plan today** (or tomorrow). 2. **Add a task.** Name one thing you want to work on and click **Add**, or pick from the panel of existing actions that are overdue or due today. What you pick appears under **Planned for today**. 3. **Estimate timing.** Set the time you plan to spend on each item. The total is compared with your work hours, and the plan says **Over capacity** when it does not fit. 4. **Fill task list** and **Prioritize** (one screen). Create more actions, or pull in work from your existing tools: import calendar events for the day, or add actions from Notion. Drag the list into the order you will work it, and drag anything that will not fit to a later day to defer it. Press **A** to open the add box, **Esc** to close it. 5. **Schedule.** Drag items onto the day's time grid to time-block them between your work hours (set under [Settings → Profile](https://www.exponential.im/settings/profile)), or skip this step. **Get Suggestions** asks for **AI Scheduling Suggestions** for anything still unscheduled and lets you apply them in one go. 6. **Document.** A summary card of the plan plus a place for **Obstacles in my way**; this is what you share or come back to. Finish, and Today reflects the plan. A plan belongs to its date. Reopen the wizard the same day to adjust it; the next day starts a new one. ## How it connects - **Today** — where the planned, scheduled actions show up with their times: [Inbox & Today](https://www.exponential.im/docs/do/inbox-and-today). - **Time tracking** — the plan is the intent; the timer and time entries record what happened: [Time tracking](https://www.exponential.im/docs/do/time-tracking). - **Calendar** — imported events and the day's timeline come from your calendars and feeds: [Calendar & scheduling](https://www.exponential.im/docs/meet/calendar). - **Notion** — the Notion importer needs a connected Notion account: [Notion](https://www.exponential.im/docs/integrations/notion). - **Routines** — the startup routine covers mindset and reflection; the daily plan covers the schedule: [Routines](https://www.exponential.im/docs/reflect/routines). - **Notifications** — the daily summary lists the day's actions in your channels: [Notifications](https://www.exponential.im/docs/collaborate/notifications). ## FAQ **Do I have to do all six steps?** No. Adding one action and finishing is a valid plan; the later steps are there when the day needs shaping. **Can Zoe plan the day for me?** Ask her ("plan my day") from the Zoe drawer; she uses the same actions and calendar. The wizard is the hands-on version. **Where did my plan go?** Plans are per date. Open [Daily plan](https://www.exponential.im/daily-plan) and choose the same day; yesterday's plan is not shown, but the actions it scheduled keep their times. --- # Activity, views, timeline & favourites Section: Do · URL: https://www.exponential.im/docs/do/activity-views-timeline > Four ways to see the workspace as a whole: what happened, a board you shape with filters, projects on a calendar, and the things you pinned Most pages show one object. These four show the workspace: the **activity feed** is everything that happened, newest first, with a week-in-review on top; **Views** is a kanban of every action you can filter, group and save as a list; the projects **Timeline** lays projects out by start and end date; and **Favourites** is your own pinned shortlist in the sidebar. ## Where to find it - Activity: the panel on the workspace home, the full page at **Activity** in the workspace (`/w//activity`), and [Activity](https://www.exponential.im/activity) across all your workspaces. - Views: `/w//views`, reached from the **Projects & Tasks** view and the command palette's **Tasks** page. - Timeline: the **Timeline** tab at the top of [**Work → Projects**](https://www.exponential.im/go/projects). - Favourites: the **Favourites** section of the sidebar, above the Plan / Work / People / Tools sections. ## How to read the activity feed ![The activity page: week in review, events per day and the feed](https://www.exponential.im/doc-assets/activity.png) - **Week in review** summarises the week in a sentence, counts events against last week and the four-week average, and offers **Plan next week** and **Ask agent to summarize**; **Regenerate narrative** rewrites the summary. - **Events per day** and the year heatmap (**Week**, **Month**, **Year**) show the rhythm; hover a day for its count. - The feed lists every event: actions, tickets, features and comments created or changed, status changes, and summaries from watched chat channels (WhatsApp groups and the like), each with who did it and when. Events from GitHub are not in the feed yet; they appear on the Metrics page. - **Everyone** / **Mine** at the top of the feed switches between everyone's events and only the ones you did yourself — your own recent history, on the workspace page or across all your workspaces on [Activity](https://www.exponential.im/activity). The choice stays in the link (`?who=mine`), so you can bookmark it. ## How to use Views ![Views: a filtered kanban of every action](https://www.exponential.im/doc-assets/views.png) 1. Open Views. **All Items** is the default: every action in the workspace on a board with the columns **Backlog**, **To Do**, **In Progress**, **In Review**, **Done** and **Cancelled**. 2. Click **Show filters** to narrow by **Projects**, **Status**, **Priority**, **Lists** and **Tags**, tick **Include completed** to see finished work, and change **Group by** to regroup the columns. 3. Drag actions between columns to change their status; open an action's menu (**⋯**) to edit it in place. 4. **Create new list** saves the current selection as a named list you can come back to; sprint lists are the ones the action dialog's **Sprint** control offers. ## How to read the projects timeline ![The projects timeline](https://www.exponential.im/doc-assets/timeline.png) On [**Work → Projects**](https://www.exponential.im/go/projects), the **Timeline** tab draws each project as a bar from its start date to its end date, by **Month**, **Quarter** or **Year**; **Today** jumps to now. Projects without dates do not appear, so set them on the project. The status and priority filters from the Projects tab apply here too. ## How to use Favourites Click the star (**Add to favourites**) on an objective, a key result, a page or a product and it appears under **Favourites** in the sidebar for the current workspace. Favourites are yours, not the workspace's, and the star toggles them off again. Objectives and key results open in the OKR drawer; pages and products open their page. ## How it connects - **Actions** — what Views shows and reorders: [Actions](https://www.exponential.im/docs/do/actions). - **Projects** — the timeline's source of dates: [Projects](https://www.exponential.im/docs/do/projects). - **OKRs** — the objects Favourites was built for: [OKRs](https://www.exponential.im/docs/plan/okrs). - **Metrics** — where GitHub activity shows for now: [Retrospectives, insights & metrics](https://www.exponential.im/docs/build/retros-insights-metrics). - **Chat gateways** — watched WhatsApp groups post their summaries into the feed: [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways). ## FAQ **The feed says this was a quiet week but we were busy.** It counts events inside Exponential. Work done in tools that are not connected, or in another workspace, does not show; the cross-workspace [Activity](https://www.exponential.im/activity) page adds every workspace you belong to. **Can I share a view?** A saved list is visible to the workspace; the filters you have not saved are only in your browser. **Why is a project missing from the timeline?** It has no start or end date. --- # Products, tickets, features & cycles Section: Build (Products) · URL: https://www.exponential.im/docs/build/products > The Product Management plugin: a product's backlog of tickets, its registry of features and scopes, and the cycles work is planned into A product is a unit of delivery with its own backlog. Inside it, **features** are the permanent registry of what the product is made of, **tickets** are the engineering work items, and **cycles** are the time boxes tickets are planned into. Tickets and actions are different things: a ticket is a product artefact that can have child actions; an action is a piece of daily work. All of this needs the Product Management plugin, which is off by default. ![A product's overview: backlog pulse, needs attention, recent activity and quick actions](https://www.exponential.im/doc-assets/product.png) ## Where to find it 1. Turn the plugin on: [workspace settings → **Plugins**](https://www.exponential.im/go/settings/plugins) → **Product Management**. **Products** and **Metrics** then appear under **Work** in the sidebar. See [Plugins](https://www.exponential.im/docs/reference/plugins). 2. Open [**Work → Products**](https://www.exponential.im/go/products) in the sidebar. The products area has four views: **List**, **Grid**, **Products & Projects** (which projects each product owns) and **Product Roadmap** (every feature across all products on one board). Each product page has eight tabs: **Overview**, **Backlog**, **Features**, **Graph**, **Cycles**, **Insights**, **Decisions** and **Retro**. Insights, Decisions and retrospectives have their own guides coming. ## How to create a product 1. Click **New product** on the products list. 2. Enter a **Name** and a **Slug** (lowercase letters, numbers and hyphens; it becomes part of the URL). Add a **Description** if you like. 3. Click **Create product**. The **Overview** tab shows how the product is doing, in three groups: - **Cycle**: a short AI-written summary of what matters right now, a burn-up chart of the current cycle with its projected finish date, the tickets at risk (blocked, slipping past the cycle's end date, waiting for review, or unassigned), and the critical path through the tickets' **Depends on** links. Without an active cycle, a chart of tickets completed per week replaces the burn-up. **Copy as Markdown** copies the summary, the at-risk list and the critical path. - **Flow**: how many tickets sit in each stage (**Committed**, **In progress**, **In review**, **Done**, **Deployed**) and for how long, which stage is the bottleneck, and whether waiting work is waiting on people, agents or a blocker. **In review** is the **QA** status. - **Team**: who is working on what, people and agents, and the open pull requests with the reason each is waiting. Pull requests appear once the product's GitHub repositories are tracked under [**Settings → Integrations**](https://www.exponential.im/settings/integrations) and assigned to the product in [workspace settings → **Decisions**](https://www.exponential.im/go/settings/decisions). ## How to work with tickets ![The tickets table](https://www.exponential.im/doc-assets/product-tickets.png) **Backlog** lists every ticket with its ID, status, title, priority, DRI, type, labels, epic and cycle. 1. Click **New ticket**. 2. Fill in the **Title** and a Markdown **Body** (acceptance criteria, repro steps). Choose a **Type** (Bug, Feature, Improvement, Chore, Spike or Research), a **Status**, **Story points**, and optionally the **Feature** and **Cycle** it belongs to, plus a **Branch**, **PR URL** and **Design URL**. 3. Click **Create ticket**. A ticket moves through **Backlog → Needs refinement → Ready to plan → Committed → In progress → Blocked / QA → Done → Deployed**, and can be **Archived**. On a ticket's page you set its properties (status, priority, type, assignee, effort, feature, epic, cycle, labels), record dependencies (**Depends on** and **Required for**; a ticket with an open blocker shows as blocked), attach child actions under **Actions**, and discuss it in the **Activity** thread (⌘Enter to send, @ to mention). ![A ticket page](https://www.exponential.im/doc-assets/ticket.png) Ticket IDs are `PREFIX-number` by default; a product can switch to **Fun ticket IDs** (word pairs like `swift.falcon`) in its settings. ## How to work with features and scopes ![The features list, grouped by lifecycle](https://www.exponential.im/doc-assets/feature.png) **Features** is the registry of what the product is made of, not a to-do list. A feature moves **Idea → Defined → In progress → Live** (and later **Deprecated** or **Archived**). 1. Click **New feature** and give it a **Name** and **Description**; optionally a **Vision** (where the capability should go long-term), an **Aligned goal**, **Effort** and a priority (Urgent, High, Medium, Low). Area and labels are set on the feature's page. 2. Add **Scopes**: opt-in delivery stages of the feature, each **Planned → In progress → Live**, such as "v1: manual entry" then "v2: bulk import". Once any scope is Live the feature is Live. 3. Add **Requirements** as testable EARS statements ("When , the system shall "), typed Functional, Non-functional or Constraint. 4. Link work: tickets target the feature (or one of its scopes) and roll up in the **Tickets** accordion; a **PRD** page can be attached under **Docs**; a **Goal** can be linked so the feature counts as executing work for a key result. The **Graph** tab draws the objective → feature → ticket tree, with completed items hidden by default; **Product Roadmap** in the products area lays every product's features on one Idea / Defined / In progress / Live board, grouped by objective. ## How to plan cycles ![Cycles: active, upcoming and completed](https://www.exponential.im/doc-assets/product-cycles.png) A cycle is a time-boxed iteration that groups tickets. 1. On **Cycles**, click **New cycle**: **Name** (for example "Sprint 12"), **Start date**, **End date**, a **Cycle goal** and an optional **Description**. 2. Or let the product generate them: in product settings → **Cycles**, switch on **Enable cycles** and **Auto-create cycles**, choose the **Cadence**, **Start day** and how many upcoming cycles to pre-generate. **Auto-create** on the Cycles tab fills the gap immediately. 3. Assign tickets to the cycle from the ticket's **Cycle** property. The Overview tab tracks the current cycle's progress, and the Metrics page reports velocity per completed cycle. Cycles are listed as **Active**, **Upcoming** and **Completed**. ## Product settings ![Product settings](https://www.exponential.im/doc-assets/product-settings.png) A product's **Settings** page (append `/settings` to the product's URL; **Back to ** returns) has: **General** (logo, name, slug, fun ticket IDs, description), **Delivery Flow** (the workflow stages for tickets, features, epics and cycles), **Areas** (the parts of the product features belong to), **Labels**, **Notion sync**, **Workspace** (move the product to another workspace you own) and a **Danger zone**. ## How it connects - **The workflow** — how features, PRDs and tickets fit together, and how coding agents use them: [Features, PRDs and tickets](https://www.exponential.im/docs/build/features-prds-tickets). - **Projects** — a product can own projects (Project → Action work) alongside its Feature → Ticket work: [Projects](https://www.exponential.im/docs/do/projects). - **Epics** — group tickets and actions across products; every epic belongs to a product: [Epics](https://www.exponential.im/docs/do/epics). - **Goals and OKRs** — features link to key results as executing work: [OKRs](https://www.exponential.im/docs/plan/okrs). - **Meetings** — **Ideate Features** on a meeting proposes features for a product: [Meetings](https://www.exponential.im/docs/meet/meetings). - **Sprint insights** and the Metrics page report on cycles: [Sprint insights](https://www.exponential.im/docs/build/sprint-insights). - **CLI** — `exponential tickets`, `features`, `products` and `epics` manage all of this from a terminal or an agent. ## FAQ **I do not see Products in the sidebar.** The plugin is off, or your navigation hides it. Turn it on under workspace settings → Plugins, then check [Settings → Navigation](https://www.exponential.im/settings). **Ticket or action?** If it is engineering work in a product's backlog with a status like Ready to plan or QA, it is a ticket. If it is something a person does today, it is an action. A ticket can have child actions. **Can a ticket belong to two products?** No. A ticket lives in one product; move it by editing it. **Where are retrospectives, insights and metrics documented?** In [Retrospectives, insights & metrics](https://www.exponential.im/docs/build/retros-insights-metrics). --- # Features, PRDs and tickets Section: Build (Products) · URL: https://www.exponential.im/docs/build/features-prds-tickets > How a team plans and ships product work in Exponential, what goes where, and how coding agents fit in Product work in Exponential is written down in three different places, because it changes at three different speeds. A **feature** says what the product is and lives forever. A **PRD** argues what to build next and ages into history once it is built. A **ticket** is one piece of work and closes in days. This page explains how the three fit together and how a team, with or without coding agents, moves from an idea to merged code. The screens themselves are covered in [Products, tickets, features & cycles](https://www.exponential.im/docs/build/products). ## Where to find it Turn on the Product Management plugin under [workspace settings → **Plugins**](https://www.exponential.im/go/settings/plugins), then open [**Work → Products**](https://www.exponential.im/go/products) in the sidebar. Features live on a product's **Features** tab, tickets on its **Backlog** tab, and PRDs are [Pages](https://www.exponential.im/docs/do/pages) linked to a feature. ## The three speeds | | What it is | Lives for | Length | |---|---|---|---| | **Feature** | One capability of the product: "Daily summary", "Calendar feeds". | As long as the product has it. | A paragraph and a status. | | **PRD** | The argument for building it, or for its next version: problem, goals, solution, requirements. | Until it is built, then it is history. | As long as the argument needs. | | **Ticket** | One unit of work: one branch, one pull request. | Days. | What to build, acceptance criteria, what blocks it. | Keeping them apart is what keeps each one readable. The feature list stays short enough to be a map of the product. A PRD can be long, because only the people deciding need to read it. The backlog holds only work, so whoever triages it can get through it. ## How it all hangs together ``` Product ├── Area (5–10 buckets that sort the product's features) │ └── Feature (one capability; permanent) │ ├── Scope (a version of the feature: v1, v2, …) │ ├── Requirement (one testable "shall" sentence, ticked when met) │ ├── PRD page (the argument; linked under Docs) │ └── Ticket (work; one branch, one pull request) │ └── Action (an ordered step inside the ticket) └── Epic (groups tickets across a bigger initiative) ``` - **Scopes are versions.** A feature ships as v1, grows a v2, and so on. Each scope moves **Planned → In progress → Live**, and the feature is Live as soon as any scope is. - **Requirements are rows, not prose.** Each is one sentence such as "When a form is submitted, the system shall create exactly one insight." Tick it on the feature page when the product meets it. A PRD drafts requirements; the rows on the feature are the copy that counts. - **A ticket carries its steps as actions.** Prefer one ticket with several ordered actions to several tiny tickets. People read the ticket; whoever builds it works through the actions. ## How to plan a change 1. **Find or create the feature.** On the product's **Features** tab, check whether the capability already exists. If it does, you are adding a new scope to it, not a new feature. If not, click **New feature** and write one paragraph saying what the capability is. 2. **Add scopes** for the increments you plan to ship, such as "v1: manual entry" and "v2: bulk import". 3. **Write a PRD if the change needs an argued case.** On the feature page, under **Docs**, click **New PRD**. You get a page titled after the feature with Problem, Goals, Non-goals, Requirements, Rollout and Open questions headings to fill in. Skip this step for small, obvious changes. 4. **Add the requirements** to the feature as rows, each pinned to the scope that delivers it. 5. **Create tickets**: by default one per scope, set to that feature. Break the work into ordered actions on the ticket rather than into more tickets. Record **Depends on** links only where one ticket really needs another merged first. ## How to ship a ticket 1. Move the ticket to **In progress** and set its **Branch**. 2. Work through its actions in order, one commit per action, so the branch works after every step. 3. Open a pull request, paste it into the ticket's **PR URL**, and move the ticket to **QA**. 4. When the pull request merges, move the ticket to **Done**. If you forget, it appears in [Inbox → **Waiting on me**](https://www.exponential.im/docs/do/inbox-and-today) marked **PR merged — promote?** To have merges do this for you, add the merge hook described below. ## How to work with coding agents The workflow above is also packaged as a set of open-source skills for Claude Code, so a team, and its agents, does it the same way every time. The skills drive Exponential through the [command-line interface (CLI)](https://www.exponential.im/docs/developers/cli). Install them once: ```bash npm install -g exponential-cli@latest exponential auth login claude plugin marketplace add positonic/skills claude plugin install syntro-skills@syntrofi ``` The `positonic/skills` repository publishes a marketplace named `syntrofi`, which is why the install line ends in `@syntrofi` rather than `@positonic/skills`. Then, in a Claude Code session inside your repository, run `/setup-syntro-skills` once. It asks which workspace and product the repository belongs to and records the answer for the other skills. **Plan, in one session:** | Skill | What it does | |---|---| | `/grill-with-docs` | Interviews you about the change until you and the agent agree what is being built. | | `/to-prd` | Writes the PRD page, links it to the feature (creating the feature only if it does not exist), adds the scopes and the requirement rows. | | `/to-robo-prd` | Appends an implementation section for agents to the bottom of the same PRD page. People can stop reading above it. | | `/to-tickets` | Creates one ticket per scope with the steps as ordered actions, wires the dependencies and names the branches. | **Build, one fresh session per ticket:** | Skill | What it does | |---|---| | `/start-ticket` | Fetches the ticket, moves it to **In progress** and checks out its branch. | | `/implement` | Works through the actions in order, test-first, one commit each. | | `/ship-ticket` | Runs the checks, opens the pull request, links it and moves the ticket to **QA**. | | `/setup-merge-hook` | Run once per repository. Adds a GitHub Action that moves tickets to **Done** when their pull request merges. | `/to-expo` also exists, for a loose plan that does not belong to any feature. It creates one ticket per small slice, which floods a backlog when used for feature work, so use `/to-tickets` for anything that belongs to a feature. ## How it connects - **Products** — the screens for features, scopes, tickets and cycles: [Products, tickets, features & cycles](https://www.exponential.im/docs/build/products). - **Pages** — a PRD is an ordinary page linked to a feature, so it has comments, sub-pages and search: [Pages](https://www.exponential.im/docs/do/pages). - **Epics** — group tickets for an initiative that spans several features: [Epics](https://www.exponential.im/docs/do/epics). - **OKRs** — link a feature to a key result as the work that moves it: [OKRs](https://www.exponential.im/docs/plan/okrs). - **External agents** — give an agent its own identity in the workspace instead of acting as you: [External agents](https://www.exponential.im/docs/developers/external-agents). ## Tips - Keep a feature's description to one paragraph. Anything longer is an argument, and belongs in a PRD. - If a ticket wants more than about ten actions, it is probably two tickets, or the scope is two scopes. - Put the *why* behind a ticket in its comments, not its body. The body says what to build. ## FAQ **Is a feature the same as an epic?** No. A feature permanently describes one capability inside one product. An epic temporarily groups work for an initiative. **Why is the PRD a separate page and not the feature's description?** Because they go stale at different rates. The description stays short and current; the PRD records the reasoning at one point in time. Keeping the PRD out of the feature keeps the features list readable. **Does every feature need a PRD?** No. A feature can carry only requirement rows. Write a PRD when the change needs an argued case: a real problem, a choice between solutions, or a staged rollout. **Can a feature have more than one PRD?** Yes. One is normal; a second makes sense when you plan a large new version of a feature that is already live. **What happens to a PRD after the feature ships?** It stays linked under **Docs** as history. The feature's description and its ticked requirements describe the feature from then on. **Why one ticket per scope instead of one per small task?** Because a person triages the backlog. One ticket per shippable increment keeps it short enough to read, and the small steps are still there as the ticket's actions. **Do I need the agent skills?** No. Everything they do can be done in the app or with the CLI. They exist so the workflow is the same for everyone, and so an agent can be handed a ticket and left to work. **Who moves a ticket to Done?** You do, unless the repository has the merge hook from `/setup-merge-hook`, in which case the merge does. **QA** only means a pull request is open. --- # Retrospectives, insights & metrics Section: Build (Products) · URL: https://www.exponential.im/docs/build/retros-insights-metrics > The rest of a product's tabs: retrospectives per cycle, the insights surface where research and problems land, and the delivery metrics page Beyond the backlog, a product keeps three kinds of memory. **Retrospectives** record what a cycle taught you. **Insights** are the evidence behind the roadmap: pain points, feedback, personas, journeys and competitive observations, captured directly or through research sessions and public forms. **Metrics** is a read-only dashboard of how the product is delivering, cycle by cycle. All three need the Product Management plugin; see [Products](https://www.exponential.im/docs/build/products). ## Where to find it - **Retro** and **Insights** are tabs on every product page ([**Work → Products**](https://www.exponential.im/go/products), then the product). - **Metrics** is its own sidebar item under **Work**, workspace-wide, once the plugin is on. - Research sessions live under the product's Insights tab; the older Problems and Research entries feed into the same surface. ## How to run a retrospective ![Creating a retrospective](https://www.exponential.im/doc-assets/retro-new.png) 1. On the product's **Retro** tab, click **New retrospective**. 2. Give it a **Title**, optionally a **Linked cycle**, when it was **Conducted at** and the period it **Covers from** and **to**, and the **Participants**. 3. Write **What went well**, **What went poorly** and the **Action items**, then **Create retrospective**. Retrospectives are listed on the tab newest first; a retrospective ceremony's occurrence can also capture one from the recorded meeting. ## How to capture insights ![The insights surface](https://www.exponential.im/doc-assets/product-insights.png) 1. On the **Insights** tab, click **New insight**. 2. Choose a type: pain point, opportunity, feedback, persona, journey, observation, competitive or problem. Add the source it came from. 3. Insights arrive in **Inbox**; triage each one: link it to the feature it argues for (it then shows on the feature as evidence), **Park** it with a reason, mark it a **Duplicate of** another insight, or **Dismiss** it. An insight can also be made **Visible on the public feedback board**. Insights also arrive on their own: a public [form](https://www.exponential.im/docs/crm/pipeline-forms-broadcasts) can create one on submission, and a research session's findings are filed here. ## How to record research 1. From the product's **Overview** quick actions, click **New research** (research sessions are listed with the insights). 2. Enter a **Title**, the **Type** of study, when it was **Conducted at**, the **Participants** and your **Notes**, then **Create research**. 3. File what you learned as insights hung off the session, so each pain point points back to the interview it came from. ## How to read the Metrics page ![The Metrics page](https://www.exponential.im/doc-assets/metrics.png) **Metrics** shows, for **All cycles** and per cycle: | Metric | What it measures | |---|---| | **Velocity** | Tickets completed in the cycle, with story points delivered alongside | | **Tickets tracked** | Tickets in the cycle and how many are not yet complete | | **Completion** | Completed tickets as a share of the cycle's tickets | | **PRs merged** and **turnaround** | Pull requests merged in the cycle window and the average time from opened to merged, from GitHub pull request events | **Metrics by cycle** draws the trend once two cycles have tickets; **Cycle breakdown** repeats the numbers for one chosen cycle. Turnaround stays empty until a tracked repository sends pull request events; see [GitHub, Google & Monday.com](https://www.exponential.im/docs/integrations/github-google-monday). ## How it connects - **Products** — cycles, tickets and features, which everything here reports on: [Products](https://www.exponential.im/docs/build/products). - **Ceremonies** — a retrospective ceremony's occurrences carry retro actions onto the next agenda: [Ceremonies & occurrences](https://www.exponential.im/docs/meet/ceremonies). - **Forms** — a public form can file insights straight into a product: [Pipeline, forms & broadcasts](https://www.exponential.im/docs/crm/pipeline-forms-broadcasts). - **Sprint insights** — the agent-facing view of the same delivery signals: [Sprint insights](https://www.exponential.im/docs/build/sprint-insights). - **GitHub** — the source of the pull request metrics: [GitHub, Google & Monday.com](https://www.exponential.im/docs/integrations/github-google-monday). ## FAQ **Velocity shows tickets, not points.** The headline is the completed-ticket count; points delivered are shown beside it and depend on tickets having story points. **Why is there no trend line?** It appears once a second cycle has tickets. **Where did Problems go?** Problems are an insight type now; the old Problems page feeds the Insights tab. --- # Sprint insights Section: Build (Products) · URL: https://www.exponential.im/docs/build/sprint-insights > Ask Zoe how the current sprint is going and get throughput, velocity, a burndown and risk signals computed from your actions Sprint insights are the numbers Exponential computes from the sprint your actions are assigned to: how much was planned, how much is done, what was added after the start, the velocity, a burndown, and a set of risk signals. There is no sprint page to read them on; you ask Zoe, or an [external agent](https://www.exponential.im/docs/developers/external-agents) pulls them through the API. The per-cycle totals also appear on the **Metrics** page for product teams. ## Where to find it Open Zoe from **Tools** → **Agents** in the sidebar (see [Zoe](https://www.exponential.im/docs/zoe/assistant)) or through a chat gateway such as [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways), and ask about the sprint. Product teams with the Product Management plugin also get **Work** → **Metrics**, which shows **Velocity**, **Tickets tracked**, **Completion** and **PRs merged** per cycle. ## How to set a sprint up Insights only exist for a workspace with an active sprint and actions in it. 1. Create a cycle: open a product from **Work** → **Products**, go to **Cycles**, click **New cycle**, fill in the dates and click **Create cycle**. The active cycle is the sprint. 2. Assign actions to it with the **Sprint** button on the action form. This needs **Advanced Action Features**, turned on under [workspace settings → **Features**](https://www.exponential.im/go/settings). 3. Give actions an **Effort** estimate so velocity means something, and due dates so overdue work can be flagged. 4. Move cards across the board as work progresses — the columns are the source of every count. 5. Optionally connect GitHub (see [Integrations](https://www.exponential.im/docs/integrations)) so commits and pull requests can be reported alongside the sprint. ## How to ask Zoe Ask in plain language. Some starting points: - "What's the sprint status?" — planned, completed and added actions, the count in each board column, and the completion rate. - "Any risks I should know about?" — the risk signals below. - "How is our velocity trending?" — completed effort per sprint across recent sprints. - "What got merged this week?" — commits and pull requests since a date, when GitHub is connected. - "Give me a standup summary" — Zoe combines the above into a short update. ## What the numbers mean - **Planned actions** are those in the sprint when it started; **added actions** joined later. The share of added work is the scope creep figure. - **Completion rate** is the share of the sprint's actions that are done. - **Velocity** is the effort completed in the sprint, using the workspace's effort estimates. Velocity history compares recent sprints. - **Burndown** is the count of open actions per day from the sprint's start to its end. Risk signals fire when: - more than a fifth of the sprint's actions were added after it started; - an action has sat **In Progress** for three days or more without a status change; - actions are past their due date; - actions are blocked by dependencies; - the sprint is more than half over and completion is well behind the elapsed time. ## How it connects - **Metrics page** — the in-app dashboard for cycle velocity and completion: [Retrospectives, insights & metrics](https://www.exponential.im/docs/build/retros-insights-metrics). - **[Actions](https://www.exponential.im/docs/do/actions#how-to-use-the-advanced-features)** — the **Sprint**, **Effort** and **Blockers** controls feed every number here. - **[Epics](https://www.exponential.im/docs/do/epics)** — group the sprint's actions into initiatives so Zoe can report on them by theme. - **[Zoe](https://www.exponential.im/docs/zoe/assistant)** — the assistant that answers sprint questions in the app and over chat. - **[External agents](https://www.exponential.im/docs/developers/external-agents)** — an agent key can read sprint metrics, the burndown, risk signals and velocity history, and record a daily snapshot. ## Tips - Keep the board honest. A card left in **In Progress** after the work moved on shows up as a stale-item risk three days later. - Ask for the sprint status at the same time each day and the answers become a running log of the sprint. ## FAQ **Is there a sprint dashboard in the app?** Not for actions. Product teams see cycle-level velocity, completion and PR turnaround on the **Metrics** page; everything else comes through Zoe or the API. **Can Zoe send a scheduled standup?** There is no switch in the app for a scheduled sprint standup today. Ask Zoe for one when you need it. **Why does Zoe say there is no active sprint?** The sprint is the active cycle in the workspace. Create one under the product's **Cycles** page, or check that the current one has not ended. --- # Journal Section: Reflect · URL: https://www.exponential.im/docs/reflect/journal > Write a free-form entry for today, and keep a dated record of your morning and evening reflections The Journal is a free-form page for today's thoughts: a rich-text editor and one entry per day. Next to it, **Days** is the dated record of what you write in the [Startup and Wind-down routines](https://www.exponential.im/docs/reflect/routines) — exercise, gratitude, what went well, energy, learnings and challenges — one row per day you used them. ![The Journal page with its formatting toolbar and Save Entry button](https://www.exponential.im/doc-assets/journal.png) ## Where to find it Open [Journal](https://www.exponential.im/journal) or [Days](https://www.exponential.im/days). Both are in the user menu (your avatar, bottom-left) as **Journal** and **Days**. Neither is in the main sidebar. ## How to write today's entry 1. Open [Journal](https://www.exponential.im/journal). 2. Write in the editor. The toolbar offers bold, italic, underline, strikethrough, highlight, inline code, headings (H1–H4), bullet and numbered lists, blockquotes, horizontal rules, subscript and superscript, links, text alignment, and undo/redo. 3. The entry saves as you type; **Last saved** at the bottom updates with each change. **Save Entry** saves it explicitly. There is one entry per calendar day. Reopen the page the same day and the entry comes back; the next day starts blank. ## How to see your days 1. Open [Days](https://www.exponential.im/days). Each row is a day you have saved a routine on, with its date and the week it falls in. 2. Narrow the list with **All**, **This week** or **This month**. 3. Click **Today** (top right) to create today's record and open it. ## How it connects - **[Routines](https://www.exponential.im/docs/reflect/routines)** — the Startup routine's **Journal** section uses the same editor, and everything you save in either routine is stored on that day's record. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — reread the week's days before you set next week's focus. - **[Habits](https://www.exponential.im/docs/reflect/habits)** — the Wind-down routine ends with two daily habit checkboxes; habits with streaks live on the Habits page. ## Tips - The usual shortcuts work in the editor: ⌘B, ⌘I and ⌘U for bold, italic and underline. - If you want an entry kept with your account rather than in this browser, write it in the **Journal** section of the [Startup routine](https://www.exponential.im/docs/reflect/routines) and click **Save Journal**. ## FAQ **Where is my Journal entry stored?** In your browser, on the device you wrote it on. Journal-page entries are not synced to your account, so they do not appear on another device and are lost if you clear browser data. Routine entries (gratitude, journal, what went well, and so on) are saved to your account on that day's record. **Can I read back a past day's notes?** Not yet. Opening a day from Days currently shows today's routine sections rather than that day's saved notes. **Is my journal visible to other workspace members?** No. Journal and routine entries belong to you, not to a workspace, and are never shown to other members. --- # Startup & wind-down routines Section: Reflect · URL: https://www.exponential.im/docs/reflect/routines > Start the day with exercise, gratitude and a journal entry, and end it with a short reflection, all saved to the day Two guided pages bookend the day. The Startup routine (**Start Your Day With Intention**) collects what you will do for your body, what you are grateful for and a journal entry. The Wind-down routine (**End Your Day With Reflection**) asks what went well, how your energy was, what you learned and how you handled challenges. Everything you save lands on today's record under [Days](https://www.exponential.im/days). ![The Startup routine with its Converge, Diverge and Synthesize sections](https://www.exponential.im/doc-assets/startup-routine.png) ## Where to find it Open [/startup-routine](https://www.exponential.im/startup-routine) and [/wind-down](https://www.exponential.im/wind-down). Neither page is in the sidebar or the user menu, so bookmark them. Opening today's day from **Days** in the user menu shows the same startup routine. ## How to run the startup routine The page has three sections. Each field has its own save button, and **Save All Progress** at the bottom saves everything at once. 1. **Converge** — under **Exercise**, write what you will do to nourish your body today and click **Save Exercise** (or press ⌘↵). 2. **Diverge** — under **Gratitude**, write what you are grateful for and click **Save Gratitude**. Under **Journal**, write a free-form entry and click **Save Journal**. The editor is the same one as the [Journal](https://www.exponential.im/docs/reflect/journal) page, with the same formatting toolbar. 3. **Synthesize** — the wind-down sections, embedded so you can fill them in from the same page in the evening. 4. Click **Save All Progress**. **Last saved** updates when the save completes. ### Optional Converge sections Click the gear icon below the sections to show more prompts in Converge: **Show Mindset Section**, **Show Consider Section**, **Show Not-to-Do List** and **Show Important Questions**. Mindset, Consider and Important Questions are fixed checklists you tick as you go. The **Not-to-Do List** takes your own items: type one, click **Add**, and tick it later when you avoided it. These toggles are not remembered between visits. ![The Wind-down routine with the What went well and Energy Reflection sections](https://www.exponential.im/doc-assets/wind-down.png) ## How to run the wind-down routine 1. Open [/wind-down](https://www.exponential.im/wind-down). 2. **What went well today?** — write, then click **Save What Went Well**. 3. **Energy Reflection** — answer "How was your energy level today?" and click **Save Energy Reflection**. 4. **Learning and Growth** — answer "What did I learn today?" and click **Save Learning & Growth**. 5. **Reflection on Challenges** — four prompts, each with its own button: how you handled challenges (**Save Challenges Reflection**), where you fell from grace (**Save Mistakes**), what caused it (**Save Causes**) and what you will do next time (**Save Solutions**). 6. **Daily Habits** — tick **Did you meditate today?** and **Did you log your food today?**, then click **Save Progress**. ## How it connects - **[Journal](https://www.exponential.im/docs/reflect/journal)** — the Journal page is the standalone editor; **Days** lists every day you saved a routine on. - **[Habits](https://www.exponential.im/docs/reflect/habits)** — for habits you want to track with streaks, rather than the two fixed checkboxes at the end of the wind-down. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — a week of routine entries is the raw material for the weekly review. ## FAQ **Where do my entries go?** To today's record on your account, so they follow you between devices. The exception is the two **Daily Habits** checkboxes at the end of the wind-down, which are kept in this browser only. **Can I fill in a routine for a past day?** Not yet. Both pages always write to today. **Can I change the prompts?** No. You can show or hide the optional Converge sections, but the questions themselves are fixed. **Why does "Creating day record…" show at the bottom?** The first time you open the startup routine on a given day, Exponential creates that day's record. Saving is enabled once it exists. --- # Habits Section: Reflect · URL: https://www.exponential.im/docs/reflect/habits > Track daily and weekly habits, tick them off each day, and watch your streaks build Habits are recurring practices you want to keep up: daily, a few times a week, weekly, monthly, or on days you choose. The Habits page shows what is due today, lets you tick each one off, and keeps streaks and a 90-day activity calendar. A habit can be linked to a [Goal](https://www.exponential.im/docs/plan/goals) so the daily practice sits next to what it serves. ![The Habits page with stats, the Weekly Plan card, today's habits and the habit list](https://www.exponential.im/doc-assets/habits.png) ## Where to find it Open [/habits](https://www.exponential.im/habits). The page is not in the sidebar or the user menu, so bookmark it. Habits due today also appear in the **Habits** card on your home dashboard. ## How to create a habit 1. Click **Add Habit** (top right). 2. Type the habit in the title field ("What habit do you want to build?") and, optionally, a **Description**. 3. Pick a **Frequency**: **Daily**, **3x per week**, **Weekly**, **Bi-weekly**, **Monthly** or **Custom days**. For **3x per week** and **Custom days**, choose the **Days of the week**. 4. Optionally set a **Reminder time**, a **Start date**, an **End date** and **Link to goal**. 5. Click **Create Habit**. ## How to tick off a habit 1. Under **Today's Habits**, tick the checkbox next to the habit. The counter (**2 / 3 completed**) updates. 2. Tick it again to undo. Which habits are due today depends on the frequency: **Daily** every day; **Weekly** on Sundays; **Bi-weekly** every other Sunday from the start date; **Monthly** on the 1st; **3x per week** and **Custom days** on the days you picked. A habit before its start date or after its end date is not listed. ## How to read streaks and the calendar - The three cards at the top show **Active Habits**, **Completions (90 days)** and **Best Current Streak**. - The flame badge on a habit is its current streak: consecutive days with a completion, counting back from today or yesterday, whatever the habit's frequency. - **All Activity (Last 90 Days)** appears once you have any completions. Each habit card also shows its **Last 30 days**. - Switch the list between **Active**, **Inactive** and **All**. ## How to edit or delete a habit 1. Open the **⋯** menu on the habit card. 2. Click **Edit**, change the fields and click **Update Habit** — or click **Delete** and confirm. Deleting removes the habit and its history. ## How it connects - **[Goals](https://www.exponential.im/docs/plan/goals)** — a habit linked to a goal shows the goal's title on its card. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — the **Weekly Rituals** card at the top of the page shows whether this week's plan is done, your streak in weeks, and a **Start** or **View** button. - **[Routines](https://www.exponential.im/docs/reflect/routines)** — the wind-down routine ends with two fixed daily checkboxes; anything you want a streak for belongs here instead. ## FAQ **Does the reminder time send a notification?** Not yet. It is saved with the habit, but nothing sends a reminder. **Can I pause a habit without deleting it?** Not from the app yet. Set an **End date** instead: the habit stops appearing in today's list after that date and keeps its history. **Can I add a note, duration or rating to a completion?** Not yet. Ticking the checkbox records the completion for today only. **Why does my weekly habit only show up on Sundays?** That is how **Weekly** and **Bi-weekly** are scheduled today. If you want it on a different day, use **Custom days** and pick the day. --- # Weekly plan Section: Reflect · URL: https://www.exponential.im/docs/reflect/weekly-plan > Set the week across every workspace in one pass — choose what is in focus, check in on key results, re-rank projects — then drill into each workspace and share a team check-in The Weekly plan is a guided review you run once a week. It walks across every workspace you belong to in four phases: pick which workspaces are in focus and give each a theme, check in on the quarter's key results, sort projects into **Top focus**, **Active** and **Backlog**, and finish with a summary that links into each workspace's own weekly plan. Each finished week adds to your streak, and past weeks are kept in a history. ![The Weekly plan intro with the quarter at a glance and the Start portfolio review button](https://www.exponential.im/doc-assets/weekly-plan.png) ## Where to find it Open [/weekly-plan](https://www.exponential.im/weekly-plan). It is not in the sidebar or the user menu; the **Rituals** cards on your home dashboard link to it as **Portfolio Review**, and the [Habits](https://www.exponential.im/docs/reflect/habits) page has a **Weekly Plan** card. Past weeks are at [/weekly-plan/history](https://www.exponential.im/weekly-plan/history). ## How to run the review 1. The intro shows the week, your streak, **KR confidence** and **Quarter pace** for the current quarter, and how many workspaces, objectives, projects and due actions you have. Click **Start portfolio review**. 2. **Phase 1 · Triage workspaces** — click **Bring into focus** on each workspace you will actually work in this week and type a **Theme** ("What does winning this week look like?"). Click **Mark dormant** to drop one. Dormant workspaces stay visible but do not surface in the later phases. Click **Continue**. 3. **Phase 2 · Re-rank objectives** — pick a workspace tab and a quarter. Expand an objective to see its key results. Click **Focus on** to make a key result this week's focus, and click its current value (for example **3/10**) to type a new one, which logs a check-in. **Create goal** and **Add key result** are there if something is missing. Click **Continue**. 4. **Phase 3 · Prioritize projects** — every project from your in-focus workspaces sits in one of three tiers: **Top focus** (at most 5), **Active** and **Backlog**. Use the **Top**, **Active** and **Backlog** buttons on a row to move it; this changes the project's priority everywhere, not just here. Filter with the workspace chips. If projects linked to a focused key result are not in Top focus, a banner offers **Promote all**. Click **Finish review**. 5. **Phase 4 · Drill in** — the summary reads "Portfolio set for the week." with your streak and a **Drill into a workspace** list. Each entry opens that workspace's own weekly plan in a new tab. Click **Done — back to home** when you are finished. Close the review with the **X** at the top right at any time. Focus choices, themes and check-ins save as you make them, and reopening the page resumes where you stopped. ## How to review one workspace Each workspace has its own weekly plan, reached from the drill-in list, the **Weekly Plan** ritual card on the home dashboard, or the card on the Habits page. It goes through the workspace's active projects one at a time, least healthy first: 1. Choose **Quick Sweep** or **Full Review** and a timer (**10 min**, **15 min**, **25 min** or **No limit**). 2. For each project, update **Status** and **Priority**, read the derived **Health**, capture a next action, update linked key results, and note what changed since last week. 3. Finish to record the week and extend that workspace's streak. ## How to share a team check-in Each workspace also has a **Weekly Team Check-in** page, linked from the **Rituals** cards on the home dashboard. It lists the workspace's active projects with **Status**, **Priority** and a read-only column of their actions, and it is what you share with a team. 1. Click **Sharing Settings** and switch on each **organization team** that may see your plan, or click **Enable All Teams**. Only teams marked **Organization Team** in their [team settings](https://www.exponential.im/docs/collaborate/teams) appear here. 2. Back on the check-in page, **Weekly Plan Sharing** shows **Shared** with a copyable link per team. Team members find it on the team's **Weekly Plans** tab. 3. To post it to Slack, click **Send to Slack**, pick the integration and channel, and confirm. The button is disabled until the workspace has a [Slack integration](https://www.exponential.im/docs/integrations/slack). ## How it connects - **[Goals](https://www.exponential.im/docs/plan/goals)** and **[OKRs](https://www.exponential.im/docs/plan/okrs)** — Phase 2 reads the quarter's objectives and writes key-result check-ins. - **[Projects](https://www.exponential.im/docs/do/projects)** — Phase 3 sets project priority; the per-workspace plan sets status too. - **[Teams](https://www.exponential.im/docs/collaborate/teams)** — organization teams receive shared check-ins. - **[Habits](https://www.exponential.im/docs/reflect/habits)** — the weekly plan counts as a weekly ritual with its own streak. - **[Journal](https://www.exponential.im/docs/reflect/journal)** — reread the week's days before you set next week's theme. ## FAQ **Do I have to review every workspace?** No. Only the workspaces you bring into focus appear in phases 2 and 3. **What counts toward the streak?** Clicking **Finish review** in a given week. The per-workspace plan keeps a separate streak. **Can I change something after finishing?** Yes. Reopen [/weekly-plan](https://www.exponential.im/weekly-plan) and use the phase bar at the top to jump back to any phase. **Where did weekly commitments go?** The check-in no longer has its own commitments list. Set focus key results in Phase 2 and Top-focus projects in Phase 3 instead. --- # Meetings Section: Meet · URL: https://www.exponential.im/docs/meet/meetings > Every recorded, imported or hand-written meeting in one place, with a summary, the actions and decisions it produced, and who was there A meeting is a conversation that happened: its transcript, an AI summary, the people who took part, and what came out of it. Meetings arrive from Fireflies automatically or you add them by hand, and each one can be turned into actions in a project and decisions in the Decision Log. A future booking is a scheduled meeting, made with **Schedule meeting**, and is a different thing. ![The Meetings page](https://www.exponential.im/doc-assets/meetings.png) ## Where to find it [**Tools → Meetings**](https://www.exponential.im/go/meetings) in the sidebar, or [Meetings](https://www.exponential.im/meetings) across all your workspaces. Each meeting opens on its own page. ## How to read the list The header counts this week's meetings and the actions extracted from them. Tabs filter the list: **All**, **Mine** (meetings you own or attended), **1:1s**, **Customer**, **Internal**, **Archive**, and **Activity** (what Fireflies has sent recently). Search the box above the list for transcripts, people and topics, or narrow by ceremony. Each card shows the date, duration, participants and the linked project, with two shortcuts: **Assign to project** (or the project's name once it has one) and **Show AI summary**. ## How to add a meeting by hand Use this for meetings Fireflies did not record: pasted notes, a transcript from another tool, a call you took on paper. 1. Click **Add Meeting**. 2. Fill in **Title** and **Meeting Date**; a **Description** is optional. 3. Paste the **Transcript**, or write **Notes** (Markdown), or both. 4. Add **Participants** (teammates, CRM contacts, or new people by name and email), pick a **Project**, and link a **Ceremony** occurrence or **Features** if the meeting belongs to one. 5. Drop **Images** to attach screenshots or photos; they appear on the meeting's Screenshots tab. 6. Save. The meeting appears in the list and Zoe writes a summary when you open it. ## How to work with one meeting ![A meeting page: summary, actions, participants and links](https://www.exponential.im/doc-assets/meeting-detail.png) A meeting page has four tabs and a side rail. - **Summary** — the AI summary (**Copy**, **Edit**, **Regenerate**), then two blocks: **Actions**, where **Create Actions** drafts actions from the transcript for you to review, and **Product features**, where **Ideate Features** proposes features for a product. - **Transcript** — the full, speaker-attributed transcript with search; **Export transcript** in the rail downloads it. - **Decisions** — the decisions and open questions logged from this meeting. **Extract decisions & questions** asks Zoe to draft them from the transcript; drafts are confirmed or rejected here and reach the Decision Log only once confirmed. - **Screenshots** — images attached to the meeting. The rail holds **Participants** (add or remove people; talk-time shows when the transcript has speakers), **Linked** (the project, with **Open project**; **Link to an occurrence** for a ceremony; **Link to features**), **Details**, and the actions **Share with team** (copies the link), **Export transcript** and **Archive meeting**. ## How to turn a meeting into actions Nothing is created without your review. 1. Assign the meeting to a project (from the card's **Assign to project** or the rail's **Linked** block). 2. On the **Summary** tab click **Create Actions**. Zoe drafts actions from the transcript. 3. Edit or delete each draft, then confirm the ones you want. They are added to the project and show up on [Today](https://www.exponential.im/today) or in the project's board like any other [action](https://www.exponential.im/docs/do/actions). If the meeting already has actions, **Create Actions** tells you so instead of drafting duplicates. ## How to log the decisions 1. Open the **Decisions** tab and click **Extract decisions & questions**. 2. Review the drafts with Zoe: confirm the real decisions, reject the rest. An open question is a decision with status Open. 3. Confirmed decisions appear in [**Plan → Decisions**](https://www.exponential.im/go/decisions) with the quote from the transcript they came from. You can also log a decision by hand from the same tab. ## How to archive or delete **Archive meeting** in the rail moves a meeting to the **Archive** tab, where it can be restored. Deleting is permanent and available from the list. ## How it connects - **Access** — who can see a meeting follows its project: [Members, roles & access](https://www.exponential.im/docs/collaborate/members-and-access). - **Fireflies** — the automatic way meetings arrive: [Fireflies](https://www.exponential.im/docs/meet/fireflies). - **Actions** and **Projects** — where confirmed actions go: [Actions](https://www.exponential.im/docs/do/actions), [Projects](https://www.exponential.im/docs/do/projects). - **Decisions** — confirmed decisions live in the Decision Log: [Decisions](https://www.exponential.im/docs/plan/decisions). - **Ceremonies** — a recurring meeting's occurrence can be linked from the rail: [Ceremonies & occurrences](https://www.exponential.im/docs/meet/ceremonies). - **Zoe** — the summary, drafted actions, features and decisions are all hers to draft and yours to confirm: [Zoe](https://www.exponential.im/docs/zoe/assistant). - **Knowledge** — transcripts are searchable from the [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base). ## FAQ **The summary is empty or wrong.** Click **Regenerate** on the Summary tab, or **Edit** to write your own. **Create Actions found nothing.** The transcript has no action-like statements, or it is too short. Add notes with the follow-ups and try again. **Who can see a meeting?** Members of its workspace; a meeting in a restricted project follows that project's access list. **Share with team** copies the link for people who already have access. **Can I schedule a meeting from here?** **Schedule meeting** books a future meeting with workspace members and sends calendar invites; it does not create a recorded meeting. See [Calendar & scheduling](https://www.exponential.im/docs/meet/calendar). --- # Fireflies Section: Meet · URL: https://www.exponential.im/docs/meet/fireflies > Every recorded meeting arrives with its transcript, summary and action items; assign it to a project and the actions are yours Connect Fireflies.ai and each meeting it records shows up on the Meetings page a minute after it ends, with the transcript, an AI summary and the action items already extracted. Assign the meeting to a project and review which items become actions. ![The Meetings page](https://www.exponential.im/doc-assets/meetings.png) ## Where to find it - Set up: [Settings → Integrations](https://www.exponential.im/settings/integrations) → **Fireflies.ai** → **Add Fireflies**. The same wizard opens from **Connect Fireflies** on the Meetings page and from the Fireflies card on [Workflows](https://www.exponential.im/workflows). - Meetings: [**Tools → Meetings**](https://www.exponential.im/go/meetings) in the sidebar; see [Meetings](https://www.exponential.im/docs/meet/meetings) for everything you can do with one. ## How it works ![Fireflies to Exponential to Slack](https://www.exponential.im/doc-assets/fireflies-workflow.jpg) 1. Fireflies records and transcribes the meeting. 2. When the transcript is ready, Fireflies calls Exponential's webhook. 3. Exponential checks the webhook's secret, fetches the transcript and summary with your Fireflies API key, and creates the meeting. 4. You get a notification that the meeting is ready. 5. You assign the meeting to a project and approve the action items you want. ## How to connect Fireflies The wizard has four steps: **API Key → Configure → Webhook → Done**. 1. In Fireflies, open **Settings**, scroll to **Developer Settings** and copy your **API key**. 2. In Exponential, open [Settings → Integrations](https://www.exponential.im/settings/integrations), click **Add Fireflies**, paste the key and click **Continue**. Exponential tests the key. 3. Exponential generates a webhook token and shows you the **webhook URL** and the token. Copy both; the token is shown once. 4. In Fireflies, go to **Integrations → Webhooks**, add a webhook with that URL, paste the token as the secret, and enable the **Transcription completed** event. 5. Click **Done**. The Fireflies card on Workflows turns **Active**. Tokens expire (90 days is the default choice). When one expires the card shows **Setup Required**; run the wizard again to issue a new one and update the secret in Fireflies. ## How to turn a meeting into actions Action items are extracted but not created as actions automatically, so nothing lands in your projects unreviewed. 1. Open **Meetings** under **Tools**. Filters: **All**, **Mine**, **1:1s**, **Customer**, **Internal**, **Archive**. 2. Click **Show AI summary** on a meeting to read the overview and the extracted items. 3. Click **Assign to project** and choose the project. 4. Approve the items you want; each becomes an [action](https://www.exponential.im/docs/do/actions) in that project. Decisions found in the transcript go to the workspace Decision Log. Meetings you did not record with Fireflies can be added by hand with **Add Meeting** (paste a transcript or notes); a future booking is a **Schedule meeting** and is a different thing. ## What gets captured | Data | Description | |---|---| | Transcript | Full, speaker-attributed | | Summary | Overview, topics, key points | | Action items | Suggested actions with the speaker who owns them | | Participants | Matched to workspace members and CRM contacts where possible | | Meeting type | Detected category (1:1, customer, internal) | ## How it connects - **Meetings** — the list, the meeting page, drafted actions and decisions: [Meetings](https://www.exponential.im/docs/meet/meetings). - **Slack** — assign a meeting to a project with a Slack channel and the summary posts there: [Slack](https://www.exponential.im/docs/integrations/slack). - **Decisions** — decisions Zoe finds in a transcript are recorded with the quote they came from, under [**Plan → Decisions**](https://www.exponential.im/go/decisions). - **Ceremonies** — a recurring team meeting is defined once and its recorded meetings attach to each occurrence: [Ceremonies & occurrences](https://www.exponential.im/docs/meet/ceremonies). - **Knowledge** — transcripts are searchable by Zoe: [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base). ## FAQ **Nothing arrives after a meeting.** In Fireflies, check the webhook exists, points at the URL the wizard showed, has the **Transcription completed** event enabled, and that the token has not expired. **"Signature verification failed".** The secret in Fireflies does not match the current token (extra whitespace is a common cause), or the token expired. Issue a new one from the wizard. **The meeting arrived without a transcript.** The API key was rejected. Re-run the wizard with a fresh key from Fireflies' Developer Settings. **Is my API key safe?** It is encrypted at rest. Rotating a token does not delete meetings you already have. --- # Ceremonies & occurrences Section: Meet · URL: https://www.exponential.im/docs/meet/ceremonies > Define each recurring team meeting once, and let every date get its own agenda, async updates, recording and captured outputs A ceremony is a recurring team meeting defined once: standup, planning, review, retrospective, all-hands. It has an owner, a cadence, participants, a purpose and a "not for" list, an agenda template, required inputs and expected outputs. Each date it happens is an occurrence, which gets a generated agenda, collects participants' async updates, links the recorded meeting, and holds what came out: decisions, actions and a parking lot that carries to the next one. ![Workspace settings → Ceremonies](https://www.exponential.im/doc-assets/ceremonies-settings.png) ## Where to find it - Definitions: [workspace settings → **Ceremonies**](https://www.exponential.im/go/settings/ceremonies). - A ceremony's page (its definition and the list of occurrences) opens from that table; each occurrence has its own page. A meeting's rail links to the occurrence it captured (**Part of a ceremony?**). ## How to define a ceremony 1. In [workspace settings → **Ceremonies**](https://www.exponential.im/go/settings/ceremonies), click **New ceremony**, or **Add from template** to start from a standard one: **Daily Standup**, **Cycle Planning**, **Review & Demo**, **Retrospective**, **Product Prioritisation** or **All Hands**. 2. Fill in the definition: - **Name**, **Kind**, an icon, and **Title aliases** so calendar and recording titles that match attach automatically. - **Owner** (defaults to you), **Participants** (workspace members; pick a **Team** to include everyone on it), optional **Product**, and the **Projects** it reviews. - **Cadence**: pick the rule (**Day**, **Time**, **Duration**, **Time zone**) or write it as an RRULE; **Starts on** anchors it, and earlier dates never get occurrences. - **Purpose** ("why this meeting exists"), **Not for** ("what gets parked for another ceremony"), **Inputs** ("what must exist before it starts") and **Outputs** ("what it must produce"). - The **agenda template**: ordered sections, each bound to a query over workspace data (**Yesterday**, **Today**, **Up next**, **Blockers**, **Carried over**, **Decisions pending**, **OKR review**, **Cycle progress**, **Project state**, **DRI projects**, **Linked projects**, **Retro actions**) or **Free text** for hand-written items. Reorder sections with the arrows. **List linked projects on the agenda** adds a Projects section at the end. - **Agenda lead time (h)**: how many hours before the start the agenda is generated and circulated. Optionally a **Matrix room** to circulate it to. 3. Save. Occurrences are generated from the cadence for a rolling window; **Active** off stops generating them and hides the ceremony from pickers. ![A ceremony's page with its occurrences](https://www.exponential.im/doc-assets/ceremony.png) ## How an occurrence runs ![An occurrence page before the meeting](https://www.exponential.im/doc-assets/occurrence.png) 1. **Planned.** The occurrence exists with its date. Participants can post **Your update** early: for a standup, what you got done, what is next, and anything blocking you (**Draft from my activity** fills it from your recent work; **I'm blocked on something** flags it). **Async summary** shows who has answered. 2. **Agenda circulated.** The agenda is generated at the lead time, or now with **Generate agenda** / **Generate & send to participants**. Every item comes from a real record; nothing is invented. 3. **In progress → Captured.** Record the meeting as usual. A recording whose title matches an alias attaches itself; otherwise link it from the meeting's rail. The occurrence then shows the recording, and the decisions and actions extracted from it. 4. **Followed through.** Outputs are assigned and the parking lot carries into the next occurrence. An occurrence with nothing to cover can be **skipped** with a reason; the page shows it was skipped. Notes for an occurrence are a page of their own, opened from the occurrence. ## How to import and backfill **Import JSON** loads ceremony definitions from a file in the template shape (keyed by slug). **Backfill (dry run)** then attaches existing recordings to occurrences by title alias and produces a report; run it as a dry run first, review, then run it for real. ## How it connects - **Retrospectives** — a retrospective ceremony's outputs are recorded on the product's Retro tab: [Retrospectives, insights & metrics](https://www.exponential.im/docs/build/retros-insights-metrics). - **Meetings** — the recording that captures an occurrence: [Meetings](https://www.exponential.im/docs/meet/meetings). - **Decisions** — decisions made in an occurrence are logged with it as their source: [Decisions](https://www.exponential.im/docs/plan/decisions). - **Actions** and **Projects** — outputs land in the projects the ceremony reviews: [Projects](https://www.exponential.im/docs/do/projects). - **OKRs** — key results without a recent check-in surface on planning agendas: [OKRs](https://www.exponential.im/docs/plan/okrs). - **Notifications** — "agenda ready" goes out through your notification channels: [Notifications](https://www.exponential.im/docs/collaborate/notifications). ## FAQ **The agenda is empty.** Its sections found no records: no blockers, nothing carried over, no open decisions. That is a real signal, and a good moment to skip the occurrence. **A recording did not attach.** Its title matched no alias. Add the alias to the ceremony, or link the recording from the meeting's rail. **Can one recording belong to two ceremonies?** No. A recording captures one occurrence; an occurrence can have several recordings. --- # Calendar & scheduling Section: Meet · URL: https://www.exponential.im/docs/meet/calendar > See your calendar beside your actions, subscribe to published calendars, and book a meeting with workspace members at a time that suits everyone The calendar shows your connected calendars and feeds by week or day, with your scheduled meetings on it, and the same events appear in the right-hand rail of [Today](https://www.exponential.im/today). From it (or from the Meetings page) you can schedule a meeting with workspace members: Exponential finds times inside everyone's working hours and sends real calendar invites. A scheduled meeting is a future booking; once it happens and is recorded it becomes a [meeting](https://www.exponential.im/docs/meet/meetings). ![The calendar, week view](https://www.exponential.im/doc-assets/calendar.png) ## Where to find it [Calendar](https://www.exponential.im/calendar). It is not in the sidebar; Today's rail links to it, and the bottom bar on a phone has a **Calendar** tab. Calendar connections live on [Settings → Integrations](https://www.exponential.im/settings/integrations). ## How to read it - **Week** and **Day** views; **Today**, **Previous** and **Next** to move; a month picker on the right. - Events come from every connected calendar and feed. **Refresh events** pulls the latest; feeds also refresh themselves every 15 minutes. - Click an event for its details, including which calendar and account it is on; Google and Outlook events also link out to the provider. On a calendar you can edit there is **Delete**, which removes the event from that calendar itself (only that occurrence, if it repeats). If you organized the event, that cancels it for the guests: for a Google event you choose whether they are emailed, and Outlook emails them itself. If you were invited, it only comes off your own calendar. Feed events are read-only, and a scheduled meeting is cancelled from **Schedule meeting** instead. - Under **Calendars** you see what is connected, with **Disconnect calendar** for each, and can **Add Outlook** or **Add calendar feed**. ## How to connect a calendar - **Calendar feeds** work with any calendar that can publish an ICS address, Outlook included, and need no account link: click **Add calendar feed**, paste the published address, and events appear within 15 minutes. - **Google Calendar** is in early access while Google's verification completes; request access from [Settings → Integrations](https://www.exponential.im/settings/integrations). - **Outlook** connects from the calendar's **Add Outlook** button where the installation has it configured. ## How to schedule a meeting 1. Click **Schedule meeting** (on the calendar or the Meetings page). 2. Choose the **Workspace**, the **Attendees** (workspace members) and a **Duration**. 3. Click **Find times**. Suggestions fall inside every attendee's working hours (set under [Settings → Profile](https://www.exponential.im/settings/profile)); tick **Include times outside working hours** to widen the search, which still stays between 07:00 and 20:00 on each attendee's own clock. 4. Pick a time and click **Schedule & send invites**. ![The Schedule meeting dialog](https://www.exponential.im/doc-assets/schedule-meeting.png) Every attendee receives an iCalendar invite by email, so the meeting lands in whatever calendar they use. To move a meeting, cancel it and book again; the cancellation goes out as a calendar update to the same invite. ## How it connects - **Today** — the day's events sit beside the day's actions: [Inbox & Today](https://www.exponential.im/docs/do/inbox-and-today). - **Meetings** — recorded meetings, which are the other thing called a meeting: [Meetings](https://www.exponential.im/docs/meet/meetings). - **Ceremonies** — an occurrence can link to a scheduled meeting: [Ceremonies](https://www.exponential.im/docs/meet/ceremonies). - **Integrations** — where Google Calendar access is requested and feeds are managed: [Integrations](https://www.exponential.im/docs/integrations). - **Profile** — your working hours and time zone drive the suggestions: [Your settings](https://www.exponential.im/docs/reference/your-settings). ## FAQ **Why are there no times before 07:00 or after 20:00?** That window is fixed, judged on each attendee's local time, even with the working-hours box unticked. **Can I invite someone outside the workspace?** Not yet. Attendees are workspace members; add a guest to the workspace first. **My feed's events are stale.** Feeds refresh every 15 minutes; **Refresh events** forces it. If nothing changes, the published address may have been regenerated on the other side. --- # CRM contacts & organizations Section: Connect (CRM) · URL: https://www.exponential.im/docs/crm/contacts > Keep the people and companies you work with in one place, log every interaction, and keep their personal details encrypted The CRM (customer relationship management) plugin keeps contacts, the organizations they belong to, and a log of your interactions with them, scoped to one workspace. Personal details such as email, phone and social handles are encrypted at rest. Contacts can be linked to [Meetings](https://www.exponential.im/docs/meet/fireflies) as participants, grouped into lists, and moved through a deal pipeline. ![The CRM dashboard with contact and organization counts and top organizations](https://www.exponential.im/doc-assets/crm.png) ## Where to find it [**People → CRM**](https://www.exponential.im/go/crm) in the sidebar. The CRM plugin is enabled by default; if the item is missing, a workspace owner or admin can switch it on under [workspace settings → **Plugins**](https://www.exponential.im/go/settings/plugins) (see [Plugins](https://www.exponential.im/docs/reference/plugins)). Inside the CRM, the left-hand menu has **Dashboard**, **Pipeline**, **Contacts**, **Organizations**, **Automations**, **Lists**, **Broadcasts** and **Forms**. ## How to add a contact 1. Open **Contacts** and click **New Person**. 2. Fill in **First Name**, **Last Name**, **Email**, **Phone**, **LinkedIn URL**, **GitHub**, **BlueSky**, a **Description**, a **Profile Type** (Channel Partner, Advisor, Developer, Designer, Founder, Product Manager, Investor, Marketing, Sales or Other) and an **Organization**. 3. Click **Create Contact**. To bring in many contacts at once, open **Import / Export** and choose **Import from CSV** (map each column with **Import as**) or **Import contacts from Google Contacts/Calendar**. **Export to CSV** and **Export to Excel** are in the same menu. Select two or more contacts in the list and click **Merge contacts** to combine duplicates; you review the merged record before it is saved. ## How to add an organization 1. Open **Organizations** and click **Add Organization**. 2. Fill in **Name**, **Website URL**, **Description**, **Industry** and **Organization Size**. 3. Click **Create Organization**. Link a contact to an organization from the **Organization** field on the contact. The organization page then lists everyone linked to it on its **Team** tab. ## How to log an interaction 1. Open a contact and click **Add interaction**. 2. Choose a **Type** (**Email**, **Phone Call**, **Meeting**, **Note**, **Telegram**, **LinkedIn** or **Other**) and a **Direction** (**Outbound** or **Inbound**). 3. Add a **Subject** and **Notes**, then save. Interactions feed the contact's **Activity** tab, the **Emails**, **Telegram** and **Notes** tabs, the **Connection strength** shown on the overview, and the **Recent Interactions** count on the dashboard. ## How to edit a contact 1. On the contact page, click the pencil icon next to **Record Details**, or choose **Edit** from the **⋯** menu in the contacts list. 2. The edit drawer groups fields into **Identity**, **Contact** (**Email**, **Phone**), **Social** (**LinkedIn URL**, **Telegram**, **Twitter / X**, **GitHub**, **BlueSky**), notes and **Images**. 3. Save. **Enrich** in the same menu queues a web search that fills in missing details; workspace owners, admins and members can run it, and the **Auto-enrich Contacts** feature in workspace settings can run it for new contacts automatically. ## How it connects - **Pipeline, forms and broadcasts** — deals, public forms and scheduled emails: [Pipeline, forms & broadcasts](https://www.exponential.im/docs/crm/pipeline-forms-broadcasts). - **Pipeline** — a contact can have deals that move through pipeline stages. See [Lists, pipelines & automations](https://www.exponential.im/docs/crm/lists-pipelines-automations). - **Lists** — named groups of contacts; a **Broadcast** emails everyone on a list. - **Automations** — run steps when a contact's **Profile Type** is set, or when a contact is added to a list. - **Forms** — public forms that create contacts when submitted. - **[Meetings](https://www.exponential.im/docs/meet/fireflies)** — a contact's **Meetings** tab lists the meetings they were a participant in. - **[Workspaces](https://www.exponential.im/docs/collaborate/workspaces)** — CRM data belongs to one workspace; other workspaces cannot see it. ## Tips - Set a **Profile Type** on every contact. It is the filter you will reach for most, and it is the trigger automations key off. - Add a contact's email even if you know nothing else: it is what stops imports and merges from creating duplicates. ## FAQ **What exactly is encrypted?** Email, phone, LinkedIn, Telegram, Twitter / X, GitHub and BlueSky are encrypted at rest. Names, descriptions and organization details are not. **Who can see contacts?** Every member of the workspace. Viewers can read them; owners, admins and members can edit and enrich. **Can I move a contact to another workspace?** Not yet. Export to CSV from one workspace and import into the other. **What is the Communications item in the CRM menu?** It is marked **Coming Soon** and does nothing yet. --- # Lists, pipelines & automations Section: Connect (CRM) · URL: https://www.exponential.im/docs/crm/lists-pipelines-automations > How the three CRM building blocks fit together — who, where they are in a process, and what happens automatically The CRM gives you three building blocks that look similar but do different jobs. A **List** is *who*, a **Pipeline** is *where each contact is in a process*, and an **Automation** is *what happens automatically* when something changes. | Block | What it is | Example | |-------|-----------|---------| | **List** | A named group of contacts | "Newsletter subscribers", "Beta testers" | | **Pipeline** | Deals moving through stage columns | Lead → Proposal → Won | | **Automation** | Steps that run when a trigger fires | "When a contact becomes a Channel Partner, send the welcome email" | ## Where to find it [**People → CRM**](https://www.exponential.im/go/crm) in the sidebar, then **Lists**, **Pipeline** or **Automations** in the CRM menu. Contacts and organizations themselves are covered on [CRM contacts & organizations](https://www.exponential.im/docs/crm/contacts). ## Lists A list is a curated set of contacts: in or out, nothing more. A contact can be in many lists at once ("Investors" *and* "Newsletter"). Lists have no order and no stages. 1. Open **Lists** and click **Create list**. 2. Give it a **List name**. 3. Open the list, pick contacts under **List members** and click **Add**. A contact's own page shows the lists it is on under **Lists**. Two things use a list: a **Broadcast** (under **Broadcasts** in the CRM menu (see [Pipeline, forms & broadcasts](https://www.exponential.im/docs/crm/pipeline-forms-broadcasts))) emails everyone on the list, skipping anyone who has unsubscribed, and the list's own **Automations** section runs an automation whenever a contact is added to the list. ## Pipelines A pipeline is a Kanban board of **deals**. Each deal is a card in exactly one column (a **stage**) at a time. A new pipeline starts with **Lead**, **Qualified**, **Proposal**, **Negotiation**, **Won** and **Lost**; rename, recolor, reorder, add or remove stages under **Pipeline Settings**. A workspace can have several pipelines; switch between them with the selector at the top of the board. A deal is its own record: it links to a contact and an organization and carries a value, a win probability and an expected close date. One contact can have several deals. Drag a card between columns as the deal progresses. ## Automations An automation is a trigger followed by an ordered list of steps, built on a visual canvas. 1. Open **Automations** and click **Create new automation**. 2. Give it a **Name** and choose the trigger: **when Customer type is set to** a given Profile Type (for example *Investor*). 3. The automation opens in the builder. Add steps (send an email, generate an agreement, and so on) in the order they should run. 4. Activate it when you are ready. New automations start **inactive** so you can build safely, and an automation cannot be activated without a trigger type. Steps run in a straight line — step 1, then step 2, then step 3 — with no branching. ## How they fit together - A **List** answers *who*. - A **Pipeline** answers *where each contact is in a process*. - An **Automation** answers *what happens automatically* when something changes. They are deliberately kept separate: a contact can be in many lists but in only one stage of a pipeline. They meet through events. Setting a contact's **Profile Type** to *Channel Partner* is an event; an automation listening for it sends the welcome email and generates the partner agreement, and the contact record itself stays a contact. Adding a contact to a list is another event, and the list's automations react the same way. ## How it connects - **[CRM contacts & organizations](https://www.exponential.im/docs/crm/contacts)** — the records that lists, deals and automations act on. - **Broadcasts** — the CRM's bulk email, sent to a list; find it under **Broadcasts** in the CRM menu. - **[Notifications](https://www.exponential.im/docs/collaborate/notifications)** — automation emails go to your contacts; your own notifications are configured separately. ## FAQ **Can an automation trigger when a deal enters a stage?** Not yet. Automations trigger on a contact's Profile Type today, and lists can run automations when a contact is added. Pipeline-stage triggers are not available. **Can an automation branch?** No. Steps always run in order, one after the other. **Does a broadcast go to contacts who unsubscribed?** No. A contact who opted out is skipped even if they are on the list. --- # Pipeline, forms & broadcasts Section: Connect (CRM) · URL: https://www.exponential.im/docs/crm/pipeline-forms-broadcasts > Track deals on a kanban pipeline, collect contacts and deals through public forms, and send a daily email digest to a list Three CRM tools that sit beside contacts, lists and automations: the **Pipeline** tracks deals through stages you define, **Forms** are public pages whose submissions create contacts, deals or product insights, and **Broadcasts** are scheduled emails to a list. All three live in the CRM's own menu and need the CRM plugin, which is on by default. ![The sales pipeline](https://www.exponential.im/doc-assets/crm-pipeline.png) ## Where to find it [**People → CRM**](https://www.exponential.im/go/crm) in the sidebar, then **Pipeline**, **Forms** or **Broadcasts** in the CRM menu (Dashboard · Pipeline · Contacts · Organizations · Automations · Lists · Broadcasts · Forms). ## How to work the pipeline The pipeline is a kanban of deals. The header shows **Pipeline Value** (open deals), **Weighted Value** (adjusted by each deal's probability), **Won Revenue** and **Conversion Rate**. A new pipeline starts with the stages **Lead → Qualified → Proposal → Negotiation → Won → Lost**. 1. Click **Add Deal**: **Title**, **Value**, **Probability** (win %), **Expected Close Date**, **Pipeline**, **Stage**, the **Contact** and **Organization** it belongs to, and an optional **Description**. 2. Drag a deal between columns to move it through the stages; **Won** and **Lost** close it. 3. **New pipeline** creates another pipeline (for example "Hiring"), each with its own stages; switch between them with the pipeline selector. **Settings** opens **Pipeline Settings** for the current pipeline, where you **Add** stages and manage the existing ones. ## How to collect contacts and deals with a form ![The Forms page](https://www.exponential.im/doc-assets/crm-forms.png) 1. Click **Create new form**, name it and click **Create**. 2. Add **Fields**: text, long text, email, first and last name, company, URL, dropdown, checkbox, multi-checkbox. Each has a **Label**, a **Key**, an optional **Placeholder** and a **Required** switch; reorder them with the arrows. 3. Choose what happens **When submitted**: - **Create CRM contact** — map form fields to the contact and set its **Customer type**, which can fire an [automation](https://www.exponential.im/docs/crm/lists-pipelines-automations). - **Add to pipeline (create deal)** — pick the **Pipeline** and **Stage** and a **Deal title template** with `{fieldKey}` tokens. - **Create product insight** — pick the **Product** and the **Insight type** (pain point, opportunity, feedback, persona, journey, observation, competitive) so submissions land on the product's insights surface. 4. Set the **Title**, **Description**, **Submit button label**, **Confirmation message** and **Footnote** the visitor sees, and optionally **Offer an Exponential account after submit** with an **Account prompt**. 5. Switch the form to **Active**, then share its public link, rename the link's slug, or **Share via QR code**. ## How to send a broadcast ![The Broadcasts page](https://www.exponential.im/doc-assets/crm-broadcasts.png) A broadcast is a scheduled daily email to a [list](https://www.exponential.im/docs/crm/lists-pipelines-automations), for example a "What shipped today" digest from your repositories. 1. Click **Create broadcast**: **Name**, **Email subject**, **Send to list** and the **Daily send hour (UTC)**. It is created as a draft. 2. **Send test to me** delivers one copy to your own address. 3. Open it (**Edit** in its actions menu) and switch it to active to start the daily send; switch it off to pause, or **Delete** it. Every email carries an unsubscribe link, and a contact who uses it stops receiving that list's broadcasts. ## How it connects - **Contacts and organisations** — every deal and form submission points at a contact: [Contacts](https://www.exponential.im/docs/crm/contacts). - **Lists and automations** — broadcasts send to lists; form submissions can trigger automations: [Lists, pipelines & automations](https://www.exponential.im/docs/crm/lists-pipelines-automations). - **Products** — the insight destination feeds a product's insights surface: [Products](https://www.exponential.im/docs/build/products). - **CLI** — `exponential deals` moves deals between stages from a terminal or an agent. ## FAQ **Can an automation fire when a deal changes stage?** Not yet. Automations trigger on a contact's customer type, and lists run them when a contact is added. **Can a form create both a contact and a deal?** Yes: each destination is a separate switch on the form, and the deal is attached to the contact the same submission created. **Who receives a broadcast?** The members of the list at send time, minus anyone who unsubscribed. Emails go out once a day at the hour you set, in UTC. --- # Workspaces Section: Collaborate · URL: https://www.exponential.im/docs/collaborate/workspaces > Keep separate companies, clients or areas of your life in their own containers, each with its own members, projects, goals and plugins A workspace is a container for a set of projects, goals, actions, meetings and CRM data, with its own members and roles. Most people have one per company or client, plus a personal one; you can belong to as many as you need and switch between them from the top of the sidebar. Everything you see in the sidebar sections — Plan, Work, People and Tools — belongs to the workspace you are in. ![The Workspaces page listing each workspace with its projects, goals and member count](https://www.exponential.im/doc-assets/workspaces.png) ## Where to find it The workspace switcher is at the top of the sidebar; click it to change workspace, open its settings, or create a new one. The full list is at [/workspaces](https://www.exponential.im/workspaces), and [/workspaces/new](https://www.exponential.im/workspaces/new) creates one. Workspace settings are reached from the switcher or from the **Settings** link on a workspace card. ## How to create a workspace 1. Click the workspace switcher and choose **Create Workspace**, or click **New Workspace** on the Workspaces page. 2. Enter a **Workspace Name**. The **Slug** fills in automatically and appears in URLs; you can edit it before creating, not after. 3. Add a **Description**, choose a **Workspace Type** (**Team** or **Organization**) and a **Home page layout**. 4. Click **Create Workspace**. You become its owner. ## How to invite someone 1. Open workspace settings and go to **Members**. 2. Click **Invite member**, search for an existing user by name or email, or enter an email address. 3. Choose a **Role** — **Admin - Can manage members and settings**, **Member - Can view and edit content** or **Viewer - Read-only access** — and send. Someone who already has an account is added straight away. Anyone else gets an invitation link that expires after 7 days; **Pending invitations** on the same tab lets you copy the link, resend it with a fresh link, or cancel it. Owners and admins can change a member's role (**Edit role**) or remove them (**Remove member**); the owner cannot be removed. ## Roles | Role | What they can do | |------|------------------| | **Owner** | Everything, including changing roles and deleting the workspace | | **Admin** | Manage members, settings, integrations and plugins; full access to content | | **Member** | Create and edit projects, actions, goals, meetings and CRM records | | **Viewer** | Read everything; cannot change content or settings | | **Guest** | Not a workspace role: someone added to a specific project only. They see that project and nothing else, and are listed under **Project guests** on the Members tab. Manage them on the project's **Access** tab. | Team membership also grants access: if a [team](https://www.exponential.im/docs/collaborate/teams) is linked to a workspace, its members can use the workspace as members without an invitation. ## Workspace settings Owners and admins open settings from the switcher. The tabs are: - **General** — name, slug, type, logo, the description and instructions Zoe sees in this workspace, your default workspace and home layout. - **Members** — members, project guests and pending invitations. - **Teams** — teams linked to this workspace, teams available to link, and teams linked elsewhere. - **Features** — switches for product behaviours such as advanced action features, the daily and weekly plan banners and email notifications. - **Integrations** — email account, Postmark, Slack, Zulip, Matrix, Sentry, Notion and Fireflies for this workspace. - **Plugins** — turn plugins such as CRM, OKRs and Product Management on or off. See [Plugins](https://www.exponential.im/docs/reference/plugins). - **Ceremonies** — recurring team meetings and their agendas. - **Danger zone** — delete the workspace (owners only; type its name to confirm). See [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings) for the full reference. ## How it connects - **Activity** — everything that happened in the workspace, with a week in review: [Activity, views, timeline & favourites](https://www.exponential.im/docs/do/activity-views-timeline). - **Members, roles and access** — roles, invitations, guests, public and restricted projects in one place: [Members, roles & access](https://www.exponential.im/docs/collaborate/members-and-access). - **[Teams](https://www.exponential.im/docs/collaborate/teams)** — a team is a group of people; link it to a workspace under **Teams** to give everyone in it access at once. - **[Projects](https://www.exponential.im/docs/do/projects)** — every project lives in one workspace; a **Restricted project** limits it to its own members and workspace admins. - **[Plugins](https://www.exponential.im/docs/reference/plugins)** — plugins are enabled per workspace, and their data (CRM contacts, OKRs) stays inside it. - **[Notifications](https://www.exponential.im/docs/collaborate/notifications)** — you can switch email off for one workspace without touching the others. ## FAQ **Can I move projects or contacts between workspaces?** Not yet. Create them in the workspace they belong to. **Which workspace opens when I follow a link that does not name one?** Your default workspace. Set it under **General** in the settings of the workspace you want. **What happens if I leave a workspace?** You lose access to it; nothing is deleted, and other members keep working as before. **Can I delete a workspace?** Owners can, from **Danger zone**. It removes everything in the workspace and cannot be undone. --- # Teams Section: Collaborate · URL: https://www.exponential.im/docs/collaborate/teams > Group the people you work with, share projects and integrations with them, and link the team to a workspace so everyone gets access at once A team is a group of people. Where a [workspace](https://www.exponential.im/docs/collaborate/workspaces) holds data, a team holds members: give it projects and integrations to share, and link it to a workspace so all of its members can use that workspace without individual invitations. An **organization team** can also receive its members' shared weekly plans. ![The Teams page with the Create Team button](https://www.exponential.im/doc-assets/teams.png) ## Where to find it Open [Teams](https://www.exponential.im/teams), or choose **Teams** from the user menu (your avatar, bottom-left). Workspace owners and admins also see the teams linked to a workspace under its settings → **Teams**. ## How to create a team 1. Click **Create Team**. 2. Enter a **Team Name**. The **Team Slug** fills in from the name and is used in URLs (lowercase letters, numbers and hyphens only). 3. Add a **Description** and click **Create Team**. You become the team's owner. ## How to add members 1. Open the team (or use **Add Member** from the **⋯** menu on its card). 2. Click **Add Member**, then either **Add Existing User** (search by name or email) or **Invite by Email**. 3. Pick a **Role** — **Member** or **Admin** — and add. Existing users join immediately. An emailed invitation is valid for 7 days; pending invitations are listed on the **Members** tab, where owners and admins can copy the link, resend it or cancel it. Owners and admins can **Remove Member** from a member's **⋯** menu. The owner cannot be removed. ## Roles | Role | What they can do | |------|------------------| | **Owner** | Everything: edit the team, mark it as an organization team, delete it | | **Admin** | Add and remove members, manage projects and integrations | | **Member** | Work in the team's projects and use its integrations | ## How to share projects and integrations On the team page: - **Projects** tab — **Assign Existing** adds projects you already have; **Create New** creates a project owned by the team (**Project Name**, **Description**, **Status**, **Priority**, **Link to Goals**). Every team member can then open and edit those projects. - **Integrations** tab — **Add Existing Integration** or **Add New Integration** shares a connection such as Slack with the team. A project belongs to at most one team. Team ownership does not restrict a project: an unrestricted project stays visible to the whole workspace, and a **Restricted project** is limited to its own members even inside the team. ## How to link a team to a workspace 1. Open the workspace's settings and go to **Teams**. 2. Under **Available to link**, click **Link** on your team. Only the team's owner can link or unlink it. 3. The team now appears under **Linked to this workspace**, and its members can use the workspace as members. **Unlink** removes that access again. Teams linked to your other workspaces show under **Linked to other workspaces**. ## How to receive shared weekly plans 1. As owner or admin, open the team's **Settings** tab and switch on **Organization Team**. 2. Members then share their check-in from the workspace's **Weekly Team Check-in** page under **Sharing Settings** (see [Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)). 3. Shared plans appear on the team's **Weekly Plans** tab, and each member row on the **Members** tab gets a **View Weekly Plan** button. ## How it connects - **Members, roles and access** — what each workspace role can do, and why team membership does not open restricted projects: [Members, roles & access](https://www.exponential.im/docs/collaborate/members-and-access). - **[Workspaces](https://www.exponential.im/docs/collaborate/workspaces)** — link a team to a workspace to grant access in bulk; roles inside the workspace still come from the workspace. - **[Projects](https://www.exponential.im/docs/do/projects)** — team projects are how the team actually shares work. - **[Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan)** — organization teams receive shared weekly check-ins. - **[Slack](https://www.exponential.im/docs/integrations/slack)** — a shared integration lets the whole team post to the same channels. ## FAQ **Can I be on several teams?** Yes, with a different role on each. **Can I change a member's role?** Not from the app yet. Remove the member and add them again with the other role. **Can a project belong to two teams?** No. Reassign it if it needs to move. **Does joining a team give me its restricted projects?** No. Restricted projects need explicit project membership; ask the project owner to add you. **Can I create a team without a workspace?** Yes. Teams exist on their own and can be linked to workspaces later. --- # Notifications Section: Collaborate · URL: https://www.exponential.im/docs/collaborate/notifications > Choose which notifications you get and where they go — push, email, Matrix, WhatsApp or Zulip Exponential can notify you by **push**, **email**, **Matrix**, **WhatsApp** and **Zulip**. Push and email work out of the box; the chat channels are opt-in — connect one, then tick which notifications it receives. Assignments, mentions, due-date reminders, meeting and agenda updates, and your daily and weekly summaries are all configured on one page. ![Settings → Notifications with push, delivery preferences and email](https://www.exponential.im/doc-assets/notifications.png) ## Where to find it Open [Settings → Notifications](https://www.exponential.im/settings/notifications), or choose **Settings** from the user menu and click **Notifications**. ## Notification types | Notification | What triggers it | Default channels | |-------------|-----------------|------------------| | **Assignments** | Someone assigns you an action | Push, Email | | **Mentions** | Someone @mentions you in a comment on a ticket, feature, action or insight | Push, Email | | **Due-date reminders** | 15 minutes, 1 hour and 1 day before an action you own is due | Push, Email | | **Summaries** | Your daily and weekly digests and the weekday Shutdown recap, at the times you choose | Email | | **Meeting-ready** | A meeting's notes and summary are ready | Push, Email | | **Added to a meeting** | Someone adds you as a meeting participant | Push, Email | | **Agenda ready** | A ceremony's agenda has been generated | Push, Email | | **Daily plan reminder** | Every morning, with your action count for the day | Push only | You are never notified about your own changes, and mentions only reach members of the workspace the comment is in. ## How to choose where each notification goes 1. Open [Settings → Notifications](https://www.exponential.im/settings/notifications) and find **Delivery preferences**. There is one card per channel. 2. In each card, tick the notification types you want on that channel. Changes save immediately. **Push** and **Email** cards are always shown. **Matrix**, **WhatsApp** and **Zulip** cards appear only after you connect that channel, and start with everything unticked, so connecting a chat channel never starts pinging you until you ask it to. ## How to enable push 1. Under **Push Notifications**, click **Enable Notifications**. 2. When your browser prompts, click **Allow**. 3. Click **Test** to send yourself a test notification. Push works on desktop Chrome, Firefox, Edge and Safari (macOS Ventura or later), on Android (Chrome or the installed PWA) and on iOS 16.4 or later as an installed PWA only. On a phone, install Exponential with your browser's **Add to Home Screen** option; a plain mobile browser tab may not receive push reliably. Click **Disable** next to your active subscription to stop push on the current device only; disable each device separately if you enabled several. ## How to turn email off for one workspace Email is on by default for every type except the daily plan reminder. Untick types under the **Email** card, or switch email off for a whole workspace without touching the rest: 1. Scroll to **Email Notifications** and find the workspace. 2. Choose **On**, **Off** or **Default**. **Default** follows what the workspace owner chose under the workspace's **Features** settings. A workspace set to **Off** here gets no email even if the Email card has the type ticked. ## How to get notifications in Matrix Notifications arrive as a direct message from the Zoe bot in any Matrix client (Element and others). Setup takes about a minute. 1. Open [Settings → AI assistant](https://www.exponential.im/settings/assistant). If you have not set up your assistant yet, give it a name and personality and click **Create Assistant** first; the Matrix card needs it. 2. In the **Matrix** card, enter **Your Matrix ID** (for example `@you:syntro.fi`) and click **Connect Matrix**. 3. The bot invites you to a chat. Accept the invite in your Matrix client and send the pairing code shown in the app into that chat. The code expires after 10 minutes. The card shows **Connected** once pairing succeeds. 4. Back on [Settings → Notifications](https://www.exponential.im/settings/notifications), a **Matrix (Zoe DM)** card now sits under **Delivery preferences**. Tick the types you want, such as **Mentions**, and click **Send test** to confirm a message arrives. You keep getting emails too unless you untick them under the Email card. ## Zulip and WhatsApp These work the same way as Matrix: once your account is linked, the channel's card appears under **Delivery preferences** with every type unticked. - **Zulip** — a workspace admin links your Exponential account to your Zulip user under the workspace's settings → **Integrations** → **Zulip**. - **WhatsApp** — not self-serve yet. The card appears only if your phone number has already been linked to a workspace's WhatsApp integration. ## Summaries The **Summary schedule** card controls when digests go out. Which channels receive them is the **Summaries** tick under Delivery preferences. - **Daily summary** — actions due today, what is completed and pending, overdue items and your top priorities, plus yesterday's [time](https://www.exponential.im/docs/do/time-tracking). Pick the **Send at** time. - **Weekly summary** — completion rate, active projects and week-over-week progress. Pick the weekday; it goes out at the same time as the daily summary. - **Shutdown recap** — closes each weekday (Monday to Friday): a short note on how the day went, what you got done, what moved, your time, what is left undone and what tomorrow holds. Pick its own **Send at** time (default `18:00`). It is off until you turn it on. If you have never saved a schedule, the summaries show as off. Turn one on, then click **Save schedule**. Times use the timezone on your [profile](https://www.exponential.im/settings/profile). If you have not set one, times are read as UTC and the card offers to use your browser's timezone. ## How to get your daily summary in Matrix A common setup is a Daily Summary arriving as a Matrix message from Zoe every morning. It takes three switches, all in Settings. 1. **Pair Matrix.** Follow [How to get notifications in Matrix](#how-to-get-notifications-in-matrix) until [Settings → AI assistant](https://www.exponential.im/settings/assistant) shows **Connected**. 2. **Send summaries to Matrix.** On [Settings → Notifications](https://www.exponential.im/settings/notifications), under **Delivery preferences**, tick **Summaries** in the **Matrix (Zoe DM)** card. Untick it in the **Email** card if you only want it in Matrix. 3. **Switch the daily summary on.** In the **Summary schedule** card, check **Daily summary** is on, set **Send at** (for example `08:00`), and click **Save schedule**. The first summary arrives at the next **Send at** time, in your profile's timezone. A summary can go out up to an hour after **Send at**, so if you save within that hour, today's may arrive straight away. Click **Send test** on the Matrix card if you want to check the chat works before then. Turn on **Weekly summary** in the same card to get the weekly digest in Matrix too. ## How to reply to your Shutdown recap in Matrix In Matrix, the actions under **Left undone** and **Tomorrow** are numbered. Reply in the same chat to deal with them without opening the app, for example: - `1, 3 tomorrow` — moves them to tomorrow - `drop 2` — cancels it - `4 done` — completes it - `5 to Monday` — moves it to a date - `6 back to backlog` — clears its dates Zoe replies with what it changed. If a reply is unclear, it asks rather than guessing. The numbers belong to that evening's recap, so they still work if you reply later that evening. Turn the recap on the same way as the [daily summary in Matrix](#how-to-get-your-daily-summary-in-matrix), using the **Shutdown recap** switch in step 3. ## Due-date reminders Reminders fire 15 minutes, 1 hour and 1 day before an action is due. They go to the action's owner: its assignees, or its creator if nobody is assigned. Completed or cancelled actions never trigger one. Choose the channels with the **Due-date reminders** tick under Delivery preferences. ## How it connects - **[Actions](https://www.exponential.im/docs/do/actions)** — assignments and due dates are what most notifications are about. - **[Zoe](https://www.exponential.im/docs/zoe/assistant)** — the Matrix DM that carries notifications is the same chat you talk to Zoe in. - **[Workspaces](https://www.exponential.im/docs/collaborate/workspaces)** — email can be switched off per workspace, and workspace owners set the default under **Features**. - **[Time tracking](https://www.exponential.im/docs/do/time-tracking)** — the daily summary includes yesterday's time and proposed entries. ## FAQ **Why is there no Matrix card in Delivery preferences?** You have not paired yet, or pairing did not finish. Check that [Settings → AI assistant](https://www.exponential.im/settings/assistant) shows **Connected**. **Send test fails with "no paired Matrix DM".** The bot lost your chat room, usually because you left it. Click **Disconnect Matrix** in Settings → AI assistant and pair again. **A mention did not arrive.** Only mentions made with the @ picker (or `--mention` in the CLI) notify anyone; a plain `@name` typed as text does nothing. You also need to be a member of the workspace the comment is in. Mentions in **page** comments are email and push only and do not reach Matrix yet. **The browser says "Notifications blocked".** Your browser denied permission. Re-allow it from the lock icon in the address bar (Chrome and Firefox) or Safari → Settings → Websites → Notifications, then click **Enable Notifications** again. "Notification setup unavailable" and "Subscription failed" usually clear after a refresh. --- # Members, roles & access Section: Collaborate · URL: https://www.exponential.im/docs/collaborate/members-and-access > Who can see and do what in a workspace: roles, invitations, guests, and public or restricted projects Access in Exponential has two layers. A **workspace role** says what someone can do across the whole workspace: owner, admin, member or viewer. On top of that, a **project** can be opened up (public, viewable by anyone with the link) or closed down (restricted, visible only to the people named on it), and people can be given access to one project without any workspace role at all; those are **guests**. External agents follow the same rules as the person who owns them. ![Workspace settings → Members](https://www.exponential.im/doc-assets/ws-members.png) ## Where to find it - Roles and invitations: [workspace settings → **Members**](https://www.exponential.im/go/settings) (owners and admins). See [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings). - A project's visibility and its guests: the project's **Access** tab. - Teams, for sharing projects with a group at once: [Teams](https://www.exponential.im/docs/collaborate/teams). ## Roles | Role | Can | |---|---| | **Owner** | Everything: settings, members and their roles, plugins, integrations, the Danger zone. Only owners change roles or delete the workspace, and the owner cannot be removed. | | **Admin** | Manage members and settings, features, plugins and integrations. | | **Member** | View and edit content: projects, actions, goals, meetings. | | **Viewer** | Read-only access. | Everyone with a role sees every unrestricted project in the workspace. ## How to invite someone 1. In [workspace settings → **Members**](https://www.exponential.im/go/settings), click **Invite member**. 2. Enter their email and pick a role (**Admin**, **Member** or **Viewer**; the picker explains each). 3. They get an email with a link that is valid for seven days. Pending invitations are listed with who invited them and when they expire; **Resend (generate new link)** issues a fresh link and **Cancel invitation** withdraws it. Change a role or remove a member from the same table (**Edit role**, **Remove member**). Removing a person also removes the external agents they own from the workspace. ## How to open or close a project On the project's **Access** tab: - **Public project** — anyone with the link can view the project and create actions in it, signed in or not. Use it for community projects and bounties. - **Restricted project** — only the project's creator, the people added as project members (with a project role of admin, editor or viewer), and workspace owners and admins can see it, including its meetings. Members of a team the project is shared with do **not** get in; add them as project members instead. Turning restriction on takes access away from ordinary workspace and team members immediately. Both switches can be on: the project is publicly viewable, and within the workspace only its members work on it. Meetings keep one exception: a meeting assigned to a restricted project is visible only to that project's members and admins, whatever its own setting. ## Guests A guest is someone with access to specific projects but no workspace role. Add them as members on a project's **Access** tab; they are listed under **Project guests** in [workspace settings → **Members**](https://www.exponential.im/go/settings), and their access is managed per project. A guest sees the projects they were added to and nothing else in the workspace. ## External agents An [external agent](https://www.exponential.im/docs/developers/external-agents) joins a workspace as a member, added by its owner. Its access never exceeds its owner's: demote or remove the owner and the agent follows. Everything it does is attributed to the agent, and it shows an **agent** badge in the members list. ## How it connects - **Workspaces** — creating workspaces and switching between them: [Workspaces](https://www.exponential.im/docs/collaborate/workspaces). - **Teams** — share several projects with a group and manage its own members: [Teams](https://www.exponential.im/docs/collaborate/teams). - **Projects** — the Access tab lives on each project: [Projects](https://www.exponential.im/docs/do/projects). - **Meetings** — meeting visibility follows the project: [Meetings](https://www.exponential.im/docs/meet/meetings). - **External agents** — agent-owned keys and the delegation rule: [External agents](https://www.exponential.im/docs/developers/external-agents). ## FAQ **Someone accepted an invite but cannot see a project.** The project is restricted. Add them as a project member on its Access tab; a workspace role or team membership is not enough. **Can a viewer comment?** No. Viewers read; members edit. **Can I make one project public without exposing the workspace?** Yes. Public applies to that project only. Everything else stays members-only. --- # Zoe, your assistant Section: Zoe & AI · URL: https://www.exponential.im/docs/zoe/assistant > Chat with Zoe to plan your day, find things and get work done — from the Agents page, the Ask Zoe drawer or the command palette Zoe is the assistant built into Exponential. Ask her what to focus on today, get a project broken down into actions, or think something through — and tag a specialist agent with @ when you need one. Zoe works with you in a conversation and acts as you, with your confirmation. ![The Agents page with a new Zoe chat](https://www.exponential.im/doc-assets/agent.png) ## Where to find it Zoe is available three ways: - [**Tools → Agents**](https://www.exponential.im/go/agent) in the sidebar ([/agent](https://www.exponential.im/agent)) — the full chat page, with your chat history and the specialist agents. - The **Ask Zoe · ⌘J** button in the bottom-right corner of every page, which opens the Zoe drawer beside whatever you are working on. Press **⌘J** to toggle it and **Esc** to close it. - The command palette (**⌘K**) — pick the **Ask Zoe** mode and the drawer opens. You can also message Zoe from your phone — see [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways). ## How to start a chat 1. Open [**Tools → Agents**](https://www.exponential.im/go/agent) in the sidebar. 2. Click **New chat**. Zoe greets you and asks what's up. 3. Type in the **Ask anything** box and press Enter, or click the microphone to speak instead of typing. 4. Earlier conversations are listed under **Your Chats**. Use **Search chats...** to find one and click it to pick up where you left off. ## How to use a specialist agent Specialist agents handle narrower jobs than Zoe. They are listed under **Specialist Agents** in the left column of the Agents page. 1. Start your message with `@` and the agent's name — a list appears as you type. 2. Write the rest of the message and send it. That message goes to the specialist instead of Zoe. 3. Messages without an @mention go to Zoe. You can also switch with the **Active agent** menu at the top of the chat. ## How to use the Zoe drawer The drawer keeps Zoe alongside the page you are on, so you can ask about what is in front of you. 1. Click **Ask Zoe · ⌘J** (bottom right) or press **⌘J**. 2. Type in the box at the bottom. The header says whether you are in a **New thread** or a **Resumed thread**. 3. Click **History** to reopen one of your **Recent Conversations**, or **New thread** to start fresh. 4. Use the width toggle to make the drawer wider or narrower, or **Maximise** to open it as a full modal. Click the agent name in the header to switch between your assistant and a specialist. ## How to give Zoe a name and personality 1. Open [Settings → AI assistant](https://www.exponential.im/settings/assistant). 2. Enter a **Name** and pick an **Emoji** — this is how your assistant introduces itself everywhere, including the drawer and WhatsApp. 3. Describe the personality you want in the text box and save. ## How it connects - **Keyboard shortcuts** — ⌘J for the drawer and the palette's Ask Zoe mode: [Keyboard shortcuts](https://www.exponential.im/docs/reference/keyboard-shortcuts). - [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base) — pin a resource there and it is included in every chat, so Zoe answers from your own documents and meetings. - [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways) — message Zoe from your phone; the **Connect WhatsApp** button on the Agents page starts the setup. - [External agents](https://www.exponential.im/docs/developers/external-agents) — for software that should act under its own name rather than yours. - [Settings → AI history](https://www.exponential.im/settings/ai-history) — every message you have exchanged with Zoe, searchable and filterable by platform. ## Tips - Rate a reply with the stars under it. A short note on what would have made it better improves future answers. - Ask for the outcome, not the mechanics: "plan my afternoon around the launch" gets a better answer than "list my actions". ## FAQ **Is Zoe the same as Paddy?** Paddy no longer exists. There is one assistant, Zoe, plus specialist agents you can @mention and [external agents](https://www.exponential.im/docs/developers/external-agents) you connect yourself. **Does Zoe do things without asking?** No. Zoe acts as you, inside the conversation, and confirms before creating or changing things. Software that should work on its own, under its own name, is an external agent. **Where do my chats live?** Under **Your Chats** on the Agents page and under **History** in the drawer. The full log is in [Settings → AI history](https://www.exponential.im/settings/ai-history). **Can Zoe read my meetings and documents?** What is in your [knowledge base](https://www.exponential.im/docs/zoe/knowledge-base). Pin a resource there to have it in every chat. --- # Hand work to your assistant Section: Zoe & AI · URL: https://www.exponential.im/docs/zoe/assistant-runs > Assign an action to your assistant and let it research, delegate or do the work inside Exponential while you watch the result come in Your assistant is more than a chat partner: it can be **assigned an action** like any teammate. When you do, it goes to work on its own — reading what it needs, commenting, creating sub-actions or handing the action to the right person — and reports back with a summary for you to confirm. Everything it does is recorded under its own name, never yours. ## Where to find it Open any action and click the **Assignees** row, or use the assign option on an action in a list. Your assistant is pinned first under **Your assistant**; teammates' assistants are listed under **Assistants**, labelled with their owner's name, and people come after. You need an assistant first — set one up in [Settings → AI assistant](https://www.exponential.im/settings/assistant). ## How to hand an action to your assistant 1. Open the action and click the **Assignees** row. 2. Tick your assistant under **Your assistant** and click **Save Changes**. 3. The action's status dot becomes a spinning ring, and a pill appears above **Activity**: **Aria · Working 1m · called 3 tools**. The pill updates every couple of seconds while the run is live; click **Cancel** on it to stop the run. 4. When it finishes the pill reads **Worked for 2m · called 12 tools**, you get a notification, and the summary is on the pill (hover it) and in the action's comments. You, as the owner, can expand the **transcript** under the pill to see each step; teammates see the pill and the summary only. ## What your assistant will and will not do - It reads anything you can read: your projects, actions, goals, meetings, calendar, email, CRM and Notion. - It writes **only inside Exponential**: comments on the action, action fields, sub-actions, and reassigning to a person or another assistant. - It **never sends email, books calendar events, or writes to Notion or your CRM** on its own. If the work needs one of those, it does everything up to that step and asks you. - It **never marks the action done**. It tells you when the work is ready and you confirm. ## When it needs you If it gets stuck on something only you can decide, it posts a comment on the action mentioning you and the pill reads **Waiting on owner**. Reply in the action's comments — your reply resumes the run with the thread so far. ## How it connects - **Notifications** — a finished or stopped run sends you one notification; tune the channels under **Assistant runs** in [Settings → Notifications](https://www.exponential.im/settings/notifications). See [Notifications](https://www.exponential.im/docs/collaborate/notifications). - **Time** — a finished run logs a proposed time entry on the action for the time it worked, marked as your assistant's work on your behalf. - **Teammates' assistants** — you can assign a colleague's assistant too; it works as their assistant, with their permissions, and reports to them and to you. - [Zoe, your assistant](https://www.exponential.im/docs/zoe/assistant) — chatting with Zoe is different: in chat she acts as you and confirms before changing anything. - [External agents](https://www.exponential.im/docs/developers/external-agents) — software you run yourself under its own identity; assigning it an action does not start a run here, it picks the work up on its own. ## Tips - Write the action's description the way you would brief a new colleague: the goal, what good looks like, and where to look. The assistant works from that brief. - Give your assistant instructions once in [Settings → AI assistant](https://www.exponential.im/settings/assistant) ("always propose two options", "never contact clients") and every run follows them. ## FAQ **Can I assign the same action to my assistant twice?** While a run is live, re-assigning does nothing. Once it has finished, assign again to start a new run. **What happens if it takes too long?** A run that stops reporting for five minutes is marked **Stopped**; you are notified and can assign again. **Where do I see everything my assistant is working on?** Open [Inbox → Delegated](https://www.exponential.im/inbox?tab=delegated). It lists what your assistant is working on, what it is waiting on you for, and what it has finished — with **Mark done** and **Dismiss** on each finished row. Questions it asked you also appear under **Waiting on me**. The Inbox badge counts waiting and unreviewed results, never runs that are still working. **Does the assistant see my private things?** It sees what you see and acts within your permissions. Its transcript is visible only to you. --- # Knowledge base Section: Zoe & AI · URL: https://www.exponential.im/docs/zoe/knowledge-base > Save documents, web pages and notes alongside your meetings, search all of it by meaning, and pin the pieces Zoe should always know The knowledge base is where your workspace's meetings and saved resources become searchable by meaning, not just keyword. Add a web page, a document or a note, search across everything from one box, and pin the resources Zoe should have in front of her in every chat. ![The Knowledge Base page](https://www.exponential.im/doc-assets/knowledge-base.png) ## Where to find it [**Tools → Knowledge**](https://www.exponential.im/go/knowledge-base) in the sidebar ([/knowledge-base](https://www.exponential.im/knowledge-base)). Inside a workspace you see that workspace's content; open it outside a workspace and results span every workspace you belong to. Either way you only see content you added yourself — other members' resources are not visible to you. ## How to add a resource 1. Click **Add Resource** (top right). 2. Give it a **Title** and pick a **Type**: **Web Page**, **Document**, **Note** or **Bookmark**. 3. For a web page or bookmark, paste the **URL**. For a document or note, paste the text into **Content**. 4. Add a **Description** if you like, then click **Add Resource**. The resource appears in the **Resources** tab with its type, word count and when it was added. ## How to make meetings searchable Each meeting is indexed for search once. If some are still waiting, a **Transcriptions need indexing** notice shows how many. 1. Click **Index All**. The notice changes to **Indexing in progress...** and works through the backlog. 2. When it reads **Indexing Complete**, the **Transcriptions** count at the top shows nothing pending and those meetings are searchable. Resources are indexed as you add them. If one's results look wrong, open its row menu and choose **Regenerate embeddings**. ## How to search 1. Open the **Search** tab and type at least three characters. You need to be inside a workspace to search. 2. Results list meetings, pages and resources together, each with a **match** percentage. 3. Click a meeting to open its recording, or a page to open it in the workspace. A web page or bookmark opens its source URL in a new tab; notes and documents without a URL appear in the results but do not open anywhere. Search matches on meaning first and falls back to plain keyword matching on meetings if nothing else comes back. ## How to pin a resource for Zoe Pinned resources are included in every agent chat, so Zoe answers with them in context. 1. In the **Resources** tab, click the pin icon on the resource's row (**Pin to inject into every agent chat**). 2. The **Context** column shows it as pinned. Click the pin again to unpin. ## How it connects - **Local wiki** — the desktop-only, on-disk counterpart that never syncs here: [Desktop app & Local wiki](https://www.exponential.im/docs/capture/desktop-app). - **Pages** — documents you or Zoe write are indexed here too: [Pages](https://www.exponential.im/docs/do/pages). - [Zoe, your assistant](https://www.exponential.im/docs/zoe/assistant) — pinned resources are what Zoe reads before answering. - [Fireflies](https://www.exponential.im/docs/meet/fireflies) — meetings recorded through Fireflies are searchable here once indexed. - [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension) — recordings made in the browser are meetings too, so they show up in search. ## Tips - Pin sparingly. A handful of reference documents gives Zoe better context than everything you own. - Use a **Note** for the things you keep re-explaining to Zoe — your team's naming conventions, the current quarter's priorities. ## FAQ **Can I upload a PDF?** Not from this page. Paste the text in as a **Document** instead. **Can I edit a meeting transcript here?** No. The knowledge base only indexes meetings; edit the transcript from the meeting itself. **Can teammates see my resources?** No. Each person sees only what they added, even inside a shared workspace. **What do the three numbers at the top mean?** **Transcriptions** and **Resources** count what is indexed, with anything still pending shown underneath. **Total Chunks** is how many searchable segments they were split into. --- # Chat gateways Section: Zoe & AI · URL: https://www.exponential.im/docs/zoe/chat-gateways > Talk to Zoe from WhatsApp, Telegram or Matrix, with the same memory and tools she has in the app A chat gateway puts Zoe in a messaging app you already have open: WhatsApp, Telegram or Matrix. Whichever you use, it is the same assistant with the same workspace access, so "add an action: call the landlord tomorrow" or "what is on my plate?" works the same way from your phone as from the Zoe drawer. Each gateway also doubles as a delivery channel for reminders and summaries. ## Where to find it - WhatsApp and Telegram: [Settings → Integrations](https://www.exponential.im/settings/integrations) (**Connect WhatsApp**, **Connect Telegram**). **Connect WhatsApp** is also on the Agents page ([**Tools → Agents**](https://www.exponential.im/go/agent)). - Telegram and Matrix: [Settings → AI assistant](https://www.exponential.im/settings/assistant), where each has a card with its **Default agent**. - Where notifications go: [Settings → Notifications](https://www.exponential.im/settings/notifications). ## WhatsApp WhatsApp works like WhatsApp Web: you scan a QR code and your phone stays the source of the session. > **⚠️ Read before linking a personal account** > > - **Your messages pass through a gateway.** Conversation data for the linked account is processed by, and may be stored on, the gateway that runs the connection. Only link an account if you trust the operator of the installation you are using. > - **WhatsApp's terms.** Automation on personal WhatsApp accounts may breach [WhatsApp's Terms of Service](https://www.whatsapp.com/legal/terms-of-service), and WhatsApp can suspend or ban accounts it detects doing it. This uses the WhatsApp Web protocol for a legitimate assistant, but the risk is yours. > - **If the gateway were compromised**, an attacker could read synced conversations, send messages as you, and see your contacts and linked devices. > > Prefer a separate WhatsApp account rather than your primary one. ### How to connect WhatsApp 1. Click **Connect WhatsApp**. A dialog opens with a QR code that refreshes every 15 seconds. 2. On your phone, open WhatsApp → **Settings** → **Linked Devices** → **Link a Device**, and scan the code. 3. The dialog shows your number with a green **Connected** badge. You can link more than one account with **Connect Another Account**; each shows as its own session with **Disconnect** and **Delete** controls. Then message the linked number as you would message a person; Zoe keeps the thread's context between messages. ## Telegram 1. Click **Connect Telegram** on [Settings → Integrations](https://www.exponential.im/settings/integrations) or open the **Telegram** card on [Settings → AI assistant](https://www.exponential.im/settings/assistant). 2. Choose the **Default agent** that answers there (Zoe or a specialist) and click **Update Assistant** if the card asks for it. 3. Follow the link to open the bot in Telegram and start the chat. ## Matrix Matrix pairing is started from your side and completed in your Matrix client, so nobody can pair your account for you. 1. On [Settings → AI assistant](https://www.exponential.im/settings/assistant), open the **Matrix** card and enter **Your Matrix ID** (for example `@you:example.org`). 2. The bot invites you to a direct chat. Accept the invite in your Matrix client (Element or any other). 3. Send the pairing code the card shows you into that chat; the code expires after a few minutes. The card polls and switches to **Connected**. 4. Chat with Zoe in that direct message. `!agent NAME` switches to a specialist agent; the **Default agent** on the card sets who answers first. Matrix is also a notification channel: a **Matrix (Zoe DM)** column appears on [Settings → Notifications](https://www.exponential.im/settings/notifications) once you are paired, and workspaces can circulate ceremony agendas to a Matrix room. To get your daily summary there, see [How to get your daily summary in Matrix](https://www.exponential.im/docs/collaborate/notifications#how-to-get-your-daily-summary-in-matrix). ## How it connects - **Zoe** — the assistant on the other end, with the same memory and tools: [Zoe](https://www.exponential.im/docs/zoe/assistant). - **Actions** — anything you ask her to create lands in [Inbox](https://www.exponential.im/inbox) or the project you name: [Actions](https://www.exponential.im/docs/do/actions). - **Notifications** — reminders, the daily summary and agenda-ready notices can be delivered to these channels: [Notifications](https://www.exponential.im/docs/collaborate/notifications). - **Ceremonies** — agendas can be sent to a Matrix room: [Ceremonies & occurrences](https://www.exponential.im/docs/meet/ceremonies). - **Slack** — a different kind of connection: Zoe reads and posts in your Slack rather than chatting with you there: [Slack](https://www.exponential.im/docs/integrations/slack). ## FAQ **No QR code appears for WhatsApp.** The gateway for this installation is not reachable. Refresh once; if it persists, contact the administrator of your installation (or see [Self-hosting](https://www.exponential.im/docs/self-hosting) if that is you). **The WhatsApp connection keeps dropping.** WhatsApp Web needs your phone online. Check the phone's connection and that WhatsApp is not being killed in the background. **"Maximum sessions reached".** Disconnect a session you no longer use, then connect again. **The Matrix pairing code expired.** Start again from the card; a new invite and code are issued. **What can WhatsApp not do?** Business API features (templates, catalogues) are not available; this is the linked-device protocol, subject to WhatsApp's rules for linked devices. --- # iOS Shortcut Section: Capture anywhere · URL: https://www.exponential.im/docs/capture/ios-shortcut > Add actions to Exponential by voice or text from your iPhone, iPad or Mac using Apple Shortcuts Capture actions by voice or keyboard from your iPhone, iPad or Mac without opening the app. Once set up, say **"Hey Siri, Save Action"**, dictate the action, and it lands in your [Inbox](https://www.exponential.im/docs/do/inbox-and-today). Dates ("call John tomorrow") and project names ("send invoice for Sales project") are picked up from what you say. ## Where to find it Nothing to switch on inside Exponential — the shortcut runs in Apple's built-in **Shortcuts** app and talks to your account with an API key from [Settings → API keys](https://www.exponential.im/settings/api-keys). Install it from the [Exponential shortcut](https://www.icloud.com/shortcuts/89def083f3b14f0083bc176a8b96fcd1) link. ## How to set it up ### 1. Create an API key 1. Open [Settings → API keys](https://www.exponential.im/settings/api-keys) and click **Create API Key**. 2. Fill in the form: **API Key Name** (for example `iOS Shortcut`), **Token Type** = **Hex Key (32 chars)**, **Expires In** = **90 days**. 3. Click **Generate API Key** and copy the key straight away — it is shown once. Paste it somewhere safe (Notes is fine) for step 3. ### 2. Install the shortcut 1. On your iPhone, iPad or Mac, open the [Exponential shortcut](https://www.icloud.com/shortcuts/89def083f3b14f0083bc176a8b96fcd1) link. 2. Tap **Add Shortcut**. ### 3. Add your API key 1. Open the **Shortcuts** app and find the **Exponential** shortcut. 2. Tap the **three dots** (`...`) to edit it. 3. Scroll to the **Get contents of URL** block and expand **Headers**. 4. Replace the `YOUR_API_KEY_HERE` value next to **x-api-key** with your key. 5. Tap **Done**. ![Where to find the x-api-key header in the shortcut](https://www.exponential.im/doc-assets/ios-shortcut-config.png) ### 4. Rename it for Siri The shortcut's name is the phrase Siri listens for. 1. Long-press the shortcut in the **Shortcuts** app and tap **Rename**. 2. Type **Save Action** (or any phrase you would rather say) and tap **Done**. ![The Save Action shortcut on your home screen](https://www.exponential.im/doc-assets/save-action.jpg) ## How to use it - **Siri:** say **"Hey Siri, Save Action"**, then speak the action when Siri asks. - **Shortcuts app:** tap **Save Action** and type or dictate. - **Home Screen:** long-press the shortcut and tap **Add to Home Screen** for one-tap capture. | What you say | What gets created | |---|---| | "Buy groceries" | **Buy groceries** in your Inbox | | "Call John tomorrow" | **Call John**, due tomorrow | | "Review proposal next Friday" | **Review proposal**, due next Friday | | "Send invoice for Sales project" | **Send invoice**, filed in the **Sales** project | ## How it connects - [Inbox and Today](https://www.exponential.im/docs/do/inbox-and-today) — captured actions arrive in the Inbox unless you named a project. - [API tokens](https://www.exponential.im/docs/developers/api-tokens) — the key the shortcut uses; revoke it there if you lose your phone. - [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension) — the same quick capture from your desktop browser. ## FAQ **"Invalid or expired API key"** The key has expired or was revoked. Create a new one under [Settings → API keys](https://www.exponential.im/settings/api-keys) and paste it into the shortcut again (step 3). **Nothing happens when I run it.** Check the key was pasted without spaces, that it has not expired, and that you are online. **The date wasn't picked up.** Be specific: "tomorrow", "next Monday" and "Friday" work; "soon" or "later" are not dates. **Can I change the default priority?** Yes. Edit the shortcut's **Request Body** and change the `priority` value to one of the app's priorities: **Quick** (the default), **Scheduled**, **1st Priority** through **5th Priority**, **Errand**, **Remember**, **Watch** or **Someday Maybe**. --- # Chrome extension Section: Capture anywhere · URL: https://www.exponential.im/docs/capture/chrome-extension > Dictate recordings, save pages, create actions, add contacts and track time from a side panel in any browser tab The Exponential Whisper extension adds a side panel to Chrome so you can capture without leaving the tab you are in: dictate a recording with on-device speech recognition, save the page you are reading, create an action, add a CRM contact or start the timer. Recordings are saved as meetings in Exponential, screenshots included. ## Where to find it The extension is loaded from a folder rather than the Chrome Web Store. Once installed, click the **Exponential Whisper** icon in the toolbar to open the side panel. Inside Exponential, the extension appears as **Browser Extension Capture** on the [Workflows page](https://www.exponential.im/workflows) (user menu → **Workflows**). ## How to install it 1. Get the extension folder (called **exponential**) and keep it somewhere permanent — Chrome loads it from that location. 2. Open `chrome://extensions` and turn on **Developer mode** (top right). 3. Click **Load unpacked** and choose the **exponential** folder. 4. **Exponential Whisper** appears in your extension list. If its icon is not in the toolbar, open the puzzle-piece menu and pin it. Chromium browsers such as Edge and Brave work the same way. ## How to connect your account Open the side panel. If you are already signed in to Exponential in this browser, the extension signs in from that session and you are done. Otherwise it shows **API Key Required**: 1. Click **Get your API key**, which opens [Settings → API keys](https://www.exponential.im/settings/api-keys). Click **Create API Key**, choose **Hex Key (32 chars)**, click **Generate API Key** and copy the key. 2. Paste it into the field and click **Save API Key**. 3. Under **Select project**, pick the project new recordings and actions should go to. You can change it later, or **Disconnect**, from the panel's **Settings**. ## How to record 1. Open the **Recording** tab and click **Start Recording**. Chrome asks for microphone access the first time — click **Allow**. The first recording also downloads the Whisper speech model once (**Downloading...** then **Loading model...**); it is cached after that. 2. Speak. Your words appear in the panel as they are recognised. 3. Click **Screenshot** to capture the tab, or say "take a screenshot" while recording — a `[SCREENSHOT]` marker is placed in the text where you said it. 4. Click **Stop Recording**. The **View recording** link opens the meeting in Exponential; screenshots are on its **Screenshots** tab. 5. Click **Generate Actions** to turn the recording into draft actions, tick the ones you want in **Review Actions**, and click **Create Actions**. ### Annotate before a screenshot 1. Click **Draw** (or press **Ctrl+Shift+D**; **Cmd+Shift+D** on Mac). 2. Choose **Arrow** or **Freehand** and mark up the page. 3. Take the screenshot — the marks are included and cleared afterwards. **Clear** removes them without capturing. ## How to capture without recording - **Save Page** — creates an action holding the page's title and link, plus any context you add. - **Create Action** — type the action name, pick a project and priority if you like, and click **Create Action**. - **Add Contact** — first name, last name, email, phone and LinkedIn URL go straight into the [CRM](https://www.exponential.im/docs/crm/contacts). - **Track Time** — type what you are working on and start the timer; **Time Entries** lists what you have logged. The running timer also shows in Exponential's sidebar. See [Time tracking](https://www.exponential.im/docs/do/time-tracking). Each tab lists your recent items underneath its form. ## How it connects - [API tokens](https://www.exponential.im/docs/developers/api-tokens) — the key the extension uses; revoke it there to disconnect a browser you no longer use. - [Time tracking](https://www.exponential.im/docs/do/time-tracking) — timers started in the extension appear on the Time page. - [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base) — recordings are searchable there once indexed. - [iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut) — the same quick capture from your phone. ## FAQ **Is my audio sent anywhere?** No. Speech recognition runs on your computer with Whisper. Only the text, screenshots and things you save reach Exponential. **Is it in the Chrome Web Store?** Not yet — install it with **Load unpacked** as above. **Where do recordings go?** Each recording is a meeting in the project you selected. Open it from the **View recording** link or from [**Tools → Meetings**](https://www.exponential.im/go/meetings) in the sidebar. **The key was rejected.** Keys expire. Create a new one under [Settings → API keys](https://www.exponential.im/settings/api-keys) and save it again. --- # Mobile app Section: Capture anywhere · URL: https://www.exponential.im/docs/capture/mobile-app > Install Exponential on your phone's home screen and turn on push notifications Exponential runs as a web app you can install on iPhone or Android. Installed, it opens full-screen from your home screen with a bottom bar for **Inbox**, **Today**, **Calendar** and **Plan**, and it can send you push notifications. ## Where to find it There is no App Store or Play Store listing. Open Exponential in your phone's browser and install it from the browser menu, as below. ## How to install on iPhone 1. Open Exponential in **Safari** (other iOS browsers cannot install web apps). 2. Tap the **Share** button. 3. Tap **Add to Home Screen**, then **Add**. ## How to install on Android 1. Open Exponential in **Chrome**. 2. Tap the **⋮** menu. 3. Tap **Install app** (or **Add to Home screen**) and confirm. ## How to turn on push notifications 1. In the installed app, go to [Settings → Notifications](https://www.exponential.im/settings/notifications). 2. Under **Push Notifications**, tap **Enable Notifications** and accept the permission prompt. 3. To stop them, come back and tap **Disable**. On iPhone, push only works from the installed home-screen app, not from a Safari tab. Which notifications reach you is set on the same page — see [Notifications](https://www.exponential.im/docs/collaborate/notifications#how-to-enable-push). ## How it connects - **Desktop app** — the same app in a native window, with the Local wiki: [Desktop app & Local wiki](https://www.exponential.im/docs/capture/desktop-app). - [Inbox and Today](https://www.exponential.im/docs/do/inbox-and-today) — the two bottom-bar views you will use most on the phone. - [Notifications](https://www.exponential.im/docs/collaborate/notifications) — choose which events arrive as push. - [iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut) — capture by voice with Siri without opening the app at all. - [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways) — talk to Zoe from your messaging app instead. ## FAQ **Does it work offline?** No. The installed app needs a connection; nothing is cached for offline reading. **Is it different from the website?** Same app, same account. Installing gives you a home-screen icon, a full-screen window and push notifications. **I see "Push notifications are not supported on this device".** Your browser cannot receive web push. On iPhone, install the app to your home screen first and open it from there. **Notifications are blocked.** Allow notifications for Exponential in your phone's settings, then tap **Enable Notifications** again. --- # Desktop app & Local wiki Section: Capture anywhere · URL: https://www.exponential.im/docs/capture/desktop-app > Exponential in a window of its own, and the desktop-only Local wiki, a git-backed folder of Markdown on your machine Exponential runs in the browser, and it also runs as a desktop app that wraps the same web app in a native window: its own dock icon, sign-in that hands off to your system browser and comes back, and, in the newer shell, a **Local wiki** that lives on your disk rather than in the cloud. The desktop app changes where Exponential runs, not what it does; every guide on this site applies unchanged. ## Where to find it There are two shells, both in the open-source repository ([github.com/positonic/exponential](https://github.com/positonic/exponential)): - **Exponential** (Electron) for macOS, Windows and Linux: the established desktop app, with an overlay title bar on macOS. - **Exponential Beta** (Tauri, macOS only): a newer, lighter shell that adds the Local wiki and native macOS window tabs. It installs beside the first, with its own icon and bundle. Neither is offered as a download inside the app yet; they are built from the repository (`npm run electron:build` and `npm run tauri:build`). If you are not building software, use the web app or install it as a [mobile app](https://www.exponential.im/docs/capture/mobile-app). ## How sign-in works on the desktop Click **Sign in**; the app opens your default browser, you sign in there as usual, and the browser asks whether to **Open Exponential** to hand the session back. Allow it once and the window is signed in. Nothing about your password passes through the shell. ## How to use the Local wiki The Local wiki appears as **Local wiki** at the top of the sidebar only inside the Beta shell; a browser never shows it. It is a folder of Markdown files on your machine, `~/Documents/exponential-wiki` by default, kept under git so every change has a history, and maintained by Zoe's librarian agent as well as by you. 1. Open **Local wiki** in the sidebar. The list shows every page; **Search the wiki…** filters it. 2. Open a page to read it, or edit it in place. Write Markdown; `[[wikilinks]]` point at other pages and become links. 3. **Page actions** lets you **Rename** a page (give it a **New path**); **History** shows the commits that touched it. 4. Ask Zoe to add to the wiki ("write up what we know about the onboarding funnel"); she writes files into the same folder and commits them. The wiki belongs to the device, not to a workspace: it is the same whichever workspace you are in, and it never syncs to the server. Point a build at a different folder with `EXPONENTIAL_WIKI_ROOT` when you start it. ## How it connects - **Mobile app** — the phone equivalent, installed from the browser: [Mobile app](https://www.exponential.im/docs/capture/mobile-app). - **Knowledge base** — the cloud-side store Zoe searches; the Local wiki is deliberately separate: [Knowledge base](https://www.exponential.im/docs/zoe/knowledge-base). - **Pages** — workspace documents that live on the server and can be published: [Pages](https://www.exponential.im/docs/do/pages). - **Self-hosting** — building either shell against your own installation: [Self-hosting](https://www.exponential.im/docs/self-hosting). ## FAQ **Is there a download?** Not yet. Both shells are built from the repository; release builds point at exponential.im. **Will the wiki sync between my laptop and desktop?** No. It is a local folder under git; sync it yourself (push the repository somewhere) if you want it on two machines. **Can the web app read my Local wiki?** No. The wiki is only reachable through the desktop shell's own bridge, and nothing on a remote page can read files outside the wiki folder. --- # Integrations Section: Integrations · URL: https://www.exponential.im/docs/integrations > Where every connection lives, what each one does, and which page to set it up on Exponential connects to the tools your work already flows through: meeting recorders send transcripts in, chat apps let you talk to Zoe, and task tools stay in sync. Connections are personal (they live under your account, not the workspace) unless a page says otherwise. ![Settings → Integrations](https://www.exponential.im/doc-assets/integrations.png) ## Where to find it - [Settings → Integrations](https://www.exponential.im/settings/integrations) — connect accounts and services. This is the main page. - [Workflows](https://www.exponential.im/workflows), from your user menu — a status board for the data-capture and task-sync integrations, plus two guided processes. - [Workspace settings → **Integrations**](https://www.exponential.im/go/settings) — connections that belong to the workspace rather than to you: the agents' email account, Postmark, Slack and Zulip notification routing, a Matrix homeserver, Sentry, the default Notion account and Fireflies. See [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings). ## What you can connect | Service | What it does | Set up on | |---|---|---| | [Fireflies](https://www.exponential.im/docs/meet/fireflies) | Sends every recorded meeting in, with actions and a summary extracted | Settings → Integrations → **Add Fireflies** | | [Slack](https://www.exponential.im/docs/integrations/slack) | Lets Zoe read, search and post in your Slack; routes meeting summaries to channels | Settings → Integrations → **Add Integration** → Slack | | [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways) | Chat with Zoe from WhatsApp | Settings → Integrations → **Connect WhatsApp** | | [Telegram](https://www.exponential.im/docs/zoe/chat-gateways) | Chat with Zoe from Telegram, with a default agent per connection | Settings → Integrations → **Connect Telegram** | | [Notion](https://www.exponential.im/docs/integrations/notion) | Two-way sync between a Notion database and your actions, with status mapping | Workflows → **Notion Tasks Database** → Configure | | [Monday.com](https://www.exponential.im/docs/integrations/github-google-monday) | Sync actions with a Monday.com board (push, pull or both) | Workflows → **Monday.com Boards** → Configure | | Calendar feeds | Subscribe to a published calendar by its ICS address (works with Outlook); events refresh every 15 minutes and appear on Today | Settings → Integrations → **Add calendar feed** | | [Google Calendar](https://www.exponential.im/docs/integrations/github-google-monday) | Two-way calendar access; in early access while Google verification completes | Settings → Integrations → **Request Access** | | [GitHub](https://www.exponential.im/docs/integrations/github-google-monday) | Track repositories so pull requests and commits show in activity and metrics; needs the GitHub App installed by an administrator | Settings → Integrations → **GitHub Repositories** | | Email (IMAP) | Read a mailbox for the CRM | Settings → Integrations → **Add Integration** → Email (IMAP) | | [iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut), [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension) | Capture actions from your phone or browser using an API key | [Settings → API keys](https://www.exponential.im/settings/api-keys) | Notion and Monday.com sync are exclusive: pick one task system to sync with, to avoid duplicate actions. ## How to add a service 1. Open [Settings → Integrations](https://www.exponential.im/settings/integrations). 2. Scroll to **External Service Integrations** and click **Add Integration**. 3. Choose the service and enter what it asks for (an API key, or a bot token and signing secret). Credentials are encrypted at rest. 4. The service appears under **Connected Services**. Some services then need a step on their side, for example Fireflies' webhook; each guide covers it. ## How to read the Workflows page Each card on [Workflows](https://www.exponential.im/workflows) shows a status: | Status | Meaning | |---|---| | **Active** | Connected and working | | **Available** | Ready to set up | | **Setup Required** | Partly configured; open it to finish | | **Available Soon** / **Coming Soon** | Not available yet | Below the integrations are two **Guided Processes**: **Launch Sprint** (a three-week plan to validate or launch a product) and **Elevator Pitch** (a structured pitch template). ## How it connects - **Meetings** — Fireflies is the main way meetings arrive; the Meetings page (Amplify → Meetings) lists them and lets you assign each to a project. - **Zoe** — Slack, WhatsApp and Telegram are all ways of reaching [Zoe](https://www.exponential.im/docs/zoe/assistant); she has the same memory and tools in each. - **API tokens** — services that need to call Exponential (webhooks, the shortcut, the extension) use a key from [API tokens](https://www.exponential.im/docs/developers/api-tokens). Integrations that Exponential calls out to use *their* credentials, stored here. - **Notifications** — where summaries and reminders are delivered is a separate setting: [Notifications](https://www.exponential.im/docs/collaborate/notifications). ## FAQ **Is a connection shared with my team?** No. Connections under Settings → Integrations are yours. Workspace-level settings (Notion default account, GitHub repositories) are under workspace settings → Integrations and visible to admins. **Something shows "Setup Required".** Open the card. Usually a token expired or a second step (such as pasting a webhook into the other service) was never completed. **Can I sync with both Notion and Monday.com?** No, one task system at a time. --- # Slack Section: Integrations · URL: https://www.exponential.im/docs/integrations/slack > Let Zoe read, search and post in your Slack, and route meeting summaries to channels Connect a Slack workspace and Zoe can catch you up on channels, search history, post updates and tell you where the noise is, so you read less Slack. Projects can also route their meeting summaries and action items into a channel. ## Where to find it [Settings → Integrations](https://www.exponential.im/settings/integrations) → **Add Integration** → **Slack**. The connection is yours; Zoe uses it in every workspace you are in. ## How to connect Slack You need a Slack app for your Slack workspace first. 1. Go to [api.slack.com/apps](https://api.slack.com/apps) and create an app **from scratch** in your Slack workspace. 2. Under **OAuth & Permissions**, add these bot scopes: | Scope | Why | |---|---| | `channels:history`, `groups:history` | Read public and private channel messages | | `channels:read`, `groups:read` | List channels | | `im:history`, `im:read` | Read and list DMs (optional) | | `chat:write` | Post messages | | `users:read` | Look up who said what | | `search:read` | Search message history | 3. Click **Install to Workspace** and approve. Copy the **Bot User OAuth Token** (starts with `xoxb-`) and, from **Basic Information**, the **Signing Secret**. 4. In Exponential, open [Settings → Integrations](https://www.exponential.im/settings/integrations), click **Add Integration**, choose **Slack**, and paste the **Bot Token** and **Signing Secret**. **Team ID** is optional; it is detected from the token. 5. Invite the bot to any private channel you want Zoe to see. ## How to use it Ask [Zoe](https://www.exponential.im/docs/zoe/assistant) in the drawer, on the Agents page, or from WhatsApp: - "What happened in #engineering today?" - "Find messages about the API deadline." - "Post the standup summary to #product." - "Which channels have been most active today?" Reading is always allowed once connected; posting only happens when you ask for it in that message. ## How to send meeting summaries to a channel When a meeting is assigned to a project that has a Slack channel configured, the summary and extracted action items post to that channel with links back to Exponential. Configure the channel in the project's settings. See [Fireflies](https://www.exponential.im/docs/meet/fireflies) for how meetings arrive. ## How it connects - **Zoe** — every Slack ability is a tool Zoe uses; see [Zoe](https://www.exponential.im/docs/zoe/assistant). - **Meetings** — summaries come from [Fireflies](https://www.exponential.im/docs/meet/fireflies) meetings assigned to a project. - **Notifications** — your own reminders and digests are delivered by [Notifications](https://www.exponential.im/docs/collaborate/notifications), which is separate from this integration. ## FAQ **Zoe cannot see any messages.** Check the `*:history` scopes on the Slack app, then reinstall it to Slack so the new scopes take effect. **Search returns nothing.** `search:read` is a separate scope from the history scopes; add it and reinstall. **The bot cannot post to a channel.** Invite it to the channel. For public channels, adding `chat:write.public` lets it post without joining. **People are attributed wrongly.** Exponential matches Slack users to accounts by email. If a teammate's Slack email differs from their Exponential email, the match fails. **Is my token safe?** The token is stored encrypted and used server-side only; it is never placed in the AI's context. Read the [security post](https://www.exponential.im/blog/ai-agent-security-lessons-from-clawdbot) on how prompt injection is kept away from credentials. --- # Notion Section: Integrations · URL: https://www.exponential.im/docs/integrations/notion > Sync a Notion database with a project, map its status values to kanban columns, and choose which way changes flow Connect a Notion database to a project and actions flow between them: pull from Notion, push to Notion, or both. Notion's status values are mapped to your kanban columns, so an item marked "Doing" in Notion lands in **In Progress** here. ## Where to find it - **Per project (recommended):** open the project, then its **Integrations** tab → **Notion Tasks Sync**. - **Across projects:** the [Workflows page](https://www.exponential.im/workflows) (user menu → **Workflows**) → **Notion Tasks Database** → **Configure**. - **Accounts:** Notion accounts are connected under [Settings → Integrations](https://www.exponential.im/settings/integrations) → **Add Integration** → provider **Notion** → **Connect with Notion**. Connecting from the project wizard does the same thing. ## How to sync a project with Notion 1. Open the project, click the **Integrations** tab, then **Setup Integration** under **Notion Tasks Sync**. 2. **Account** — pick a connected Notion account, or click **Connect** and approve Exponential in Notion. 3. **Database** — choose the **Notion Database**. If it is missing, share it with Exponential in Notion first (open the database, **...** → **Connections**) and try again. 4. **Status** — map Notion's values to your columns (see below). 5. **Sync** — choose a **Sync Direction** (**Pull from Notion**, **Push to Notion** or **Bidirectional**) and a **Sync Frequency** (**Manual**, **Hourly** or **Daily**). 6. Click **Save Configuration**. The Integrations tab now shows **Configure Notion** to change any of this, and **Configure Project** to limit the sync to one Notion project. ## How to map statuses Notion status values become your kanban columns: **Backlog**, **To Do**, **In Progress**, **In Review**, **Done** and **Cancelled**. 1. On the **Status** step, choose the **Status Property** — the wizard lists the database's status and select properties. 2. Click **Auto-detect** to match common names ("Doing" → **In Progress**, "Complete" → **Done**), then fix any row with its **Select column** dropdown. 3. Values you leave unmapped use the default mapping. If the database has no status or select property, the wizard says so and applies the default mapping automatically. A checkbox property also works: checked syncs as **Done**, unchecked as not started. ## How to sync from the Workflows page Use this route for one sync that gathers actions from several sources, or to run and manage syncs you have already set up. 1. Open [Workflows](https://www.exponential.im/workflows) → **Notion Tasks Database** → **Configure** and follow **Workflow Setup Steps**: create a Notion internal integration (**Open Notion**), paste its secret with **Add Secret**, share the database with it in Notion, then click **Setup Sync**. 2. In **Create Notion Workflow**, name the workflow, pick a **Tasks Database** (and optionally a **Projects Database**), and match the **Title**, **Assignee**, **Due Date**, **Priority** and **Description** properties. 3. Choose an **Action Source** (Fireflies meetings only, internal actions only, or all actions), a **Sync Direction** and a **Sync Frequency**, then save. Existing syncs are listed under **Active Notion Workflows** with **Sync Now**, **Edit** and **Delete**. ## How it connects - [Projects](https://www.exponential.im/docs/do/projects) — each sync belongs to one project; synced items appear on its board. - [Fireflies](https://www.exponential.im/docs/meet/fireflies) — with **Action Source** set to Fireflies meetings, actions extracted from meetings are pushed to Notion. - [Integrations](https://www.exponential.im/docs/integrations) — connected Notion accounts live with your other services. ## Tips - Choose **Pull from Notion** when your team plans in Notion and you only want to see the work here — nothing you do in Exponential overwrites theirs. - Name statuses in Notion the standard way ("To Do", "In Progress", "Done") and **Auto-detect** does the mapping for you. ## FAQ **Which columns can I map to?** The six kanban columns above. Custom columns are not supported yet. **Can I set a mapping once for the whole workspace?** Not from the app. Mappings are set per project; a project without its own mapping uses the defaults. **My database doesn't show up.** Share it with the integration in Notion: open the database, click **...**, choose **Connections** and add Exponential (or your internal integration). Then reopen the wizard. **What happens to a status I didn't map?** It follows the default mapping — "Not started", "Backlog" and "Icebox" go to **Backlog**, "Todo" to **To Do**, "Doing" to **In Progress**, "Review" to **In Review**, "Complete" or "Finished" to **Done**. --- # GitHub, Google & Monday.com Section: Integrations · URL: https://www.exponential.im/docs/integrations/github-google-monday > Track repositories so pull requests show up in activity and metrics, bring Google contacts and calendars in, and push actions to Monday.com boards Three integrations that reach outside the meeting-and-chat loop. **GitHub** connects your workspace to the repositories it ships from, so commits and pull requests feed the activity feed, delivery metrics and the Decision Log's ADR sync. **Google** covers calendar access and importing the people you already know. **Monday.com** pushes actions to a board for teams that plan there. ![Settings → Integrations: Google Calendar early access, calendar feeds and the GitHub Repositories card](https://www.exponential.im/doc-assets/google-access.png) ## Where to find it - GitHub: [Settings → Integrations](https://www.exponential.im/settings/integrations) → **GitHub Repositories**. The repositories you add are tracked by the workspace you are in. - Google: [Settings → Integrations](https://www.exponential.im/settings/integrations) for Google Calendar; the CRM's **Import Contacts** dialog for Google Contacts and calendar-derived contacts. - Monday.com: [Workflows](https://www.exponential.im/workflows) (from your user menu) → **Monday.com Boards** → **Configure**. ## How to connect GitHub GitHub is connected through a GitHub App that an administrator of your installation installs on your organisation; a workspace then chooses which of the App's repositories to track. There is no pasting of personal tokens. 1. Ask your administrator to install the Exponential GitHub App on the organisation and grant it the repositories. Until then the card reads "GitHub isn't set up on this deployment yet". 2. In [Settings → Integrations](https://www.exponential.im/settings/integrations), open **GitHub Repositories**, search the repositories the App can see and add the ones this workspace ships from. A repository can be tracked by more than one workspace. 3. From then on the workspace reads that repository's activity through the App: pull requests and commits appear in the [activity feed](https://www.exponential.im/docs/collaborate/workspaces), merged-PR turnaround feeds the Products plugin's Metrics page, and `docs/adr` files can be projected into the [Decision Log](https://www.exponential.im/docs/plan/decisions). ## How to use Google - **Google Calendar** is in early access while Google's verification completes: open [Settings → Integrations](https://www.exponential.im/settings/integrations) and click **Request Access**. In the meantime a published calendar can be subscribed to as a feed; see [Calendar & scheduling](https://www.exponential.im/docs/meet/calendar). - **Google Contacts and calendar contacts**: in the CRM, open **Contacts** → **Import / Export** → **Import Contacts** and choose the **Import Source**: **Google Contacts Only** (your saved address book), **Calendar Events Only** (people you have met with) or both. See [Contacts](https://www.exponential.im/docs/crm/contacts). - **Google Docs** meeting summaries and document import are listed on [Workflows](https://www.exponential.im/workflows) as **Coming Soon**. ## How to push actions to Monday.com 1. On [Workflows](https://www.exponential.im/workflows), find **Monday.com Boards** and click **Configure**. 2. Connect with your personal Monday.com **API Key** and give the integration a **Name** (and an optional description). 3. Pick the board to sync to under **Selected Board**, and map its **Columns** for **Assignee**, **Due Date**, **Priority** and **Description**. 4. Choose the **Action Source** (every action, or only actions extracted from Fireflies meetings) and the **Sync Direction**: push to Monday.com, pull from it, or both ways. 5. Save. Actions matching the source flow in the direction you chose; **Integration Status** on the same page shows the connection and the current board. Monday.com and Notion sync are exclusive: a workspace syncs actions with one of them at a time. ## How it connects - **Integrations overview** — every connection in one table: [Integrations](https://www.exponential.im/docs/integrations). - **Decisions** — ADRs from tracked repositories: [Decisions](https://www.exponential.im/docs/plan/decisions). - **Products** — merged pull requests per cycle on the Metrics page: [Products](https://www.exponential.im/docs/build/products). - **Notion** — the other task-sync option: [Notion](https://www.exponential.im/docs/integrations/notion). - **Self-hosting** — configuring the GitHub App on your own installation: [Self-hosting](https://www.exponential.im/docs/self-hosting). ## FAQ **Can I add a repository by URL?** No. Repositories are chosen from what the installed GitHub App can access, so access stays with the App's permissions. **Can I create GitHub issues from Exponential?** Not from the product. A **GitHub Issue Creator** page exists for operators with a server-side token; it is not part of the workspace integration. **Does Monday.com sync back to Exponential?** Yes, if you choose **Pull from Monday.com** or bidirectional as the sync direction. Push-only is the default described on the Workflows card. --- # API tokens Section: Developers & agents · URL: https://www.exponential.im/docs/developers/api-tokens > Keys that let the iOS shortcut, the browser extension, the CLI, webhooks and your own scripts talk to your Exponential account An API token lets something outside Exponential act as you: the iOS shortcut adding an action, Fireflies posting a transcript to a webhook, the CLI, or a script of your own. Tokens are created on one page, shown once, and can be revoked at any time. ![Settings → API keys](https://www.exponential.im/doc-assets/api-keys.png) ## Where to find it [Settings → API keys](https://www.exponential.im/settings/api-keys) (from your user menu → **Settings**, then **API keys** under Integrations). Tokens belong to your account and work in every workspace you are a member of. External agents get their own keys on a different page: [External agents](https://www.exponential.im/docs/developers/external-agents). ## How to create a token 1. Open [Settings → API keys](https://www.exponential.im/settings/api-keys) and click **Create API Key**. 2. Fill in: - **Name** — what it is for ("Fireflies webhook", "Phone shortcut"). - **Type** — **Hex Key** for webhook secrets, **JWT Token** for anything that calls the API (shortcut, extension, CLI, scripts). - **Expires In** — 1 hour, 24 hours, 7 days, 30 days or 90 days. - **Description** — optional notes. 3. Click **Generate API Key** and copy the value. It is not shown again. ## How to use a token | For | Token type | How | |---|---|---| | [iOS shortcut](https://www.exponential.im/docs/capture/ios-shortcut) | JWT | Paste it into the shortcut's configuration | | [Chrome extension](https://www.exponential.im/docs/capture/chrome-extension) | JWT | Paste it into the extension's settings | | `exponential` CLI | JWT | `exponential auth login --token `; every command is in the [CLI reference](https://www.exponential.im/docs/developers/cli) | | Your own script | JWT | Send it as `Authorization: Bearer ` | | Fireflies webhook | Hex | The [Fireflies](https://www.exponential.im/docs/meet/fireflies) wizard creates this one for you | ## How to revoke a token Click the trash icon next to it. Revocation is immediate and permanent; anything using the token stops working until you create a new one and update it there. ## How it connects - **MCP server and SDK** — give Claude tools over your workspace, or script it yourself; both sign in with a JWT token: [MCP server & SDK](https://www.exponential.im/docs/developers/mcp-and-sdk). - **Integrations** — a token lets *others* reach your data; an [integration](https://www.exponential.im/docs/integrations) stores *their* credentials so Exponential can reach them. Fireflies needs both. - **External agents** — an agent that should have its own identity rather than act as you belongs on [External agents](https://www.exponential.im/docs/developers/external-agents). ## Tips - One token per integration, named after it, so you can revoke one without breaking the rest. - Pick the shortest expiry that fits. Expired tokens are the usual reason a card on [Workflows](https://www.exponential.im/workflows) says **Setup Required**. ## FAQ **Can I see a token again later?** No. Create a new one. **Can I extend a token?** No. Create a new one with a longer expiry and swap it in. **How many can I have?** No limit. **Is a token limited to one workspace?** No. It carries your identity and reaches whatever you can reach. --- # External agents Section: Developers & agents · URL: https://www.exponential.im/docs/developers/external-agents > Connect third-party AI agents to Exponential as first-class team members with their own identity, scoped access and revocable keys External agents let you connect autonomous AI software — [Hermes Agent](https://hermes-agent.nousresearch.com/), MCP clients, custom scripts, anything that can send an HTTP request — to Exponential **as its own identity**, not as you. When your agent creates an action, the action says the *agent* created it, and the workspace's activity feed and members list show it with an **agent** badge. This is different from Zoe, who works *with* you in a conversation and acts as you with your confirmation. ![The External agents page under Settings → Agents](https://www.exponential.im/doc-assets/agents-settings.png) ## Where to find it [Settings → Agents](https://www.exponential.im/settings/agents) (user menu → **Settings** → **Agents**). To go straight to the create form, open [/settings/agents/new](https://www.exponential.im/settings/agents/new). ## How to create an agent 1. Click **New agent** (or open [/settings/agents/new](https://www.exponential.im/settings/agents/new)). A panel opens on the right. 2. Give it a **Name** ("Hermes", "Claude Code") and an optional description of the work it should get. 3. Pick its **Workspaces**. The agent joins each one as a **member**; only workspaces where you have at least member access yourself are offered. 4. Keep or change the **Key label** (for example "laptop") and click **Create agent**. Clear the label to create the agent without a key. 5. Copy the key now — it starts with `exp_agent_` and is never shown again. Click **Done**. To add more workspaces or keys later, use **Add** next to **Workspaces** and **New key** under **Keys** on the agent's card. ## How to point your software at Exponential Your agent authenticates by sending the key as a Bearer token: ``` Authorization: Bearer exp_agent_... ``` For agent software that runs shell commands (like Hermes), the simplest path is the Exponential CLI with the agent key as its token — see [API tokens](https://www.exponential.im/docs/developers/api-tokens#how-to-use-a-token). ## How to rotate or revoke a key - Each agent can hold up to 10 keys. Create a second key, move your software to it, then revoke the first — no downtime. - To revoke, click the revoke icon on the key's row. It takes effect on the agent's next request. - The key table shows **Last used** and **Expires**, so you can spot stale or unexpected activity. - Deleting the agent removes its keys and workspace access immediately; its past work stays attributed to it. ## What an agent can and cannot do External agents are deliberately more limited than human members: - **Member role only.** An agent is always a workspace *member* — never an owner or admin. It cannot manage members, change workspace settings or manage other agents. - **Your access is the ceiling.** If you leave a workspace or are changed to viewer, your agents lose that workspace immediately. - **No credential minting.** Agents cannot create API tokens, connect integrations or generate other credentials. - **Admins can remove it.** A workspace admin can remove an agent from the **Members** list at any time without touching your keys. ## How it connects - **MCP server and SDK** — the client libraries an agent can use with its key: [MCP server & SDK](https://www.exponential.im/docs/developers/mcp-and-sdk). - [API tokens](https://www.exponential.im/docs/developers/api-tokens) — tokens act *as you*; use them for webhooks and personal automation instead. - [Zoe, your assistant](https://www.exponential.im/docs/zoe/assistant) — the built-in assistant that works with you in a conversation. - [Workspaces](https://www.exponential.im/docs/collaborate/workspaces#roles) — what a member can and cannot do. ## FAQ **Can an agent be read-only?** Not yet. Agents always join as members. A read-only (viewer) tier is planned. **Can my whole team share one agent?** Agents are personal — each belongs to the user who created it, and its access is tied to that user's. Shared workspace-owned agents are under consideration. **Does this replace API tokens?** No. [API tokens](https://www.exponential.im/docs/developers/api-tokens) act as you and are right for webhooks and personal automation. Use an external agent when software should have its own identity and audit trail. **I assigned an action to my external agent — does Exponential run it?** No. An external agent is software you run; it polls for the actions assigned to it (`exponential actions list` with its key) and works them itself, commenting and changing status as it goes. Exponential starts a hosted run only when you assign your built-in [assistant](https://www.exponential.im/docs/zoe/assistant-runs), which has no software of its own. The two never overlap: the same assignment is either yours to pick up or the assistant's to run. **How do I see what an agent did?** Actions it created list the agent as creator, and the workspace activity feed shows its entries with an **agent** chip. --- # CLI reference Section: Developers & agents · URL: https://www.exponential.im/docs/developers/cli > Every command of the exponential command-line tool, generated from the CLI itself, with how to install it and sign in The `exponential` command-line tool gives you, your scripts and your agents the same objects the app has: actions, projects, goals and OKRs, meetings, decisions, products, tickets, features, epics, pages, CRM contacts, deals and time entries. Every command prints readable output in a terminal and JSON when piped or given `--json`, so it works as well inside an agent's shell as in yours. ## Where to find it The tool is the `exponential-cli` package on npm; its source is at [github.com/positonic/exponential-cli](https://github.com/positonic/exponential-cli). It talks to whatever installation you point it at. ## How to install and sign in 1. Install it globally: ```bash npm install -g exponential-cli ``` 2. Create a **JWT Token** under [Settings → API keys](https://www.exponential.im/settings/api-keys) (see [API tokens](https://www.exponential.im/docs/developers/api-tokens)). An [external agent](https://www.exponential.im/docs/developers/external-agents) uses its own `exp_agent_` key instead, and everything it does is attributed to the agent. 3. Sign in, naming the address you open Exponential at: ```bash exponential auth login --token --api-url https:// ``` 4. Check it worked: ```bash exponential auth status ``` Credentials are stored in your home directory. `exponential auth logout` removes them. ## How to read this reference - Every command group is a section below; every subcommand shows its usage line, arguments and options. The tables are generated from the CLI's own definitions, so they match the version named at the top of the reference. - Most list and create commands take `--workspace `; product-scoped commands (`tickets`, `features`) take `--product ` and need `--workspace` when the product is given by slug. Ids are CUIDs; a ticket can also be addressed by its short id. - Add `--json` (or pipe the output) for machine-readable output. ## How it connects - **API tokens** — the key the CLI signs in with: [API tokens](https://www.exponential.im/docs/developers/api-tokens). - **External agents** — agent-owned keys and attribution: [External agents](https://www.exponential.im/docs/developers/external-agents). - **Time tracking** — worked examples of `time log`, `time list` and `time confirm`: [Time tracking](https://www.exponential.im/docs/do/time-tracking). ## FAQ **The reference is behind the CLI I installed.** Run `npm install -g exponential-cli@latest`; the version this page was generated from is stated at the top of the reference. To regenerate the page, run `npm run docs:cli` in the Exponential repository with `EXPONENTIAL_CLI_DIR` pointing at a CLI checkout. **Can I use it against a self-hosted installation?** Yes. Pass that installation's address to `--api-url` when you sign in. ## Commands _Generated from exponential-cli 1.18.1._ | Command | What it does | |---|---| | [`auth`](#auth) | Authentication commands | | [`actions`](#actions) | Manage actions/tasks | | [`contacts`](#contacts) | Manage CRM contacts | | [`decisions`](#decisions) | Log and manage decisions and open questions (the workspace Decision Log). | | [`deals`](#deals) | Manage pipeline deals | | [`epics`](#epics) | Manage epics. Epics are workspace-scoped and group actions and tickets across products. | | [`features`](#features) | Manage features. A feature lives under a product and groups user stories, scopes, and tickets. | | [`labels`](#labels) | Manage labels (orthogonal tags applied to actions, tickets, features, and epics). | | [`meetings`](#meetings) | Manage meetings and their notes (recorded, imported, or manually created) | | [`organizations`](#organizations) | Manage CRM organizations | | [`pages`](#pages) | Manage Knowledge pages (PRDs, research, technical specs). Link one to a feature with "features link-page". | | [`products`](#products) | Manage products. A workspace contains products; a product holds features and tickets. | | [`projects`](#projects) | Manage projects | | [`search`](#search) | Global search across projects, actions, goals, workspaces and more — same coverage as the app's Cmd+K palette | | [`tickets`](#tickets) | Manage product backlog tickets. Tickets live under a product, link to features/epics, depend on each other, and can be implemented via actions. | | [`time`](#time) | Time entries — log the day's work and list it. Run with an external-agent key, the entry belongs to the agent's OWNER and is always PROPOSED; a personal token logs your own time, CONFIRMED by default. | | [`workspaces`](#workspaces) | Manage workspaces | | [`goals`](#goals) | Manage goals (objectives) and their key results. Objectives have integer ids; key results are CUIDs. | | [`okrs`](#okrs) | OKRs — objectives with their key results nested. Manage the parts with `goals` and `goals kr`. | ## `auth` Authentication commands ### `auth login` Configure CLI with your API token ```bash exponential auth login [options] ``` | Option | Description | |---|---| | `--token ` | JWT token from /settings/api-keys | | `--api-url ` | API URL (e.g., https://www.exponential.im) | ### `auth logout` Remove stored credentials ```bash exponential auth logout [options] ``` ### `auth whoami` Show current authentication status ```bash exponential auth whoami [options] ``` ### `auth show` Print parts of the current credentials. Use --token to print the raw JWT (for piping into other tools, e.g. `gh secret set EXPONENTIAL_TOKEN < <(exponential auth show --token)`). ```bash exponential auth show [options] ``` | Option | Description | |---|---| | `--token` | Print the raw JWT to stdout with no trailing newline | ### `auth status` Show detailed authentication status ```bash exponential auth status [options] ``` ## `actions` Manage actions/tasks ### `actions list` List all actions ```bash exponential actions list [options] ``` | Option | Description | |---|---| | `--project ` | Filter by project ID | | `--status ` | Filter by kanban status (BACKLOG, TODO, IN_PROGRESS, IN_REVIEW, DONE) | | `--assignee ` | Filter by assignee ID | ### `actions today` What's on your plate: overdue, today, and inbox ```bash exponential actions today [options] ``` | Option | Description | |---|---| | `--workspace ` | Filter by workspace ID | | `--due-only` | Only actions whose dueDate is today (the pre-1.8 shape — excludes overdue) | ### `actions overdue` Why the overdue pile is that size: bulk-created cohorts vs real debt ```bash exponential actions overdue [options] ``` | Option | Description | |---|---| | `--workspace ` | Filter by workspace ID | ### `actions defer` Amnesty: clear dates so actions fall back to their project backlog untimed ```bash exponential actions defer [options] ``` | Option | Description | |---|---| | `--ids ` | Comma-separated action IDs | ### `actions reschedule` Move actions to a new do-date (use "actions defer" if they were never really due) ```bash exponential actions reschedule [options] ``` | Option | Description | |---|---| | `--ids ` | Comma-separated action IDs | | `--to ` | New do-date (YYYY-MM-DD, or "today") | ### `actions range` Get actions by date range ```bash exponential actions range [options] ``` | Option | Description | |---|---| | `--start ` | Start date (YYYY-MM-DD) | | `--end ` | End date (YYYY-MM-DD) | | `--workspace ` | Filter by workspace ID | ### `actions kanban` Get kanban board actions ```bash exponential actions kanban [options] ``` | Option | Description | |---|---| | `--project ` | Filter by project ID | | `--status ` | Filter by kanban status | | `--assignee ` | Filter by assignee ID | ### `actions update` Update an existing action ```bash exponential actions update [options] ``` | Option | Description | |---|---| | `--id ` | Action ID to update | | `-n, --name ` | New action name | | `-d, --description ` | New description | | `-p, --project ` | Move to project ID | | `--priority ` | Priority (Quick, Scheduled, 1st Priority, etc.) | | `--status ` | Status (ACTIVE, COMPLETED, CANCELLED) | | `--kanban ` | Kanban status (BACKLOG, TODO, IN_PROGRESS, IN_REVIEW, DONE) | | `--due ` | Due date (YYYY-MM-DD or "null" to clear) | | `--scheduled-start ` | Do-date: when you plan to work on it (YYYY-MM-DD, ISO datetime, or "null" to clear). This is what /today partitions on. | | `--scheduled-end ` | End of the time block (YYYY-MM-DD, ISO datetime, or "null" to clear) | ### `actions create` Create a new action ```bash exponential actions create [options] ``` | Option | Description | |---|---| | `-n, --name ` | Action name/title | | `-d, --description ` | Action description | | `-p, --project ` | Project ID to assign the action to | | `--priority ` | Priority (Quick, Scheduled, 1st Priority, etc.) | | `--due ` | Due date (YYYY-MM-DD) | | `--effort ` | Effort estimate in minutes | | `--ticket ` | Link action to a product ticket (CUID) after creation | | `--epic ` | Epic CUID to attach the action to | ### `actions upsert` One Action per external source: find by (--workspace, --source-type, --source-id), refresh its title and links, else create it. The Daily worklog uses --source-type claude-session --source-id . ```bash exponential actions upsert [options] ``` | Option | Description | |---|---| | `--source-type ` | e.g. claude-session | | `--source-id ` | The source's own id; the same pair always maps to the same Action | | `-t, --title ` | Action title (refreshed on every call) | | `-w, --workspace <slug\|id>` | Workspace (defaults to your default workspace) | | `-d, --description <text>` | Description | | `--project <id>` | Link to a project CUID in the same workspace | | `--ticket <id>` | Link to a ticket CUID whose product is in the same workspace | ### `actions comment` Manage comments on an action ### `actions comment list` List comments on an action ```bash exponential actions comment list [options] ``` | Option | Description | |---|---| | `--id <id>` | Action ID | ### `actions comment add` Add a comment to an action ```bash exponential actions comment add [options] ``` | Option | Description | |---|---| | `--id <id>` | Action ID | | `-m, --message <text>` | Comment content (markdown supported) | ### `actions comment update` Update one of your own comments ```bash exponential actions comment update [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | | `-m, --message <text>` | New comment content | ### `actions comment delete` Delete one of your own comments ```bash exponential actions comment delete [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | ## `contacts` Manage CRM contacts ### `contacts list` List contacts ```bash exponential contacts list [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | | `--search <query>` | Search by name or email | | `--tags <tags>` | Filter by tags (comma-separated) | | `--organization <id>` | Filter by organization ID | | `--limit <n>` | Max results to return | | `--cursor <cursor>` | Pagination cursor | ### `contacts get` Get a contact by ID ```bash exponential contacts get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Contact ID | | Option | Description | |---|---| | `--interactions` | Include interaction history | ### `contacts create` Create a new contact ```bash exponential contacts create [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | | `--first-name <name>` | First name | | `--last-name <name>` | Last name | | `--email <email>` | Email address | | `--phone <phone>` | Phone number | | `--linkedin <url>` | LinkedIn URL | | `--telegram <handle>` | Telegram handle | | `--twitter <handle>` | Twitter/X handle | | `--github <handle>` | GitHub username | | `--bluesky <handle>` | Bluesky handle | | `--about <text>` | About / bio | | `--profile-type <type>` | Profile type | | `--skills <skills>` | Skills (comma-separated) | | `--tags <tags>` | Tags (comma-separated) | | `--organization <id>` | Organization ID | | `--organization-name <name>` | Organization name (find-or-create; ignored if --organization is set) | ### `contacts update` Update an existing contact ```bash exponential contacts update [options] ``` | Option | Description | |---|---| | `--id <id>` | Contact ID | | `--first-name <name>` | First name | | `--last-name <name>` | Last name | | `--email <email>` | Email (use "null" to clear) | | `--phone <phone>` | Phone (use "null" to clear) | | `--linkedin <url>` | LinkedIn URL (use "null" to clear) | | `--telegram <handle>` | Telegram handle (use "null" to clear) | | `--twitter <handle>` | Twitter/X handle (use "null" to clear) | | `--github <handle>` | GitHub username (use "null" to clear) | | `--bluesky <handle>` | Bluesky handle (use "null" to clear) | | `--about <text>` | About / bio | | `--profile-type <type>` | Profile type | | `--skills <skills>` | Skills (comma-separated) | | `--tags <tags>` | Tags (comma-separated) | | `--organization <id>` | Organization ID (use "null" to clear) | | `--organization-name <name>` | Organization name (find-or-create; ignored if --organization is set) | ### `contacts delete` Delete a contact ```bash exponential contacts delete [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Contact ID | ### `contacts add-interaction` Add an interaction to a contact ```bash exponential contacts add-interaction [options] ``` | Option | Description | |---|---| | `--contact <id>` | Contact ID | | `--type <type>` | Interaction type (EMAIL, TELEGRAM, PHONE_CALL, MEETING, NOTE, LINKEDIN, OTHER) | | `--direction <dir>` | Direction (INBOUND, OUTBOUND) | | `--subject <text>` | Subject line | | `--notes <text>` | Notes | ### `contacts enrich` Queue a web-search enrichment job for an existing contact (runs regardless of the workspace auto-enrich setting) ```bash exponential contacts enrich [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Contact ID | ## `decisions` Log and manage decisions and open questions (the workspace Decision Log). An OPEN QUESTION is a decision with --status OPEN — there is no separate model, and that is exactly what a meeting's "Open questions" panel shows. Statuses: OPEN (an open question) · PROPOSED · ACCEPTED · SUPERSEDED · DEPRECATED. SUPERSEDED and DEPRECATED are reached with "decisions status", never at creation. ### `decisions list` List decisions, newest decided first. Pass --status OPEN for open questions only. An OPEN QUESTION is a decision with --status OPEN — there is no separate model, and that is exactly what a meeting's "Open questions" panel shows. ```bash exponential decisions list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | | `--meeting <id>` | One meeting's decisions and open questions (includes drafts if you can edit it) | | `--status <status>` | Filter by status (repeatable): OPEN, PROPOSED, ACCEPTED, SUPERSEDED, DEPRECATED | | `--source <source>` | Filter by source (repeatable): MEETING, MANUAL, AGENT | | `--product <slug\|id>` | Filter by product, or "workspace" for decisions with no product | | `--include-workspace-wide` | With --product: also include decisions that have no product | | `--project <id>` | Filter by project CUID | | `--search <text>` | Free-text over statement and body | | `--number <n>` | One decision by its workspace sequence number (D-0003 is 3) | | `--limit <n>` | Cap the rows returned (1-500) | | `--adr <id>` | Decisions formalised as this ADR document | ### `decisions get` Show one decision in full: body, evidence, deciders, chain and links ```bash exponential decisions get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ### `decisions create` Log a decision, or an open question with --status OPEN. An OPEN QUESTION is a decision with --status OPEN — there is no separate model, and that is exactly what a meeting's "Open questions" panel shows. Bodies are Markdown: use --body-file <path> (or - for stdin) rather than a shell argument. Bulk: --from-file <path|-> takes a JSON array of decisions; the other flags become its defaults. ```bash exponential decisions create [options] ``` | Option | Description | |---|---| | `-s, --statement <text>` | The decision, or the open question (max 500 chars) | | `-b, --body <markdown>` | Markdown detail: context, alternatives, consequences | | `--body-file <path>` | Read the body from a file ("-" = stdin) | | `--status <status>` | OPEN (open question), PROPOSED (default) or ACCEPTED | | `--source <source>` | MEETING, MANUAL or AGENT | | `--meeting <id>` | Meeting (transcriptionSessionId) this came out of — needs edit access to it | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | | `--product <slug\|id>` | Link to a product | | `--project <id>` | Link to a project CUID | | `--goal <id>` | Link to a goal (integer id) | | `--key-result <id>` | Link to a key result CUID | | `--occurrence <id>` | Link to a ceremony occurrence CUID | | `--decided-at <iso>` | When it was decided (e.g. 2026-09-10T14:00) | | `--owner <userId>` | Owner user ID | | `--decider <"Name <email>">` | Someone who made the decision (repeatable); external people need no account | | `--evidence-file <path>` | JSON array of {turnIndex, text} transcript quotes ("-" = stdin). Needs --meeting: the server checks every quote against that transcript and silently drops the ones that do not match. | | `--from-file <path>` | Bulk create from a JSON array of decisions ("-" = stdin) | ### `decisions update` Update a decision's content and scope; only the fields you pass are written. Status changes go through "decisions status". ```bash exponential decisions update [options] ``` | Option | Description | |---|---| | `--id <id>` | Decision CUID | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | | `-s, --statement <text>` | New statement | | `-b, --body <markdown>` | New Markdown body (or "null" to clear) | | `--body-file <path>` | Read the new body from a file ("-" = stdin) | | `--decided-at <iso>` | When it was decided (or "null" to clear) | | `--owner <userId>` | Owner user ID (or "null" to clear) | | `--product <slug\|id>` | Product (or "null" to detach) | | `--project <id>` | Project CUID (or "null" to detach) | | `--goal <id>` | Goal integer id (or "null" to detach) | | `--key-result <id>` | Key result CUID (or "null" to detach) | | `--adr <id>` | ADR document CUID (or "null" to detach) | ### `decisions status` Move a decision through its lifecycle — including answering an open question by moving it from OPEN to ACCEPTED. ```bash exponential decisions status [options] ``` | Option | Description | |---|---| | `--id <id>` | Decision CUID | | `--status <status>` | OPEN, PROPOSED, ACCEPTED, SUPERSEDED or DEPRECATED | | `--superseded-by <id>` | The decision that replaced this one (with --status SUPERSEDED) | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ### `decisions link` Record what implements a decision: a ticket or a feature. Idempotent. ```bash exponential decisions link [options] ``` | Option | Description | |---|---| | `--id <id>` | Decision CUID | | `--ticket <id>` | Ticket CUID | | `--feature <id>` | Feature CUID | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ### `decisions unlink` Remove one "implemented by" link. Takes the LINK id (shown by "decisions get"), not the ticket or feature id. ```bash exponential decisions unlink [options] ``` | Option | Description | |---|---| | `--link <id>` | DecisionLink CUID | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ### `decisions draft` Review decisions an agent proposed but nobody has confirmed yet (visible only on their source meeting) ### `decisions draft extract` Propose draft decisions from a meeting's notes and transcript, for someone to confirm. Idempotent: existing drafts are returned rather than regenerated, and a meeting that already has confirmed decisions is left alone. ```bash exponential decisions draft extract [options] ``` | Option | Description | |---|---| | `--meeting <id>` | Meeting CUID (transcriptionSessionId) | ### `decisions draft confirm` Publish a draft decision into the log ```bash exponential decisions draft confirm [options] ``` | Option | Description | |---|---| | `--id <id>` | Decision CUID | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ### `decisions draft reject` Reject a draft. A confirmed decision is never rejected — deprecate or supersede it with "decisions status". ```bash exponential decisions draft reject [options] ``` | Option | Description | |---|---| | `--id <id>` | Decision CUID | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ### `decisions draft delete` Permanently delete a draft or rejected decision. Confirmed decisions are never deleted. ```bash exponential decisions draft delete [options] ``` | Option | Description | |---|---| | `--id <id>` | Decision CUID | | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | ## `deals` Manage pipeline deals ### `deals pipeline` Get pipeline overview with stages ```bash exponential deals pipeline [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | ### `deals stages` List pipeline stages ```bash exponential deals stages [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | ### `deals list` List all deals ```bash exponential deals list [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | ### `deals get` Get a deal by ID ```bash exponential deals get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Deal ID | ### `deals create` Create a new deal ```bash exponential deals create [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | | `--stage <id>` | Pipeline stage ID | | `--title <title>` | Deal title | | `--description <text>` | Deal description | | `--value <amount>` | Deal value | | `--currency <code>` | Currency code (default: USD) | | `--probability <pct>` | Win probability (0-100) | | `--close-date <date>` | Expected close date (YYYY-MM-DD) | | `--contact <id>` | Contact ID | | `--organization <id>` | Organization ID | | `--assigned-to <id>` | Assigned user ID | ### `deals update` Update an existing deal ```bash exponential deals update [options] ``` | Option | Description | |---|---| | `--id <id>` | Deal ID | | `--title <title>` | Deal title | | `--description <text>` | Description (use "null" to clear) | | `--value <amount>` | Deal value (use "null" to clear) | | `--currency <code>` | Currency code | | `--probability <pct>` | Win probability (use "null" to clear) | | `--close-date <date>` | Expected close date (YYYY-MM-DD or "null" to clear) | | `--contact <id>` | Contact ID (use "null" to clear) | | `--organization <id>` | Organization ID (use "null" to clear) | | `--assigned-to <id>` | Assigned user ID (use "null" to clear) | ### `deals move` Move a deal to a different stage ```bash exponential deals move [options] ``` | Option | Description | |---|---| | `--id <id>` | Deal ID | | `--stage <id>` | Target stage ID | | `--order <n>` | Position within stage (default: `0`) | ### `deals delete` Delete a deal ```bash exponential deals delete [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Deal ID | ## `epics` Manage epics. Epics are workspace-scoped and group actions and tickets across products. ### `epics list` List epics in a workspace ```bash exponential epics list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace slug or CUID | | `--status <status>` | Filter by status: OPEN, IN_PROGRESS, DONE, CANCELLED | ### `epics get` Get an epic by CUID ```bash exponential epics get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `epics create` Create a new epic in a workspace ```bash exponential epics create [options] ``` | Option | Description | |---|---| | `-n, --name <name>` | Epic name | | `-d, --description <text>` | Description | | `--priority <priority>` | Priority: HIGH, MEDIUM, LOW, NONE | | `--start <date>` | Start date (YYYY-MM-DD) | | `--target <date>` | Target date (YYYY-MM-DD) | | `--workspace <slug\|id>` | Workspace slug or CUID | ### `epics update` Update an existing epic ```bash exponential epics update [options] ``` | Option | Description | |---|---| | `--id <id>` | Epic CUID | | `-n, --name <name>` | New name | | `-d, --description <text>` | New description (or "null" to clear) | | `--status <status>` | Status: OPEN, IN_PROGRESS, DONE, CANCELLED | | `--priority <priority>` | Priority: HIGH, MEDIUM, LOW, NONE | | `--start <date>` | Start date (YYYY-MM-DD or "null") | | `--target <date>` | Target date (YYYY-MM-DD or "null") | ## `features` Manage features. A feature lives under a product and groups user stories, scopes, and tickets. ### `features list` List features in a product ```bash exponential features list [options] ``` | Option | Description | |---|---| | `--product <slug\|id>` | Product slug or CUID | | `--workspace <slug\|id>` | Workspace (required when --product is a slug) | | `--status <status>` | Filter by status: IDEA, DEFINED, IN_PROGRESS, SHIPPED, DEPRECATED, ARCHIVED | ### `features get` Get a feature by CUID ```bash exponential features get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `features create` Create a new feature in a product ```bash exponential features create [options] ``` | Option | Description | |---|---| | `--product <slug\|id>` | Product slug or CUID | | `-n, --name <name>` | Feature name | | `-d, --description <text>` | Description (markdown supported) | | `--vision <text>` | Vision / target outcome | | `--status <status>` | Status: IDEA, DEFINED, IN_PROGRESS, SHIPPED, DEPRECATED, ARCHIVED | | `--priority <n>` | Priority 0-4 (lower = higher) | | `--effort <n>` | Effort estimate | | `--area <id>` | Area CUID (per-product bucket) to file the feature under | | `--workspace <slug\|id>` | Workspace (required when --product is a slug) | ### `features update` Update an existing feature ```bash exponential features update [options] ``` | Option | Description | |---|---| | `--id <id>` | Feature CUID | | `-n, --name <name>` | New name | | `-d, --description <text>` | New description | | `--vision <text>` | New vision text | | `--status <status>` | Status: IDEA, DEFINED, IN_PROGRESS, SHIPPED, DEPRECATED, ARCHIVED | | `--priority <n>` | Priority 0-4 | | `--effort <n>` | Effort estimate | | `--area <id>` | Area CUID ("none" to clear) | | `--goal <id\|none>` | Objective (goal) id this feature serves ("none" to clear). For progress rollup, link the finer Feature→key-result edge with `goals kr link --feature`. | ### `features delete` Delete a feature. Refuses if it still has tickets — deleting a feature does not delete its tickets, it unlinks them (Ticket.featureId is SetNull), silently orphaning them in the product backlog. ```bash exponential features delete [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | Option | Description | |---|---| | `--with-tickets` | Delete the feature's tickets first, then the feature (destructive) | | `--orphan-tickets` | Delete the feature anyway, leaving its tickets in the backlog unlinked | ### `features link-page` Link a Knowledge page (PRD, spec, research) to a feature ```bash exponential features link-page [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | | `--page <id>` | Page CUID | | `--scope <id>` | Feature scope CUID to pin the page to | ### `features unlink-page` Unlink a Knowledge page from a feature ```bash exponential features unlink-page [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | | `--page <id>` | Page CUID | ### `features stories` Manage a feature's native, structured user stories (As a / I want / So that). ### `features stories add` Add user stories to a feature. Flag mode: pass --as-a/--i-want/--so-that (plus optional --acceptance/--scope) to add one story. Batch mode: pipe a JSON array of { asA?, iWant?, soThat?, acceptanceCriteria?, scopeId? } on stdin to add many at once (per-item success/failure is reported). ```bash exponential features stories add [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | | `--as-a <text>` | "As a ..." actor | | `--i-want <text>` | "I want ..." capability | | `--so-that <text>` | "So that ..." outcome | | `--acceptance <text>` | Acceptance criteria | | `--scope <id>` | Feature scope CUID to group the story under | ### `features stories list` List a feature's user stories in display order ```bash exponential features stories list [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | ### `features scopes` Manage a feature's scopes: shippable increments ("V1", "V2"), each with its own lifecycle. ### `features scopes list` List a feature's scopes ```bash exponential features scopes list [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | ### `features scopes add` Add a scope to a feature ```bash exponential features scopes add [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | | `--version <label>` | Short label for the increment, e.g. "V1" | | `-d, --description <text>` | What this scope delivers (markdown supported) | | `--status <status>` | Status: PLANNED, IN_PROGRESS, SHIPPED, DEPRECATED (default PLANNED) | ### `features scopes update` Update a scope (setting SHIPPED stamps shippedAt and rolls the feature status up) ```bash exponential features scopes update [options] ``` | Option | Description | |---|---| | `--id <id>` | Scope CUID | | `--version <label>` | New version label | | `-d, --description <text>` | New description | | `--status <status>` | Status: PLANNED, IN_PROGRESS, SHIPPED, DEPRECATED | ### `features scopes rm` Delete a scope ```bash exponential features scopes rm [options] ``` | Option | Description | |---|---| | `--id <id>` | Scope CUID | ### `features requirements` Manage a feature's requirements: atomic, testable EARS-style "shall" statements, checkable met/unmet. ### `features requirements add` Add requirements to a feature. Flag mode: pass -s/--statement (plus optional --kind/--scope) to add one requirement. Batch mode: pipe a JSON array of { statement, kind?, scopeId? } on stdin to add many at once (per-item success/failure is reported). ```bash exponential features requirements add [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | | `-s, --statement <text>` | One EARS-style "shall" statement | | `--kind <kind>` | Kind: FUNCTIONAL, NON_FUNCTIONAL, CONSTRAINT | | `--scope <id>` | Feature scope CUID to pin the requirement to | ### `features requirements list` List a feature's requirements ```bash exponential features requirements list [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature CUID | | `--scope <id>` | Only requirements pinned to this scope | ### `features requirements check` Mark a requirement met (or unmet with --unmet) ```bash exponential features requirements check [options] ``` | Option | Description | |---|---| | `--id <id>` | Requirement CUID | | `--unmet` | Mark unmet instead of met | ### `features requirements rm` Delete a requirement ```bash exponential features requirements rm [options] ``` | Option | Description | |---|---| | `--id <id>` | Requirement CUID | ### `features areas` Manage a product's areas: the buckets features are filed under (a feature has exactly one or none). ### `features areas list` List a product's areas ```bash exponential features areas list [options] ``` | Option | Description | |---|---| | `--product <slug\|id>` | Product slug or CUID | | `--workspace <slug\|id>` | Workspace (required when --product is a slug) | ### `features areas create` Create an area in a product ```bash exponential features areas create [options] ``` | Option | Description | |---|---| | `--product <slug\|id>` | Product slug or CUID | | `-n, --name <name>` | Area name (unique per product) | | `-d, --description <text>` | What belongs in this area | | `--workspace <slug\|id>` | Workspace (required when --product is a slug) | ### `features comment` Read and post comments on a feature. Mention teammates with --mention. ### `features comment list` List comments on a feature ```bash exponential features comment list [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature ID | ### `features comment add` Add a comment to a feature ```bash exponential features comment add [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature ID | | `-m, --message <text>` | Comment body (markdown supported) | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | | `--scope <id>` | Attach to a scope's activity feed instead of the feature | ### `features comment reply` Reply to a comment on a feature ```bash exponential features comment reply [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID to reply to | | `-m, --message <text>` | Reply body (markdown supported) | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `features comment update` Update one of your own comments ```bash exponential features comment update [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | | `-m, --message <text>` | New comment body | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `features comment rm` Delete one of your own comments ```bash exponential features comment rm [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | ### `features comment resolve` Resolve an anchored comment thread ```bash exponential features comment resolve [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature ID | | `--thread <id>` | Thread ID (anchored comments only) | ### `features comment unresolve` Reopen a resolved comment thread ```bash exponential features comment unresolve [options] ``` | Option | Description | |---|---| | `--feature <id>` | Feature ID | | `--thread <id>` | Thread ID (anchored comments only) | ## `labels` Manage labels (orthogonal tags applied to actions, tickets, features, and epics). ### `labels list` List labels visible in a workspace ```bash exponential labels list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace slug or CUID | | `--category <category>` | Filter by category. Use "label" for general labels, "null" for category-less labels, or omit to list all. | ### `labels create` Create a workspace-scoped label ```bash exponential labels create [options] ``` | Option | Description | |---|---| | `-n, --name <name>` | Label name | | `--color <token>` | Color token (e.g. avatar-green, brand-primary) | | `-d, --description <text>` | Description | | `--category <category>` | Category. Omit (or pass "null") to create a general label. | | `--workspace <slug\|id>` | Workspace slug or CUID | ### `labels seed-triage` Idempotently seed the five canonical triage labels into a workspace. ```bash exponential labels seed-triage [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace slug or CUID | ## `meetings` Manage meetings and their notes (recorded, imported, or manually created) ### `meetings list` List meetings you can see (owned, attended, or shared via project/workspace). JSON rows carry hasNotes/hasSummary/hasTranscript flags instead of the bodies — use "get" for content. ```bash exponential meetings list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Restrict to one workspace | | `--mine` | Only meetings you own or attended | | `--archived` | Include archived meetings | ### `meetings get` Get a meeting: details, summary, and notes ```bash exponential meetings get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | Option | Description | |---|---| | `--transcript` | Also print the raw transcript (pretty mode; JSON always includes it) | ### `meetings create` Create a meeting manually. Transcript: --transcript text, --transcript-file <path>, or --transcript-file - for stdin. ```bash exponential meetings create [options] ``` | Option | Description | |---|---| | `-t, --title <title>` | Meeting title | | `--transcript <text>` | Transcript text (required by the API) | | `--transcript-file <path>` | Read the transcript from a file ("-" = stdin) | | `--notes <markdown>` | Meeting notes | | `--notes-file <path>` | Read the notes from a file ("-" = stdin) | | `--description <text>` | Short description | | `--date <iso>` | When the meeting occurred (e.g. 2026-08-25T14:00; a bare date is local midnight) | | `--project <id>` | Link to a project (the meeting inherits its workspace) | | `--workspace <slug\|id>` | Workspace (omit for a personal meeting) | ### `meetings update` Update a meeting; only the fields you pass are written. Title and other fields are two API calls — on a mid-flight failure the title may already be saved. ```bash exponential meetings update [options] ``` | Option | Description | |---|---| | `--id <id>` | Meeting CUID | | `-t, --title <title>` | New title | | `--notes <markdown>` | Replace the meeting notes | | `--notes-file <path>` | Read the new notes from a file ("-" = stdin) | | `--summary <text>` | Replace the summary | | `--description <text>` | Replace the description | | `--date <iso>` | When the meeting occurred | ### `meetings delete` Permanently delete meetings you own. Pass one or more ids, and/or --ids-file with whitespace-separated ids ("-" = stdin). Deleting more than one id requires --force. Exit 0 only when everything requested was deleted. ```bash exponential meetings delete [options] [ids...] ``` | Argument | Required | Description | |---|---|---| | `ids` | no | | | Option | Description | |---|---| | `--ids-file <path>` | Read whitespace-separated meeting ids from a file ("-" = stdin) | | `--force` | Confirm deleting more than one meeting in a single call | ### `meetings notes` Read and write a meeting's notes ### `meetings notes get` Print the meeting notes as raw Markdown (safe to redirect to a file); pass --json for a {id, notes} envelope ```bash exponential meetings notes get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `meetings notes set` Replace the meeting notes. Body: inline, --file <path>, or --file - for stdin. ```bash exponential meetings notes set [options] <id> [notes] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | `notes` | no | | | Option | Description | |---|---| | `--file <path>` | Read the notes from a file ("-" = stdin) | ### `meetings notes append` Append a block to the meeting notes (separated by a blank line). Read-modify-write: concurrent appends can lose one side. ```bash exponential meetings notes append [options] <id> [notes] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | `notes` | no | | | Option | Description | |---|---| | `--file <path>` | Read the block from a file ("-" = stdin) | ## `organizations` Alias: `orgs` Manage CRM organizations ### `organizations list` List organizations ```bash exponential organizations list [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | | `--search <query>` | Search by name or description | | `--industry <industry>` | Filter by industry | | `--limit <n>` | Max results to return | | `--cursor <cursor>` | Pagination cursor | ### `organizations get` Get an organization by ID ```bash exponential organizations get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Organization ID | ### `organizations create` Create a new organization ```bash exponential organizations create [options] ``` | Option | Description | |---|---| | `--workspace <id>` | Workspace ID | | `--name <name>` | Organization name | | `--website-url <url>` | Website URL | | `--logo-url <url>` | Logo URL | | `--description <text>` | Description | | `--industry <industry>` | Industry | | `--size <size>` | Company size (1-10, 11-50, 51-200, 201-500, 501-1000, 1000+) | ## `pages` Manage Knowledge pages (PRDs, research, technical specs). Link one to a feature with "features link-page". ### `pages list` List pages in a workspace ```bash exponential pages list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace (defaults to the configured default) | | `--search <text>` | Filter by title/content | ### `pages get` Get a page by CUID (body is Markdown) ```bash exponential pages get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `pages create` Create a page. Body: -b text, --body-file <path>, or --body-file - for stdin. ```bash exponential pages create [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace (defaults to the configured default) | | `-t, --title <title>` | Page title | | `-b, --body <markdown>` | Markdown body | | `--body-file <path>` | Read the Markdown body from a file ("-" = stdin) | ### `pages update` Update a page. Sending a body is a Markdown-source write: the Markdown becomes canonical. ```bash exponential pages update [options] ``` | Option | Description | |---|---| | `--id <id>` | Page CUID | | `-t, --title <title>` | New title | | `-b, --body <markdown>` | New Markdown body (replaces the whole body) | | `--body-file <path>` | Read the new Markdown body from a file ("-" = stdin) | ### `pages comment` Read and post comments on a page. Mention teammates with --mention. ### `pages comment list` List comments on a page ```bash exponential pages comment list [options] ``` | Option | Description | |---|---| | `--page <id>` | Page ID | ### `pages comment add` Add a comment to a page ```bash exponential pages comment add [options] ``` | Option | Description | |---|---| | `--page <id>` | Page ID | | `-m, --message <text>` | Comment body (markdown supported) | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `pages comment update` Update one of your own comments ```bash exponential pages comment update [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | | `-m, --message <text>` | New comment body | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `pages comment rm` Delete one of your own comments ```bash exponential pages comment rm [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | ## `products` Manage products. A workspace contains products; a product holds features and tickets. ### `products list` List products in a workspace ```bash exponential products list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace slug or CUID (defaults to configured workspace) | ### `products get` Get a product by slug or CUID ```bash exponential products get [options] <slugOrId> ``` | Argument | Required | Description | |---|---|---| | `slugOrId` | yes | | | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace (required when using a slug) | ### `products create` Create a new product ```bash exponential products create [options] ``` | Option | Description | |---|---| | `-n, --name <name>` | Product name | | `--slug <slug>` | Kebab-case slug (matches /^[a-z0-9-]+$/) | | `-d, --description <text>` | Description | | `--icon <icon>` | Icon shortcode | | `--color <color>` | Color | | `--workspace <slug\|id>` | Workspace slug or CUID | ## `projects` Manage projects ### `projects list` List all projects ```bash exponential projects list [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace slug or CUID | | `--include-actions` | Include actions in output | ### `projects get` Get one project with its objectives, key results, DRI and actions — none of which `projects list` carries. Accepts a CUID, a slug, or the slug-cuid form from app URLs. ```bash exponential projects get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `projects update` Update a project. Only the fields you pass are written; the rest are read back from the project and re-sent unchanged. ```bash exponential projects update [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Project CUID | | `-n, --name <name>` | New name | | `-d, --description <text>` | New description | | `--status <status>` | Status: ACTIVE, ON_HOLD, COMPLETED, CANCELLED | | `--priority <priority>` | Priority: HIGH, MEDIUM, LOW, NONE | | `--product <cuid\|none>` | Product to file the project under ("none" to unlink) | | `--dri <userId\|none>` | Directly responsible individual ("none" to clear) | ### `projects delete` Delete a project. Refuses while it still has actions or is linked to an objective or key result, unless --force. ```bash exponential projects delete [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Project CUID | | `--force` | Delete anyway, taking the actions and links with it | ## `search` Global search across projects, actions, goals, workspaces and more — same coverage as the app's Cmd+K palette ```bash exponential search [options] <query> ``` | Argument | Required | Description | |---|---|---| | `query` | yes | Text to search for | | Option | Description | |---|---| | `-w, --workspace <slug>` | Restrict results to one workspace (slug or ID) | | `-l, --limit <n>` | Max results per entity type (1-25, default 10) | ## `tickets` Manage product backlog tickets. Tickets live under a product, link to features/epics, depend on each other, and can be implemented via actions. ### `tickets list` List tickets in a product, or workspace-wide when --pr or --branch is supplied ```bash exponential tickets list [options] ``` | Option | Description | |---|---| | `--product <slug\|id>` | Product slug or CUID (required unless --pr or --branch is supplied) | | `--workspace <slug\|id>` | Workspace (required when --product is a slug) | | `--status <status>` | Filter by status: BACKLOG, NEEDS_REFINEMENT, READY_TO_PLAN, COMMITTED, IN_PROGRESS, BLOCKED, QA, DONE, DEPLOYED, ARCHIVED | | `--type <type>` | Filter by type: BUG, FEATURE, CHORE, IMPROVEMENT, SPIKE, RESEARCH | | `--feature <id>` | Filter by feature CUID | | `--epic <id>` | Filter by epic CUID | | `--assignee <id>` | Filter by assignee user ID | | `--pr <url>` | Workspace-wide lookup by Ticket.prUrl (exact match). Makes --product optional. | | `--branch <name>` | Workspace-wide lookup by Ticket.branchName (exact match). Makes --product optional. | | `--label <slug-or-id>` | Filter to tickets carrying this label (repeatable; AND semantics) | ### `tickets get` Show a ticket with dependencies, actions, and comments ```bash exponential tickets get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `tickets show` Alias for `tickets get` ```bash exponential tickets show [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `tickets create` Create a new ticket in a product ```bash exponential tickets create [options] ``` | Option | Description | |---|---| | `--product <slug\|id>` | Product slug or CUID | | `-t, --title <title>` | Ticket title | | `-b, --body <text>` | Body (markdown supported) | | `--type <type>` | Ticket type: BUG, FEATURE, CHORE, IMPROVEMENT, SPIKE, RESEARCH | | `--status <status>` | Initial status: BACKLOG, NEEDS_REFINEMENT, READY_TO_PLAN, COMMITTED, IN_PROGRESS, BLOCKED, QA, DONE, DEPLOYED, ARCHIVED | | `--priority <n>` | Priority 0-4 (lower = higher) | | `--points <n>` | Story points | | `--feature <id>` | Feature CUID to attach to | | `--scope <id>` | Feature scope CUID to attach to (requires --feature) | | `--epic <id>` | Epic CUID to attach to | | `--cycle <id>` | Cycle CUID to assign to | | `--assignee <id>` | Assignee user ID | | `--branch <name>` | Branch name | | `--pr <url>` | Pull request URL | | `--workspace <slug\|id>` | Workspace (required when --product is a slug) | | `--label <slug-or-id>` | Label to attach (repeatable) | ### `tickets update` Update an existing ticket ```bash exponential tickets update [options] ``` | Option | Description | |---|---| | `--id <id>` | Ticket CUID | | `-t, --title <title>` | New title | | `-b, --body <text>` | New body | | `--type <type>` | Type: BUG, FEATURE, CHORE, IMPROVEMENT, SPIKE, RESEARCH | | `--status <status>` | Status: BACKLOG, NEEDS_REFINEMENT, READY_TO_PLAN, COMMITTED, IN_PROGRESS, BLOCKED, QA, DONE, DEPLOYED, ARCHIVED | | `--priority <n>` | Priority 0-4 (or "null" to clear) | | `--points <n>` | Story points (or "null" to clear) | | `--feature <id>` | Feature CUID (or "null" to detach) | | `--epic <id>` | Epic CUID (or "null" to detach) | | `--cycle <id>` | Cycle CUID (or "null" to detach) | | `--assignee <id>` | Assignee user ID (or "null" to unassign) | | `--branch <name>` | Branch name (or "null") | | `--pr <url>` | PR URL (or "null") | | `--add-label <slug-or-id>` | Label to attach to this ticket (repeatable) | | `--remove-label <slug-or-id>` | Label to detach from this ticket (repeatable) | ### `tickets delete` Delete a ticket ```bash exponential tickets delete [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `tickets block` Mark <ticket> as blocked by another ticket ```bash exponential tickets block [options] <ticket> ``` | Argument | Required | Description | |---|---|---| | `ticket` | yes | | | Option | Description | |---|---| | `--by <id>` | Ticket CUID that must complete first | ### `tickets unblock` Remove a blocking dependency from <ticket> ```bash exponential tickets unblock [options] <ticket> ``` | Argument | Required | Description | |---|---|---| | `ticket` | yes | | | Option | Description | |---|---| | `--by <id>` | The ticket CUID that was blocking | ### `tickets link-action` Attach an existing action to a ticket ```bash exponential tickets link-action [options] ``` | Option | Description | |---|---| | `--id <id>` | Ticket CUID | | `--action <id>` | Action CUID | ### `tickets unlink-action` Detach an action from whatever ticket it is on ```bash exponential tickets unlink-action [options] ``` | Option | Description | |---|---| | `--action <id>` | Action CUID | ### `tickets comment` Manage comments on a ticket ### `tickets comment list` List comments on a ticket ```bash exponential tickets comment list [options] ``` | Option | Description | |---|---| | `--id <id>` | Ticket CUID | ### `tickets comment add` Add a comment to a ticket ```bash exponential tickets comment add [options] ``` | Option | Description | |---|---| | `--id <id>` | Ticket CUID | | `-m, --message <text>` | Comment content (markdown supported) | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `tickets comment update` Update one of your own ticket comments ```bash exponential tickets comment update [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | | `-m, --message <text>` | New comment content | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `tickets comment delete` Delete one of your own ticket comments ```bash exponential tickets comment delete [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | ## `time` Time entries — log the day's work and list it. Run with an external-agent key, the entry belongs to the agent's OWNER and is always PROPOSED; a personal token logs your own time, CONFIRMED by default. ### `time log` Log one completed entry with explicit bounds; the running Timer is never touched. With --ref the write is idempotent per owner: a re-run updates a PROPOSED entry and leaves a CONFIRMED one alone. Bulk: --from-file <path|-> takes a JSON array of entries; the other flags become its defaults. Run with an external-agent key, the entry belongs to the agent's OWNER and is always PROPOSED; a personal token logs your own time, CONFIRMED by default. ```bash exponential time log [options] ``` | Option | Description | |---|---| | `-a, --action <id>` | Action CUID the time was spent on | | `--from <iso>` | Start, e.g. 2026-09-11T09:22 | | `--to <iso>` | End, e.g. 2026-09-11T10:30 | | `--source <source>` | manual, claude-desktop, agent-run (default: manual) | | `--status <status>` | PROPOSED or CONFIRMED (ignored under an agent key: always PROPOSED) | | `--ref <sourceRef>` | Idempotency key, e.g. claude-session:<sessionId>#<segment> | | `--note <text>` | One line shown in the day view and list row | | `--from-file <path>` | Bulk log from a JSON array of entries ("-" = stdin) | ### `time list` One day's entries for the signed-in user, oldest first, each with its PROPOSED/CONFIRMED status ```bash exponential time list [options] ``` | Option | Description | |---|---| | `-d, --date <YYYY-MM-DD>` | The day (local time) | | `-w, --workspace <slug\|id>` | Only entries in this workspace (default: all) | | `--proposed` | Only PROPOSED entries | ### `time confirm` Confirm a day: every PROPOSED entry of yours that starts that day becomes CONFIRMED and the Actions' spent time moves. Human only — run it with your personal credentials; an agent key is refused. ```bash exponential time confirm [options] ``` | Option | Description | |---|---| | `-d, --date <YYYY-MM-DD>` | The day (local time) | | `-w, --workspace <slug\|id>` | Only entries in this workspace (default: all) | ### `time report` One day's report — the numbers the /time Day tab shows: attention hours (each covered minute once), session hours (the plain sum), agent-run time on its own, hours by Product and by Action with overlapping minutes split evenly, and the unassigned and proposed counts. JSON when piped or with --json. ```bash exponential time report [options] ``` | Option | Description | |---|---| | `-d, --date <YYYY-MM-DD>` | The day (local time) | | `-w, --workspace <slug\|id>` | Only entries in this workspace (default: all) | ### `time segment` Cut one conversation's messages into Worklog segments and print the batch `time log --from-file -` consumes. Input: a JSON array of {at, role} (role user|assistant), or {"messages": [...]}. A gap over 30 minutes between the person's messages ends a segment; bounds round outward to 5 minutes; assistant-only runs longer than the gap become agent-run entries. ```bash exponential time segment [options] ``` | Option | Description | |---|---| | `--from-file <path>` | Messages JSON ("-" = stdin) | | `-a, --action <id>` | Action CUID every entry is logged on | | `--ref-prefix <prefix>` | sourceRef prefix, e.g. claude-session:<sessionId>; segments get #0, #1, … | | `--gap <minutes>` | Silence between the person's messages that ends a segment (default: `"30"`) | | `--note <text>` | Note copied onto every entry | ## `workspaces` Manage workspaces ### `workspaces list` List all workspaces ```bash exponential workspaces list [options] ``` ### `workspaces set-default` Set the default workspace ```bash exponential workspaces set-default [options] <slug> ``` | Argument | Required | Description | |---|---|---| | `slug` | yes | | ### `workspaces members` List workspace members. Each row carries the exact @[Name] (id) markup to paste into a comment to mention that person. ```bash exponential workspaces members [options] ``` | Option | Description | |---|---| | `--workspace <slug\|id>` | Workspace (defaults to your default workspace) | | `--search <text>` | Filter by name or email | ## `goals` Manage goals (objectives) and their key results. Objectives have integer ids; key results are CUIDs. ### `goals list` List objectives, each with the projects linked to it — the join that ties an action (which carries a projectId) back to a goal. ```bash exponential goals list [options] ``` | Option | Description | |---|---| | `-w, --workspace <slug\|id>` | Workspace slug or ID (defaults to your default workspace) | | `--all-workspaces` | List across every workspace you belong to | | `--period <period>` | Filter by period, e.g. Q3-2026 | | `--status <status>` | Filter by status: planned, active, completed, archived, on-hold | | `--tree` | Render the parent/child cascade instead of a flat list | ### `goals get` Get an objective by its integer ID ```bash exponential goals get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `goals create` Create an objective ```bash exponential goals create [options] ``` | Option | Description | |---|---| | `-t, --title <text>` | Objective title | | `-w, --workspace <slug\|id>` | Workspace slug or ID (defaults to your default workspace) | | `--period <period>` | Period, e.g. Q3-2026 or Annual-2026 | | `--status <status>` | Status: planned, active, completed, archived | | `-d, --description <text>` | Description (markdown supported) | | `--why <text>` | Why this goal matters | | `--dri <userId>` | Directly responsible individual (user ID) | | `--parent <id>` | Parent objective ID to nest under (max depth 5) | | `--project <cuid>` | Link a project on creation | ### `goals update` Update an objective. Only the flags you pass are written — everything else is left exactly as it is. For a status change use `set-status`; to re-parent use `reparent`. ```bash exponential goals update [options] ``` | Option | Description | |---|---| | `--id <n>` | Objective ID (a number) | | `-t, --title <text>` | New title | | `-d, --description <text>` | New description ("none" clears it) | | `--why <text>` | Why this goal matters ("none" clears it) | | `--period <period>` | New period ("none" clears it) | | `--dri <userId>` | Directly responsible individual (user ID) | | `--status <status>` | Status: planned, active, completed, archived | | `--project <cuid>` | Replace the project links with this project ("none" clears them) | | `-w, --workspace <slug\|id\|none>` | Re-home the objective; "none" makes it personal | ### `goals set-status` Set an objective's status and nothing else. Routes through the status-only procedure, so no other field can be touched. ```bash exponential goals set-status [options] ``` | Option | Description | |---|---| | `--id <n>` | Objective ID (a number) | | `--status <status>` | Status: planned, active, completed, archived, on-hold | ### `goals close` Close out an objective — one command per goal when a quarter ends ```bash exponential goals close [options] ``` | Option | Description | |---|---| | `--id <n>` | Objective ID (a number) | | `--status <status>` | completed (default) or archived (default: `"completed"`) | ### `goals reparent` Move an objective under another (or detach it with --parent none). Writes the parent alone. ```bash exponential goals reparent [options] ``` | Option | Description | |---|---| | `--id <n>` | Objective ID (a number) | | `--parent <id\|none>` | New parent objective ID, or "none" to detach | ### `goals delete` Delete an objective. Refuses while it still has key results — deleting an objective deletes them too (KeyResult.goalId cascades), taking their check-in history with them. ```bash exponential goals delete [options] ``` | Option | Description | |---|---| | `--id <n>` | Objective ID (a number) | | `--with-key-results` | Delete the objective and cascade-delete its key results (destructive) | ### `goals periods` List the conventional OKR period strings ```bash exponential goals periods [options] ``` ### `goals stats` Objective and key-result counts, average progress and confidence ```bash exponential goals stats [options] ``` | Option | Description | |---|---| | `-w, --workspace <slug\|id>` | Workspace slug or ID (defaults to your default workspace) | | `--period <period>` | Period, e.g. Q3-2026 | ### `goals kr` Key results on an objective. Ids are CUIDs; --goal takes the objective's integer id. ### `goals kr list` List key results ```bash exponential goals kr list [options] ``` | Option | Description | |---|---| | `--goal <id>` | Objective ID (a number) | | `-w, --workspace <slug\|id>` | Workspace (workspace-wide: every member's KRs) | | `--period <period>` | Period, e.g. Q3-2026 | | `--status <status>` | Filter by status: not-started, on-track, at-risk, off-track, achieved | | `--mine` | Narrow a workspace list to key results you own | ### `goals kr get` Get a key result by CUID ```bash exponential goals kr get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `goals kr create` Create a key result on an objective ```bash exponential goals kr create [options] ``` | Option | Description | |---|---| | `--goal <id>` | Objective ID (a number) | | `-t, --title <text>` | Key result title | | `--target <n>` | Target value | | `--start <n>` | Starting value (default 0) | | `--current <n>` | Current value (defaults to the start value) | | `--unit <unit>` | Unit: percent, count, currency, hours, custom | | `--period <period>` | Period, e.g. Q3-2026 (defaults to the objective's) | | `-d, --description <text>` | Description | | `--dri <userId>` | Directly responsible individual (user ID) | ### `goals kr update` Update a key result (only the flags you pass are written) ```bash exponential goals kr update [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `-t, --title <text>` | New title | | `-d, --description <text>` | New description | | `--current <n>` | Current value (prefer `kr checkin` — it records history) | | `--target <n>` | Target value | | `--start <n>` | Starting value | | `--unit <unit>` | Unit: percent, count, currency, hours, custom | | `--status <status>` | Status: not-started, on-track, at-risk, off-track, achieved | | `--confidence <n>` | Confidence 0-100 | | `--dri <userId>` | Directly responsible individual (user ID) | | `--goal <id>` | Move the key result to a different objective | ### `goals kr checkin` Record a progress check-in. Moves the value AND re-derives the status from where it lands between start and target. ```bash exponential goals kr checkin [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `--value <n>` | New current value | | `--note <text>` | Check-in note | ### `goals kr delete` Delete a key result ```bash exponential goals kr delete [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | ### `goals kr link` Link executing work (a project or a feature) to a key result ```bash exponential goals kr link [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `--project <cuid>` | Project CUID | | `--feature <cuid>` | Feature CUID | ### `goals kr unlink` Unlink a project or feature from a key result ```bash exponential goals kr unlink [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `--project <cuid>` | Project CUID | | `--feature <cuid>` | Feature CUID | ### `goals comment` Read and post comments on a goal. Mention teammates with --mention. ### `goals comment list` List comments on a goal ```bash exponential goals comment list [options] ``` | Option | Description | |---|---| | `--goal <id>` | Goal ID (a number) | ### `goals comment add` Add a comment to a goal ```bash exponential goals comment add [options] ``` | Option | Description | |---|---| | `--goal <id>` | Goal ID (a number) | | `-m, --message <text>` | Comment content (markdown supported) | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | | `--parent-update <id>` | Thread under a specific goal update | ### `goals comment update` Update one of your own comments ```bash exponential goals comment update [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | | `-m, --message <text>` | New comment content | | `--mention <name>` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace <slug\|id>` | Workspace used to resolve --mention (defaults to your default workspace) | ### `goals comment rm` Delete one of your own comments ```bash exponential goals comment rm [options] ``` | Option | Description | |---|---| | `--comment-id <id>` | Comment ID | ## `okrs` OKRs — objectives with their key results nested. Manage the parts with `goals` and `goals kr`. ### `okrs list` List objectives with their key results. Defaults to the current quarter — pass --period all for every period. ```bash exponential okrs list [options] ``` | Option | Description | |---|---| | `-w, --workspace <slug\|id>` | Workspace slug or ID (defaults to your default workspace) | | `--all-workspaces` | List across every workspace you belong to | | `--period <period>` | Period, e.g. Q3-2026, or "all" for every period (default: Q3-2026) | | `--paired-period` | Also include the period's parent annual period | | `--status <status>` | Keep only key results with this status: not-started, on-track, at-risk, off-track, achieved | | `--mine` | Only objectives and key results you are the DRI for | ### `okrs stats` Objective and key-result counts, average progress and confidence ```bash exponential okrs stats [options] ``` | Option | Description | |---|---| | `-w, --workspace <slug\|id>` | Workspace slug or ID (defaults to your default workspace) | | `--period <period>` | Period, e.g. Q3-2026 | ### `okrs periods` List the conventional OKR period strings ```bash exponential okrs periods [options] ``` ### `okrs kr` Key results on an objective. Ids are CUIDs; --goal takes the objective's integer id. ### `okrs kr list` List key results ```bash exponential okrs kr list [options] ``` | Option | Description | |---|---| | `--goal <id>` | Objective ID (a number) | | `-w, --workspace <slug\|id>` | Workspace (workspace-wide: every member's KRs) | | `--period <period>` | Period, e.g. Q3-2026 | | `--status <status>` | Filter by status: not-started, on-track, at-risk, off-track, achieved | | `--mine` | Narrow a workspace list to key results you own | ### `okrs kr get` Get a key result by CUID ```bash exponential okrs kr get [options] <id> ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `okrs kr create` Create a key result on an objective ```bash exponential okrs kr create [options] ``` | Option | Description | |---|---| | `--goal <id>` | Objective ID (a number) | | `-t, --title <text>` | Key result title | | `--target <n>` | Target value | | `--start <n>` | Starting value (default 0) | | `--current <n>` | Current value (defaults to the start value) | | `--unit <unit>` | Unit: percent, count, currency, hours, custom | | `--period <period>` | Period, e.g. Q3-2026 (defaults to the objective's) | | `-d, --description <text>` | Description | | `--dri <userId>` | Directly responsible individual (user ID) | ### `okrs kr update` Update a key result (only the flags you pass are written) ```bash exponential okrs kr update [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `-t, --title <text>` | New title | | `-d, --description <text>` | New description | | `--current <n>` | Current value (prefer `kr checkin` — it records history) | | `--target <n>` | Target value | | `--start <n>` | Starting value | | `--unit <unit>` | Unit: percent, count, currency, hours, custom | | `--status <status>` | Status: not-started, on-track, at-risk, off-track, achieved | | `--confidence <n>` | Confidence 0-100 | | `--dri <userId>` | Directly responsible individual (user ID) | | `--goal <id>` | Move the key result to a different objective | ### `okrs kr checkin` Record a progress check-in. Moves the value AND re-derives the status from where it lands between start and target. ```bash exponential okrs kr checkin [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `--value <n>` | New current value | | `--note <text>` | Check-in note | ### `okrs kr delete` Delete a key result ```bash exponential okrs kr delete [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | ### `okrs kr link` Link executing work (a project or a feature) to a key result ```bash exponential okrs kr link [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `--project <cuid>` | Project CUID | | `--feature <cuid>` | Feature CUID | ### `okrs kr unlink` Unlink a project or feature from a key result ```bash exponential okrs kr unlink [options] ``` | Option | Description | |---|---| | `--id <cuid>` | Key result CUID | | `--project <cuid>` | Project CUID | | `--feature <cuid>` | Feature CUID | <!-- END AUTO-GENERATED --> --- # MCP server & SDK Section: Developers & agents · URL: https://www.exponential.im/docs/developers/mcp-and-sdk > Give Claude and other MCP clients tools over your workspace, or build your own integration with the TypeScript SDK Two ways to put Exponential inside software you already use. The **MCP server** (`exponential-mcp`) exposes your workspaces, projects, actions, meetings and goals as tools to any Model Context Protocol client, such as Claude Desktop or Claude Code, so you can ask "what is on my plate today?" in a chat and have the answer come from your real data. The **SDK** (`exponential-sdk`) is the TypeScript client both the MCP server and the CLI are built on, for when you are writing your own script or service. The MCP server signs in with an [external agent](https://www.exponential.im/docs/developers/external-agents) key, so what Claude does in your workspace is attributed to the agent rather than to you. The SDK accepts the same keys, or a JWT token from [Settings → API keys](https://www.exponential.im/settings/api-keys) when a script should act as *you*. ## Where to find it - MCP server: the `exponential-mcp` package on npm ([github.com/positonic/exponential-mcp](https://github.com/positonic/exponential-mcp)). - SDK: the `exponential-sdk` package on npm ([github.com/positonic/exponential-sdk](https://github.com/positonic/exponential-sdk)). - The key the MCP server uses: [Settings → Agents → New agent](https://www.exponential.im/settings/agents/new). ## How to connect Claude with the MCP server 1. Open [/settings/agents/new](https://www.exponential.im/settings/agents/new), name the agent (for example "Claude"), pick its workspaces and click **Create agent**. Copy the key it shows. 2. In a terminal, run the setup and paste the key when asked: ```bash npx exponential-mcp init ``` It stores the key locally and, on a Mac, writes the Claude Desktop configuration for you. Restart Claude Desktop. 3. For Claude Code, add a `.mcp.json` to the project instead: ```json { "mcpServers": { "exponential": { "command": "npx", "args": ["-y", "exponential-mcp", "serve"] } } } ``` The `serve` argument is required. Reload the window afterwards. 4. Check the setup with `exponential-mcp doctor`, which also prints a configuration snippet for your machine; `exponential-mcp config` shows where the key is stored. ### One key per app `init` stores one key that every app on your machine shares. To give Claude and Codex separate identities, create an agent for each and set its key in that app's MCP configuration — `EXPONENTIAL_API_KEY` takes precedence over the stored key. Claude (`claude_desktop_config.json` or `.mcp.json`): ```json { "mcpServers": { "exponential": { "command": "npx", "args": ["-y", "exponential-mcp", "serve"], "env": { "EXPONENTIAL_API_KEY": "exp_agent_..." } } } } ``` Codex (`~/.codex/config.toml`): ```toml [mcp_servers.exponential] command = "npx" args = ["-y", "exponential-mcp", "serve"] env = { EXPONENTIAL_API_KEY = "exp_agent_..." } ``` Restart each app afterwards. Running `init` again rewrites Claude Desktop's entry and drops its `env`, so add the key back if you re-run it. Then ask Claude: "What projects am I working on?", "Add an action to call John tomorrow", "Summarise yesterday's leadership sync", "Which key results are off track?" ## What the MCP tools do | Tool | What it does | |---|---| | `get_workspaces` | List your workspaces | | `get_projects`, `get_project`, `update_project` | List, read and update projects | | `get_actions` | List actions, filtered by project or status | | `get_todays_actions` | What is on your plate now: overdue, today and inbox, across workspaces | | `get_overdue_triage` | Why the overdue pile is that size: bulk-created cohorts versus real debt | | `create_action`, `update_action`, `complete_action` | Create (natural language works), change and finish actions | | `reschedule_actions`, `defer_actions` | Move actions to a new date, or clear their dates back to the backlog | | `get_meetings`, `get_meeting`, `create_meeting`, `update_meeting`, `append_meeting_notes` | Read and write meetings and their notes | | `get_goals`, `get_key_results` | Objectives and key results with progress | | `search` | Search across everything, like the app's ⌘K palette | Claude is told to use `get_todays_actions` rather than `get_actions` for anything about today or priorities, and to run `get_overdue_triage` before deciding what to do with a large overdue count. ## How to use the SDK ```bash npm install exponential-sdk ``` ```typescript import { ExponentialClient } from "exponential-sdk"; const client = new ExponentialClient({ token: process.env.EXPONENTIAL_TOKEN!, apiUrl: "https://<your-exponential-host>", }); const workspaces = await client.workspaces.list(); const today = await client.actions.getToday(workspaces[0]!.id); await client.decisions.create({ workspaceId: workspaces[0]!.id, statement: "Ship the importer behind a flag", status: "ACCEPTED", source: "AGENT", }); ``` The client has one namespace per object: `workspaces`, `projects`, `actions` (and `actionComments`), `goals`, `keyResults`, `meetings`, `decisions`, `calendar`, `products`, `features`, `scopes`, `requirements`, `userStories`, `tickets`, `epics`, `cycles`, `labels`, `areas`, `pages`, `contacts`, `organizations`, `pipelines` and `search`. `saveConfig` and `loadConfig` persist the token and host in the same store the CLI and MCP server use, so the three can share one sign-in. API errors are thrown; `isTRPCError(error)` tells them apart from other failures and carries the server's message. ## How it connects - **Claude integration** — what Claude can do with your workspace, on one page: [Exponential for Claude](https://www.exponential.im/features/integrations/claude). - **API tokens** — the key everything here signs in with: [API tokens](https://www.exponential.im/docs/developers/api-tokens). - **External agents** — a separate identity for autonomous software, with the same SDK: [External agents](https://www.exponential.im/docs/developers/external-agents). - **CLI** — the same SDK on the command line, every command documented in the [CLI reference](https://www.exponential.im/docs/developers/cli). - **Zoe** — the assistant inside the app has more tools than the MCP server exposes; the MCP server is for bringing your data into *other* assistants: [Zoe](https://www.exponential.im/docs/zoe/assistant). ## FAQ **Which Claude clients work?** Claude Desktop (configured by `init`) and Claude Code (via `.mcp.json`). Any other MCP client that can run a local command works with the same `serve` command. **Is the key sent to the MCP client?** No. The key stays in the local config store (or the app's MCP configuration, if you set `EXPONENTIAL_API_KEY` there); the server reads it when it starts. **Does the MCP server see every workspace?** Only the workspaces you added the agent to. Add or remove them on the agent's card under [Settings → Agents](https://www.exponential.im/settings/agents). **Can I still use a personal API token?** Yes — a JWT token from [Settings → API keys](https://www.exponential.im/settings/api-keys) works too, but then everything Claude does is attributed to you. **Can I use the SDK from Python?** Not yet. The SDK is TypeScript; other languages can call the same HTTP API with the bearer token. --- # Your settings Section: Reference · URL: https://www.exponential.im/docs/reference/your-settings > Personal preferences that follow you across every workspace: profile, notifications, navigation, appearance, connections, API keys, agents and AI Your settings are yours alone and apply in every workspace you belong to: how the sidebar is arranged, which theme you use, where notifications go, and which services and keys are connected to your account. Anything that changes a workspace for everyone lives in [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings). ![Settings → Navigation](https://www.exponential.im/doc-assets/your-settings.png) ## Where to find it Open your user menu at the bottom of the sidebar and choose **Settings**, or go to [/settings](https://www.exponential.im/settings). The tabs are grouped: **Account** (Profile, Notifications), **Workspace** (Navigation, Appearance), **Integrations** (Integrations, API keys, Agents) and **AI** (AI history, AI tools, AI assistant). ## Profile Set your **Timezone** (calendar events and working hours are interpreted in it; the page tells you what your browser reports) and see the **Connected Accounts** you can sign in with: Discord, Google and Notion can each be linked to the same account. ## Notifications Choose which notifications you get and where each one goes: push, email, Matrix, WhatsApp or Zulip. See [Notifications](https://www.exponential.im/docs/collaborate/notifications). ## Navigation The sidebar is yours to arrange: - **Drag** sections and items to reorder them. - **Click a section name** to rename it (for example, call "Deliver" "Work"). - **Toggle visibility** with the eye icon or the switch. Hidden items keep their data; nothing is deleted. - **Reset** restores the default layout. Items marked **plugin** (Products, Metrics) only appear when the workspace has that plugin on. Inbox, Today and Time are always shown. Below the layout, **Home Screen** has three switches: **Daily Inspiring Quote**, **AI Suggested Focus** and **Browse All Quotes**. ## Appearance **Color mode**: Light, Dark or System. **Dark theme style**: Navy or Slate. ## Integrations Your personal connections to other services. See [Integrations](https://www.exponential.im/docs/integrations). ## API keys Tokens that let the iOS shortcut, the browser extension, the CLI and webhooks act as you. See [API tokens](https://www.exponential.im/docs/developers/api-tokens). ## Agents External agent software you run, each with its own identity and key. See [External agents](https://www.exponential.im/docs/developers/external-agents). ## AI history A log of your AI interactions across platforms and agents: totals, error rate, average response time, and a breakdown by platform and agent, filterable by workspace and project. ## AI tools Two demonstrations: **AI Sales Demo** (AI-generated sales pages) and **AI Automation** (an overview of automation services). ## AI assistant Create a personal assistant with its own **Name**, **Emoji**, **Personality & Soul**, optional **Instructions** and **About You / Your Team** context. This page is also where you connect **Telegram** and **Matrix** to chat with your assistant, choosing which agent answers by default (Zoe or a specialist). See [Zoe](https://www.exponential.im/docs/zoe/assistant). ## How it connects - **Workspace settings** — members, features, plugins and ceremonies are per workspace: [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings). - **Notifications** — delivery preferences: [Notifications](https://www.exponential.im/docs/collaborate/notifications). ## FAQ **Will hiding a sidebar item hide it for my team?** No. Navigation is personal; each member arranges their own. **I hid something and cannot find it.** Open **Settings → Navigation** and switch it back on, or click **Reset**. **Where do I change my name or photo?** They come from the account you signed in with. Link or switch providers under **Profile → Connected Accounts**. --- # Workspace settings Section: Reference · URL: https://www.exponential.im/docs/reference/workspace-settings > Identity, members, teams, feature switches, integrations, plugins, ceremonies and weekly updates for one workspace Workspace settings apply to everyone in the workspace: who is in it, which features and plugins are on, how effort is estimated, and which recurring meetings it runs. Owners and admins can change them; members can read them. Personal preferences live in [Your settings](https://www.exponential.im/docs/reference/your-settings). ![Workspace settings](https://www.exponential.im/doc-assets/workspace-settings.png) ## Where to find it Open the workspace switcher at the top of the sidebar and choose the settings entry, or open `/w/<workspace-slug>/settings`. The tabs are **General**, **Members**, **Teams**, **Features**, **Integrations**, **Plugins**, **Ceremonies**, **Updates** (owners and admins) and, for owners, **Danger zone**. ## General | Setting | What it does | |---|---| | **Logo** | Shown in the workspace switcher. PNG or JPG up to 5 MB. | | **Name** and **Slug** | The slug is the workspace's part of every URL. | | **Type** | Personal or Team. | | **Default workspace** | Where *you* land when a link does not name a workspace. Personal to you. | | **Home layout** | Which dashboard greets you on workspace home: **Command center** (search-first, quick actions, recent work), **Activity dashboard** (contribution heatmap, feed, weekly review) or **Coaching** (weekly focus, retro and commitments). | | **Description** | Injected into every AI conversation in this workspace, so Zoe knows what the workspace is about. | | **Instructions** | Guidance Zoe receives when chatting here (preferences, where your data lives). Context, not enforced rules. Projects can add their own on top. | ## Members Invite people by email with **Invite member** and set a role: | Role | Can | |---|---| | **Owner** | Everything, including the Danger zone and changing roles | | **Admin** | Manage members, settings, features, plugins and integrations | | **Member** | Work in projects, goals and meetings | | **Viewer** | Read only | **Guests** are people with access to specific projects but no workspace role; they are listed here and managed from each project's **Access** tab. See [Workspaces](https://www.exponential.im/docs/collaborate/workspaces) for restricted projects and guests. ## Teams Create teams of members to share projects and integrations with. See [Teams](https://www.exponential.im/docs/collaborate/teams). ## Features Switches that change product behaviour for the whole workspace. Members can override their own notification switches. ### Advanced Action Features Turns on epics, sprint assignment, effort estimates and dependencies on actions. Once on, the action dialog gains **Epic**, **Sprint**, **Effort** and **Blockers** controls; turning it off hides them without deleting anything. See [Epics](https://www.exponential.im/docs/do/epics) and [Actions](https://www.exponential.im/docs/do/actions). ### Effort Estimation How the team sizes work, shown only when Advanced Action Features is on: **Story Points** (1, 2, 3, 5, 8, 13, 21), **T-shirt Sizes** (XS to XL) or **Hours** (in 30-minute steps). Changing the method does not convert existing estimates. ### Other switches | Feature | What it does | |---|---| | **Detailed Action Pages** | Full pages for actions with an activity thread, comments and a properties sidebar. Projects can override. | | **Bounties** | Bounty rewards on actions in public projects. Projects can override. | | **Daily Plan Banner** and **Weekly Plan Banner** | Reminders on the home page until the plan is done. | | **Email Notifications** | Emails on assignments and mentions. Members can turn theirs off. | | **Auto-enrich Contacts** | When a CRM contact is created, run a background search to fill in email, LinkedIn, bio and organisation. | ## Integrations The connections that belong to the workspace rather than to you, each on its own card: | Card | What it does | |---|---| | **Email Account** | Which email address agents send from when operating in this workspace. | | **Postmark** | Send the workspace's notification, CRM and broadcast emails from your own Postmark server and sender; unset means the platform default. | | **Slack** | Link a Slack channel so Zoe has workspace-wide context, and route **Slack Notifications** (needs a Slack integration under your personal settings first). | | **Zulip** | Send workspace notifications to a Zulip stream and direct-message people on assignments and mentions. | | **Matrix** | Register your own Matrix homeserver so meeting summaries can be posted into your team's rooms; the bot posts only. | | **Sentry** | File Sentry issues as Bug tickets in a product; generates the webhook URL and secret to paste into Sentry. | | **Notion** | Default Notion account and sync direction (**Pull from Notion**, **Push to Notion**, **Bidirectional**) for the workspace's projects; projects can override. | | **Fireflies** | Connect one or more Fireflies accounts for the workspace. | Personal connections (your own Slack app, WhatsApp, Telegram, calendars, GitHub repositories) are on [Settings → Integrations](https://www.exponential.im/settings/integrations); see [Integrations](https://www.exponential.im/docs/integrations). ## Plugins Turn plugins on or off for this workspace: OKRs and CRM are on by default, Product Management is off. See [Plugins](https://www.exponential.im/docs/reference/plugins). ## Ceremonies Define the workspace's recurring meetings once: cadence, participants, purpose, agenda template, and which projects each one reviews. Each date becomes an occurrence with its own agenda and captured outputs. See [Ceremonies & occurrences](https://www.exponential.im/docs/meet/ceremonies). ## Updates A resident AI copywriter drafts a short update of what shipped in the workspace each week: a headline, a one-line summary, up to three highlights and up to eight one-liners, with a link to everything else. It draws on features that went live, shipped feature scopes, finished tickets, cycle achievements and on-track goal updates. It mentions only work that actually shipped. Chores, spikes and research never appear. **Nothing is sent without approval.** Each draft is a page linked from the workspace's **Updates** page. Reviewers get it by Matrix (if they have paired it) and by email. Open the draft to edit it in the page editor, then choose one of: - **Approve**: publish the draft. Approval freezes this version, then it goes to the public page (if on), the newsletter List (if set) and the workspace's team Matrix room (if one is linked). Edits made after approval are not sent. If a channel fails, it is retried hourly and the update's banner shows what was delivered. - **Regenerate**: rewrite it, optionally with feedback such as "shorter, lead with the export fix". This replaces the page's content, including your edits. - **Skip this week**: nothing is sent for that week. If nothing user-facing shipped, there is no draft. Reviewers get a one-line note instead. | Setting | What it does | |---|---| | Weekly draft | Turns the automatic weekly draft on or off. | | When | Day, hour and time zone of the draft. Each draft covers everything since the previous one. | | Reviewers | Who gets each draft and may approve it. If none are set, the workspace's owners and admins review. | | Public page | Lists approved updates on a public page, `/updates/<workspace-slug>`, with an RSS feed. Off by default. | | Newsletter | Emails each approved update to a contact List. Every email has an unsubscribe link, and opted-out contacts are skipped. With the public page also on, visitors can subscribe there: they get a confirmation email and join the List only after they confirm. | | Voice | Writes in the personality of one of your assistants instead of the neutral house voice. | **Generate draft now** writes a draft immediately, covering everything since the last scheduled update. It is a preview: it does not change what the next scheduled draft covers. ## Danger zone Owners only: delete the workspace and everything in it. There is no undo. ## How it connects - **Members and access** — roles, invitations and guests in detail: [Members, roles & access](https://www.exponential.im/docs/collaborate/members-and-access). - **Your settings** — navigation, appearance, notifications and API keys are personal: [Your settings](https://www.exponential.im/docs/reference/your-settings). - **Projects** — several features (detailed pages, bounties, restricted access) can be overridden per project: [Projects](https://www.exponential.im/docs/do/projects). ## FAQ **I cannot change a setting.** Only owners and admins can. Ask an owner to change your role under **Members**. **Does turning a feature off delete data?** No. Estimates, epics and dependencies are kept and reappear when the feature is turned back on. --- # Plugins Section: Reference · URL: https://www.exponential.im/docs/reference/plugins > Turn OKRs, CRM and Product Management on or off per workspace Plugins are optional feature sets you switch on per workspace. Turning one on adds its pages to the sidebar and its widgets to the dashboard; turning it off hides them without deleting any data. ![The Plugins tab in workspace settings](https://www.exponential.im/doc-assets/plugins.png) ## Where to find it [Workspace settings → **Plugins**](https://www.exponential.im/go/settings/plugins): open the workspace switcher at the top of the sidebar, choose the settings entry, then the **Plugins** tab. ## What's available | Plugin | On by default | What it adds | |---|---|---| | **OKRs (Objectives & Key Results)** v1.0.0 | Yes | Key results on goals and the **OKR Progress** dashboard widget. See [OKRs](https://www.exponential.im/docs/plan/okrs). | | **CRM (Contact Management)** v1.0.0 | Yes | [**People → CRM**](https://www.exponential.im/go/crm) in the sidebar: contacts, organizations, interactions, lists and pipelines. See [Contacts](https://www.exponential.im/docs/crm/contacts). | | **Product Management** v0.1.0 | No | **Products** and **Metrics** under **Work** in the sidebar: products, features, tickets, research insights, cycles and retrospectives. See [Products, tickets, features & cycles](https://www.exponential.im/docs/build/products). | ## How to enable or disable a plugin 1. Open workspace settings and click the **Plugins** tab. 2. Find the plugin's card and flip its switch. A **Plugin Enabled** or **Plugin Disabled** message confirms it. 3. The sidebar updates for everyone in the workspace. ## How it connects - [Workspace settings](https://www.exponential.im/docs/reference/workspace-settings#plugins) — the other tabs on the same page. - [OKRs](https://www.exponential.im/docs/plan/okrs) and [Contacts](https://www.exponential.im/docs/crm/contacts) — what the two default plugins give you. - [Goals](https://www.exponential.im/docs/plan/goals) — with Product Management on, a goal gains a **Features** tab linking it to product work. ## FAQ **Does disabling a plugin delete its data?** No. Contacts, key results and product records stay where they are and reappear when you enable it again. **Can I enable a plugin for just myself?** No. Plugins are per workspace and apply to every member. **Can I add my own plugin?** Not yet — the three above are the only ones. --- # Keyboard shortcuts & the command palette Section: Reference · URL: https://www.exponential.im/docs/reference/keyboard-shortcuts > Every keyboard shortcut in the app, and the ⌘K palette that jumps anywhere, searches everything and asks Zoe Exponential has a small set of shortcuts that work everywhere, a few that belong to one screen, and a command palette that does the rest: press **⌘K** (Ctrl+K on Windows and Linux), type, and you can open any page, find any project, action or goal, or hand the question to Zoe. ## Where to find it The shortcuts are always on; nothing to enable. This page is the only list. ## Everywhere | Keys | What it does | |---|---| | **⌘K** | Open the command palette | | **⌘N** | Create an action (the same dialog as **Create Action** at the top of the sidebar) | | **⌘J** | Open or close the Zoe drawer | | **Esc** | Close the palette, a drawer or a dialog | | **⌘Enter** | Send a comment or an update from any activity thread | On a Mac ⌘ is the Command key; elsewhere use Ctrl. ## The command palette ![The command palette](https://www.exponential.im/doc-assets/command-palette.png) Press **⌘K**. The palette has five modes along the top: **All**, **Tasks**, **Projects**, **Goals** and **Ask Zoe**. - Type to search. Results are grouped by kind; **↑** and **↓** move, **Enter** opens. The search covers projects, actions, goals, workspaces and more, the same coverage as `exponential search` on the command line. - Type a page name (**Home**, **Projects**, **Tasks**, **Goals**) to jump to it in the current workspace, or a workspace's name to jump into one of its sections (Home, Goals, Projects, Products, Agent, Knowledge, Meetings, and on the desktop, Local wiki). - Switch to **Ask Zoe** (or start the query in that mode) to send what you typed to Zoe; her answer opens in the drawer. ## On particular screens | Where | Keys | What it does | |---|---|---| | Lists with a search box (projects and their Timeline, goals, pages, CRM contacts) | **⌘F** | Focus the list's search | | Docs (this site) | **/** | Open docs search | | Daily plan, "Fill task list" step | **A**, **Esc** | Open and close the add box | | Weekly plan, a project's review card | **S** | Mark the project reviewed | | Kanban boards and other drag-and-drop lists | **Space**, then **↑ ↓ ← →**, **Space** again | Pick up, move and drop an item without a mouse; **Esc** cancels | | Dialogs with a single field | **Enter** | Submit | ## How it connects - **Zoe** — the drawer behind ⌘J and the palette's Ask Zoe mode: [Zoe](https://www.exponential.im/docs/zoe/assistant). - **Actions** — what ⌘N creates: [Actions](https://www.exponential.im/docs/do/actions). - **Daily plan** and **Weekly plan** — the screens with their own keys: [Daily plan](https://www.exponential.im/docs/do/daily-plan), [Weekly plan](https://www.exponential.im/docs/reflect/weekly-plan). - **CLI** — the palette's search is the same search the CLI exposes: [CLI reference](https://www.exponential.im/docs/developers/cli). ## FAQ **Can I change the shortcuts?** Not yet. **Are there Vim-style keys for lists?** No. Lists use the arrow keys; **↑ ↓** in the palette, and the Space-plus-arrows sequence on drag-and-drop boards. **⌘K opens my browser's search instead.** Click inside the page first so the app has focus; some browsers reserve the shortcut until the page is active. --- # Self-hosting Section: Self-hosting · URL: https://www.exponential.im/docs/self-hosting > What an operator of their own Exponential installation needs to know; nothing on this page applies to exponential.im Exponential is open source and can run on your own infrastructure. Everything in the rest of these docs describes the product as a user sees it; this page is for the person operating an installation. If you use exponential.im, you can skip it. ## Where to find it The code is at [github.com/positonic/exponential](https://github.com/positonic/exponential). The operator guides live in the repository under `dev-docs/`, starting with `PRODUCTION_DEPLOYMENT_GUIDE.md`. ## What an installation consists of | Part | What it is | |---|---| | The web app | Next.js, deployed to Vercel or any Node host, backed by PostgreSQL with pgvector | | The agent service | Runs Zoe and the specialist agents; the web app talks to it over `MASTRA_API_URL` | | The WhatsApp gateway | Optional; holds linked WhatsApp sessions and relays messages to the agent service | ## Environment variables that affect what users see The complete list is validated in `src/env.js` in the repository. These are the ones that change which features appear: | Variable | Effect | |---|---| | `DATABASE_URL`, `AUTH_SECRET`, `DATABASE_ENCRYPTION_KEY` | Required. Credentials and PII are encrypted with the key; rotate it with the documented procedure, never by replacing it. | | `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET`, `AUTH_DISCORD_ID` / `AUTH_DISCORD_SECRET`, `MICROSOFT_ENTRA_ID_*`, `AUTH_POSTMARK_KEY` | Each configured provider adds a button to the sign-in page; Postmark powers the email sign-in code. | | `OPENAI_API_KEY`, `MASTRA_API_URL` | Zoe, meeting processing and the knowledge base need both. | | `WHATSAPP_GATEWAY_URL` | Enables **Connect WhatsApp**. The gateway must share the app's `AUTH_SECRET`, which signs the short-lived tokens the two exchange. Without it users see "Gateway not configured". | | `SLACK_BOT_TOKEN` on the agent service | Gives Zoe Slack tools for installations that connect one shared Slack app; users on exponential.im connect their own app from Settings → Integrations instead. | | `NEXT_PUBLIC_VAPID_PUBLIC_KEY` / `VAPID_PRIVATE_KEY` | Web push notifications. | | `UPSTASH_REDIS_REST_URL` / `UPSTASH_REDIS_REST_TOKEN` | Rate limiting for public endpoints. | | `NEXT_PUBLIC_SENTRY_DSN` | Error reporting. | | The GitHub App credentials | Enable the **GitHub Repositories** card in workspace settings. | ## Sovereign installation An installation that operates without any Exponential-controlled account or control plane, where the operator controls compute, data, keys, identity, backups and update timing. The docs use this term rather than "self-hosted" when the control boundary matters. ## How it connects - Users' guides for the features these variables switch on: [Chat gateways](https://www.exponential.im/docs/zoe/chat-gateways), [Slack](https://www.exponential.im/docs/integrations/slack), [Integrations](https://www.exponential.im/docs/integrations), [Notifications](https://www.exponential.im/docs/collaborate/notifications).