Atlas Thinking Workspace

Source: /Users/nitishchauhan/Downloads/Cursor-Extension-Technical-Specification---Google-Gemini---httpsgemini.google.comapp80f5cea89d2a9005.md
Phase: final
Index: Index - Atlas Thinking Workspace Technical Specification
Trajectory: Trajectory - Inner Map
Pipeline: CONSTITUTION - Publishable Asset Pipeline · 00 - Master Index
Status: draft


Where this one actually started

Not with “what if AI had a nicer UI.”

It started with a pile of features already large enough to lie, and a director demand: go through every document, name the intent under each feature, keep phase order honest, then do it again until nothing implementation-critical is still floating. The short version of the human prompt was basically: are you sure?

That question is the product philosophy in miniature. Atlas is not defined by how many surfaces it can spawn. It is defined by what it refuses to become under implementation pressure: another scrolling chat client with spatial stickers glued on.

What follows is the philosophy and architecture spine from that TRD pass. Feature density stays only where it proves the intent.


Atlas is not a chat client

Vision statement kept as written:

Atlas is not another AI chat client. It is a Thinking Workspace engineered to remove cognitive friction while preserving the natural flow of human thought.

Three principles decide later product calls. If a feature fights these, it does not ship as “core.”

Principle 1: Conversation is non-linear

Human reasoning branches: side explorations, tangential definitions, parallel comparisons. Atlas embraces spatial branching instead of forcing a single scrolling transcript.

Principle 2: Capture never interrupts thinking

Quick spawns, temporary scratchpads, gesture tears: zero configuration steps, no modal delay tax. If capture requires setup, the thought already left.

Principle 3: The computer organizes; the human thinks

Metadata tagging, title generation, folder structuring, relationship tracking, session compression: autonomous background work. The human stays in the reasoning loop, not the filing loop.

                  ┌─────────────────────────────────────────┐
                  │              ATLAS ENGINE               │
                  │       (The Thinking Workspace)          │
                  └────────────────────┬────────────────────┘
                                       │
         ┌─────────────────────────────┼─────────────────────────────┐
         ▼                             ▼                             ▼
┌─────────────────┐           ┌─────────────────┐           ┌─────────────────┐
│   PRINCIPLE 1   │           │   PRINCIPLE 2   │           │   PRINCIPLE 3   │
│ Conversation is │           │  Capture Never  │           │ Computer Organ- │
│   Non-Linear    │           │   Interrupts    │           │  izes; Human    │
│  (Parallelism)  │           │    Thinking     │           │     Thinks      │
└─────────────────┘           └─────────────────┘           └─────────────────┘

The ban that protects the product

To eliminate architectural refactoring later: do not build Atlas around a traditional chat schema.

Internal hierarchy:

Session → Workspace → Objects → Messages / content elements

  • Session: master container for a discrete working state. Workspace coordinates, metadata, export records, memory graphs.
  • Workspace: the 2D spatial canvas rendering active elements.
  • Objects: any floating item on the workspace. Chat is one subclass of Object.
  • Messages: data items inside Chat objects.

That ban is not pedantry. If Chat is the root noun, everything else becomes a plugin forever. If Object is the root noun, chat, PDF, browser, whiteboard, todo, table, sticky, and link collection share one canvas physics and one session lifecycle.

Foundation choice in the TRD: fork a local-first open-source UI (OpenMLC or Hugging Face Chat UI) so Markdown, streaming, and provider plumbing are not reinvented. Providers: OpenRouter, OpenAI, Anthropic, Google Gemini, local models via Ollama.

Responsiveness constraint (Cursor instruction): extreme responsiveness over raw feature density. Interactions must feel instantaneous at 60 FPS. UX should feel like lightweight desk cards, not heavyweight desktop windows.


Dual modes: hierarchy when you need it, space when you don’t

One toolbar toggle. Two thinking geometries.

ModeIntentStructure
Conversation ModeDeep analytical reasoning where logical hierarchy mattersTree: main → 1.1 side exploration → 1.1.1 deep dive
Workspace ModeUnstructured exploration and high-level synthesis2D canvas: objects float, resize, position freely

Canvas engine behaviors that serve those modes:

  • Free mode and auto-repulsion: overlap like real desk clutter when free; subtle physics when auto-repulsion is on so objects do not fully bury each other.
  • Auto arrange: one shortcut into grid or side-by-side comparison columns.
  • Minimap camera flight: corner overview; click flies the camera to that bubble.
  • Session map sidebar and thread labels: list of open bubbles; labels like main, side note, research, definition check.

Chat is one object among ten

Unified base class. Ten workspace objects:

  1. Chat bubble
  2. Markdown editor
  3. Browser (sandboxed)
  4. PDF viewer (highlight extraction)
  5. Image viewer
  6. Todo checklist
  7. Whiteboard
  8. Table / spreadsheet
  9. Link collection
  10. Floating sticky notes (zero-token local scratchpads)

Bubble state that actually matters

Per chat bubble, not global app chrome:

  • Independent model selection (Claude on A, local Ollama on B, another model on C).
  • Context isolation by default (fresh context window; cross-bubble injection only on demand).
  • Category badges and auto color for glanceable workspace literacy.
  • Importance tags: Important (long-term export), Normal, Disposable (excluded from permanent memory).
  • Live status: Active, Thinking, Idle, Background Agent.
  • Bubble memory: scroll, collapsed messages, selection, cursor, zoom.
  • Bubble timer: quiet active-time tracking for time-allocation analytics.

Gestures are the branching API

