by dovvnloading
A private, modular node based AI workspace for thinking and creation. Seamlessly connect to Ollama, OpenAI, Gemini, Anthropic, and Groq models in one unified, node-based interface for reasoning, visualization, and exploration — all running locally or via API.
# Add to your Claude Code skills
git clone https://github.com/dovvnloading/Graphite
Graphite is an advanced desktop environment for human–AI collaboration. It transforms ordinary chat into a visual reasoning space, where ideas branch, connect, and evolve. Built with Python and PySide6, it seamlessly integrates Ollama, OpenAI, Gemini, Anthropic, and Groq models—offering a secure, local-first, and deeply intuitive workspace for research, creation, and thought.
Traditional chatbot interfaces confine conversations to a single, chronological timeline. This linear format stifles creativity and makes it difficult to revisit, branch, or organize complex lines of thought.
Graphite solves this by treating every conversation as an interactive mind-map on an infinite canvas. Each prompt and response becomes a distinct node, visually connected to form a branching graph of your entire dialogue. This unique approach allows you to trace the evolution of ideas, explore multiple paths from any point in the conversation, and build a rich, interconnected knowledge base—all while ensuring your data remains completely private on your local machine.
matplotlib charts (Bar, Line, Pie, Histogram, and Sankey) directly on the canvas.Graphite is built on a modern, modular architecture designed for maintainability and scalability. The application is written in Python 3 and leverages the PySide6 framework for its cross-platform graphical user interface. The core principle is a clear separation of concerns, decoupling the UI, core logic, and AI services.
The project is organized into the following key modules:
graphite_app.py: The main application entry point. It contains the primary ChatWindow class, which orchestrates the entire application, assembling the UI, initializing backend services, and handling main event loops.
graphite_ui.py: The complete User Interface layer. This module contains all Qt-based components, from the main window's structure to custom dialogs (APISettingsDialog, ChatLibraryDialog). It also defines all custom-rendered QGraphicsItem subclasses that make up the interactive canvas, including ChatNode, ConnectionItem, Frame, Note, and ChartItem.
graphite_core.py: The application's central nervous system, managing state and data persistence.
ChatSessionManager handles the complex logic of serializing the entire scene graph (nodes, connections, frames, etc.) into a JSON format and deserializing it back into a live session.ChatDatabase class provides an interface to the local SQLite database, managing the storage and retrieval of saved chat sessions.graphite_agents.py: This module isolates all logic related to AI-powered tasks. It contains the base ChatAgent for conversations and specialized "tool" agents like KeyTakeawayAgent, ExplainerAgent, and ChartDataAgent. Each agent runs its network requests within a dedicated QThread worker to ensure the UI remains responsive.
api_provider.py: A crucial abstraction layer that unifies communication with different AI model providers. It acts as a router, directing requests to either a local Ollama instance or any OpenAI-compatible remote API based on the user's configuration. This module makes the core application agnostic to the underlying LLM service.
graphite_config.py: A centralized file for storing global configuration constants. It defines abstract task identifiers (e.g., TASK_CHAT, TASK_CHART) and default model names, providing a single source of truth for application-wide settings.
Follow these steps to get Graphite running on your local machine.
Before running Graphite, you need to pull a model for Ollama to use. The default is qwen2.5:7b-instruct. Open your terminal and run:
ollama pull qwen2.5:7b-instruct
You can use the in-app Model Selection dialog to choose and validate other models. Ensure the Ollama application is running in the background.
Clone the repository:
git clone https://github.com/dovvnloading/Graphite.git
cd Graphite
Create and activate a virtual environment (recommended):
# For Windows
python -m venv venv
.\venv\Scripts\activate
# For macOS/Linux
python3 -m venv venv
source venv/bin/activate
Install the required Python packages:
pip install -r requirements.txt
(If a requirements.txt is not available, install manually: pip install PySide6 ollama matplotlib qtawesome)
Once the setup is complete, launch the application by running:
python graphite_app.py
Ctrl + F: Create a Frame around selected nodes.Ctrl + N: Create a new Note at the cursor's position.Delete: Delete any selected item (node, frame, note, eNo comments yet. Be the first to share your thoughts!