Skip to content

ThinkEx-OSS/thinkex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

979 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ThinkEx

Try ThinkEx · Features · Self-Host · Contribute

The Problem

Today's apps and AI split what should be a single, fluid process: AI reasoning happens in isolated chat threads, while your information is scattered across tabs and windows.

This split prevents knowledge from compounding. Each conversation starts from scratch. Insights don't connect to your existing work. You can't build on past thinking. Valuable insights get buried in chat history, and you find yourself explaining the same context repeatedly. Information disappears into logs you never revisit.

ThinkEx solves this by making context explicit, organized, and persistent.

What is ThinkEx?

ThinkEx is a visual thinking environment where notes, media, and AI conversations compound into lasting knowledge.

Think of a large desk where you spread out textbooks, notes, and papers to work. You look back and forth, connecting dots, comparing sources, and asking questions. ThinkEx brings that desk to your browser, where AI can help alongside you.

  1. See Everything: Bring PDFs, videos, and notes onto a visual canvas. Organize them spatially to make sense of the information.
  2. Compare Sources: Look across your sources side-by-side. Spot patterns and contradictions that only emerge when everything is visible.
  3. Targeted Reasoning: Select specific items on your desk for the AI to analyze. Point to a note and a paragraph and ask for the connection.
  4. Capture Insights: Extract findings into structured knowledge that become part of your permanent workspace.

Features

  • User-Controlled Context: Manually select exact cards, notes, or document sections for the AI. No opaque retrieval mechanisms.
  • Spatial Canvas: Arrange notes, PDFs, videos, and chat side-by-side.
  • First-Class Media: Native PDF viewing with highlights; YouTube videos with transcript-backed context.
  • Persistent Knowledge: Saved cards (notes, flashcards, references) remain in your workspace.
  • Multi-Model: Switch AI models per task without locking into a single provider.
  • Sharing: Share or export workspaces with others

Why Existing Tools Fall Short

Approach Examples What It Loses
Chat-First ChatGPT, Gemini, Claude Insights vanish into endless scroll and context resets every conversation.
Notes-First Notion, Obsidian AI is bolted on and isolated from your info.
Retrieval-First NotebookLM Sources are trapped behind the interface where you can't see or work with them.

ThinkEx is different

Nothing disappears into a black box. You see what AI sees and control what it works with. And it's open source, so you get full transparency, no model lock-in, and a product driven by the community.

Tech Stack

Self-Hosting

ThinkEx can be self hosted for local development. The setup uses Docker for PostgreSQL (recommended) while running the Next.js app locally.

Quick Start

Prerequisites

  • Node.js (v20+)
  • pnpm (will be installed automatically if missing)
  • Docker (recommended for PostgreSQL) OR PostgreSQL (v12+) installed locally
  • Required API Keys:
    • Google AI: API key from Google AI Studio
      • GOOGLE_GENERATIVE_AI_API_KEY
    • Assistant UI: API key and base URL from Assistant Cloud
      • NEXT_PUBLIC_ASSISTANT_BASE_URL
      • ASSISTANT_API_KEY
  • Optional API Keys:
    • Google OAuth: Get credentials from Google Cloud Console (for OAuth login)
      • GOOGLE_CLIENT_ID
      • GOOGLE_CLIENT_SECRET
    • Supabase: Project URL and keys from Supabase (for file storage, alternative to local storage)
      • NEXT_PUBLIC_SUPABASE_URL
      • NEXT_PUBLIC_SUPABASE_PUBLISHABLE_OR_ANON_KEY
      • SUPABASE_SERVICE_ROLE_KEY

Automated Setup

Run the interactive setup script:

git clone https://github.com/ThinkEx-OSS/thinkex.git
cd thinkex
./setup.sh

The script will:

  • Check prerequisites (Node.js, pnpm, Docker)
  • Create .env file from template
  • Generate BETTER_AUTH_SECRET automatically
  • Start PostgreSQL in Docker (or use local PostgreSQL if Docker is not available)
  • Configure database connection
  • Install dependencies
  • Initialize the database schema
  • Start the development server automatically

Access ThinkEx at http://localhost:3000

PostgreSQL Docker Commands:

  • Stop PostgreSQL: docker-compose down
  • Start PostgreSQL: docker-compose up -d
  • View logs: docker-compose logs -f postgres

Manual Setup

  1. Clone the repository

    git clone https://github.com/ThinkEx-OSS/thinkex.git
    cd thinkex
  2. Start PostgreSQL (Docker)

    docker-compose up -d postgres

    Or use your local PostgreSQL installation.

  3. Install dependencies

    pnpm install
  4. Configure environment variables

    cp .env.example .env

    Edit .env and configure:

    • Database: Set DATABASE_URL to your PostgreSQL connection string
    # For Docker PostgreSQL:
    DATABASE_URL=postgresql://thinkex:thinkex_password_change_me@localhost:5432/thinkex
    
    # For local PostgreSQL:
    DATABASE_URL=postgresql://user:password@localhost:5432/thinkex
    • Better Auth: Generate BETTER_AUTH_SECRET with openssl rand -base64 32
    • Google OAuth: Get credentials from Google Cloud Console
    • Supabase: Your Supabase project URL and keys (for file storage, if using Supabase storage)
    • Google AI: API key from Google AI Studio
  5. Initialize the database

    pnpm db:push
  6. Start the development server

    pnpm dev
  7. Access the application Open http://localhost:3000 in your browser.

Storage Configuration

ThinkEx supports two storage backends for file uploads:

Option 1: Local File Storage (Recommended for Self-Hosting)

  • Set STORAGE_TYPE=local in your .env file
  • Files are stored in the ./uploads directory
  • No external dependencies required
  • Simple setup with full control over your data

Option 2: Supabase Storage (Cloud-based)

  • Set STORAGE_TYPE=supabase in your .env file
  • Configure Supabase credentials:
    • NEXT_PUBLIC_SUPABASE_URL: Your Supabase project URL
    • NEXT_PUBLIC_SUPABASE_PUBLISHABLE_OR_ANON_KEY: Anon key from Supabase
    • SUPABASE_SERVICE_ROLE_KEY: Service role key from Supabase
  • Create a storage bucket named file-upload and set it to Public

Contributing

We welcome contributions.

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/new-feature
  3. Commit changes: git commit -m 'Add new feature'
  4. Push to branch: git push origin feature/new-feature
  5. Open a Pull Request.

See CONTRIBUTING.md for details.

License

This project is licensed under the AGPL-3.0 License.

About

Rethinking the User Interface of AI

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 10

Languages