Spatial interactions are not decoration. They are how thought forks without opening a settings panel.

  • Throw bubble: drag outward from a message or selection with a stretch visual; release spawns a new floating chat carrying that selection.
  • Shared clipboard (cross-chat drag): grab a response card from Bubble A, drop into Bubble B as a quoted reference block.
  • Pin-to-main: pin from a side bubble embeds into the primary thread with an interactive backlink.
  • Park and hover preview: flick toward top edge docks the bubble; hover shows prompt count and activity without full expand.
  • Magnetic snapping: drag near another bubble for split-screen comparison.
  • Promote to primary: reassign which bubble owns the session main thread.
  • Snapshot: frozen read-only clone so later edits cannot destroy a good state.
  • Relationships: drag one bubble onto another for a visual link without graph-editor theater.

Input that protects flow

ShortcutAction
Cmd/Ctrl + KUniversal command palette
Cmd/Ctrl + NQuick spawn: floating chat, input already focused
Opt + EnterADHD spawn: parallel bubble beside current without losing typing flow
Double SpaceTemporary scratch bubble: closes = destroyed, no storage write
Cmd/Ctrl + WClose active bubble without confirmation modal

In-chat controls that keep threads readable: collapsible answers; multi-level summaries (Headline / Key Points / Full); message numbering; timestamps; bookmarks and question markers; live in-bubble search.


Workers and memory: separate computation from conversation

Chat UI must not own background cognition. Seven autonomous workers read shared session data:

  1. Historian - temporal progression, focus durations, topic shifts
  2. Scout - links, docs, API parameters
  3. Compression - context distillation
  4. Summarizer - ongoing session summaries
  5. Question extractor - open questions into a central panel
  6. Relationship detector - suggests visual links between related bubbles
  7. Background research agent - long-running synthesis in minimized bubbles; toast on complete

Shared session memory indexes ten entity types: Questions, Insights, Projects, People, Files, Links, Models Used, Exports, Concepts, Open Loops.

Compression is product, not cleanup

Raw session data is not the durable unit.

Raw Session Data → Daily → Weekly → Monthly → Quarterly → Yearly dense knowledge

Live compression panel updates key questions, themes, decisions, and open loops during use. Long-term jobs densify daily digests upward. The point: knowledge gets denser over time, not infinitely larger.


Close the loop: search, replay, export

Universal search across questions, bubble transcripts, people/projects/links, exports and archives.

Session navigation: flat ids (S1, S2) and hierarchical tree ids; human-readable names from first prompt (Electron Setup, Python Script); bottom timeline of spawn/return events; workspace replay that restores panel geometry, zoom, and scroll as first-class product behavior, not a nostalgic screenshot.

Session closure workflow: closing the primary bubble offers close-session. On confirm: save, compress, export.

Example export directory:

Morning Research/
├── S1.md
├── S2.md
├── S3.md
├── summary.md
├── questions.md
├── session.json
└── workspace.json

Formats: Markdown (with color tags and backlinks), JSON (raw session and positions), PDF, workspace snapshot image. Local, proprietary-free durable artifacts.


Build order so philosophy survives Cursor

The TRD’s phase sequence is itself a product claim: schema and canvas before gesture theater; workers and compression after the object model is real.

PhaseTargetDeliverables
1Core schema and foundationOpenMLC/HF Chat UI fork; Session/Workspace/Object/Message/MemoryItem; IndexedDB + local file bridges
2Spatial canvas60 FPS pan/zoom/drag/resize; Conversation vs Workspace toggle; minimap, repulsion, snap, dock, replay
3Bubble engine and objectsTen object types; multi-model, badges, colors, importance, viewport memory, timers; Cmd+K / Cmd+N / Opt+Enter / Double-Space
4Gestures and cross-data flowThrow, card drag-drop, pin-to-main, park; hover preview, snapshot, relationships
5Workers and memoryIsolated worker architecture; seven workers; ten-entity session memory
6Compression and exportLive compression panel; distillation ladder; universal search; multi-format export

System data flow (kept tight): user input (canvas / shortcuts / gestures) → Electron/React canvas engine (60 FPS, Zustand) → Object Manager + AI Router → local storage and background workers → local filesystem exports.


Feature summary as intent map

ModuleCore featureUnderlying intent
PhilosophyObject-first schemaAvoid rigid chat constraints
ModesDual modesStructured reasoning and spatial thought
CanvasMinimap flightNavigate without hunting
CanvasWorkspace replayReconstruct past thinking geometry
ObjectsTen workspace objectsOne canvas environment for thinking tools
BubblesMulti-model per bubbleCompare models without global mode switches
BubblesBubble memoryView state is part of cognition support
InputsADHD spawnBranch without focus loss
InputsTemporary scratchCuriosity without permanent clutter
GesturesThrow bubbleThought branching as a body motion
GesturesShared clipboardCross-pollinate without copy ritual
GesturesPin-to-mainElevate findings into the main thread
WorkersSeven AI workersBackground processing without UI lag
MemoryKnowledge compressionPrevent infinite transcript bloat
ExportClean directory exportLocal, legible ownership of the work

What this thread was really hunting

Not a longer feature list.

A completeness-safe architecture that:

  1. Forbids chat-schema gravity.
  2. Makes capture cheaper than interruption.
  3. Treats compression and export as core modules, not end-of-sprint leftovers.
  4. Orders implementation so the desk-card feel and the object model land before agent theater.

If Atlas ships as a pretty multi-pane ChatGPT, the documents failed. If it ships as a session-first workspace where chat is one object among many, and the computer quietly densifies what you already thought, the philosophy held.

That is the standard the “are you sure?” pass was for.