Weave is a fast, keyboard-friendly, local-first visual knowledge graph and concept mapping workspace. Designed for students, researchers, engineers, and visual thinkers who need structured concept modeling, revision mindmaps, and system architecture diagrams without cloud subscriptions or vendor lock-in.
- Zoom-Independent Crisp Typography: Labels remain readable and cleanly proportioned at any canvas scale.
- Force-Directed Physics Simulation: Dynamic spring-embedder layout engine (
L) to auto-untangle complex concept webs in real time. - Smooth Navigation: Pan with middle-mouse or
Space + Drag, ultra-responsive wheel zooming, and one-key zoom-to-fit (F). - Interactive Dot Grid: Minimalist background grid for precise spatial orientation.
-
Typed Semantic Nodes: Categorize concepts into customizable types (
process,data,event,concept,object,note,resource). -
Dynamic Property Schemas: Attach structured key-value metadata to any node with auto-injected schema fields.
-
Dedicated Markdown-ready Notes: Expand any node with deep contextual notes directly inside the floating inspector.
-
Dockable Sticky Annotations: Attach floating tag annotations to any node with 4 dock alignments (Top, Bottom, Left, Right).
- Directional Links: Support for unidirectional (
β,β), bidirectional (β), and non-directional (β) edges. - Stroke Styling: Choose between
solid,dashed, anddottedlines with custom stroke widths and interactive selection halos. - Relationship Labels & Types: Label connections with semantic verbs (
depends on,triggers,refines,informs).
-
Containment Groups: Group related concept clusters with colored boundary envelopes.
-
Interactive Resizing: Drag corner/edge resize handles with automatic membership tracking.
-
Canvas Text Callouts: Place freeform multi-line text callouts anywhere on the canvas for section headers and annotations.
- Search across node labels, contextual notes, custom key-value properties, edge labels, group titles, and canvas text.
- Instant canvas focus, camera centering, and step-through navigation across all matching entities.
- Dedicated tree view with live directory watching (
QFileSystemWatcher). - Effortless multi-file navigation, inline file renaming, deletion safety guards, and folder scoping.
- Two-Machine Personal Sync: Sync your workspace across devices using your existing local Git configuration (SSH keys / credentials).
-
Safe Rebasing: Automatic stage
$\to$ commit$\to$ pull rebase$\to$ push workflow with conflict protection. No third-party servers required.
.weave(Standard JSON): Clean, transparent, version-control friendly JSON structure..bweave(Compressed Binary): Fast binary format withzlibcompression (level 9) for compact storage and instant loading of large graphs.
- Seamless theme switching (
T) with contrast-aware color palette containing 31 curated tones. - Floating inspector and UI elements dynamically recalibrate for maximum readability in both bright and dark environments.
- Export diagrams to PNG, JPG, or scalable vector SVG.
- Configurable scale multipliers (up to 8.0Γ), adjustable margins, and custom background options (Theme, Light, Dark, Transparent).
- Python 3.10+
- Git (optional, required only for the Git Sync feature)
-
Clone the repository:
git clone https://github.com/yourusername/weave.git cd weave -
Create a virtual environment (recommended):
python -m venv venv # On Windows: venv\Scripts\activate # On Linux / macOS: source venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Launch Weave:
python main.py
| Action | Shortcut | Description |
|---|---|---|
| Add Node | N |
Prompts for a label and creates a node at canvas center |
| Connect Nodes | C |
Initiates connection mode from the selected node |
| Physics Simulation | L |
Toggles the real-time force-directed physics layout engine |
| Deep Search | Ctrl + F |
Opens the search bar to query nodes, properties, and notes |
| Fit to View | F |
Centers and frames all graph items in the viewport |
| Toggle File Explorer | Ctrl + E |
Expands or collapses the left workspace file tree |
| Toggle Inspector | Ctrl + B |
Expands or collapses the right floating properties sidebar |
| Toggle Theme | T |
Switches between Light and Dark themes |
| Copy / Paste | Ctrl + C / Ctrl + V |
Duplicates selected nodes, groups, and canvas text |
| Save Graph | Ctrl + S |
Saves changes to the active .weave or .bweave file |
| Save As | Ctrl + Shift + S |
Saves graph under a new filename/format |
| Open File | Ctrl + O |
Opens a file picker for .weave, .bweave, or .json files |
| Git Sync | Ctrl + Alt + S |
Executes sync sequence with the linked Git remote |
| Delete Selected | Delete / Backspace |
Removes selected nodes, edges, groups, or text items |
| Pan Canvas | Space + Drag or Middle Click |
Pans smoothly across the infinite canvas |
| Zoom Canvas | Mouse Wheel |
Zooms in/out centered at cursor position |
Weave/
βββ main.py # Application entry point, MainWindow, menus, and overlay host
βββ canvas.py # GraphScene, CanvasView, NodeItem, EdgeItem, NodeGroup, CanvasText
βββ ui.py # Floating Sidebar inspector, SearchBar, SettingsDialog, FileExplorer
βββ config.py # Global configuration, theme definitions, schema, and defaults
βββ colorpalette.py # Theme-aware 31-swatch color palette and contrast calculator
βββ gitsync.py # Git CLI wrapper for conflict-safe two-machine synchronization
βββ utils.py # Shared UI color helpers and theme utilities
βββ logo.ico # Application icon
βββ requirements.txt # Python dependencies
βββ README.md # Project documentation
Weave can be compiled into a high-performance native Windows executable using Nuitka.
Ensure you have a C compiler installed (such as MSVC via Visual Studio Build Tools or MinGW64).
pip install -r requirements.txtpython -m nuitka --standalone --enable-plugin=pyqt5 --windows-disable-console --windows-icon-from-ico=logo.ico --include-data-file=logo.ico=logo.ico --output-filename=Weave.exe --output-dir=dist main.pypython -m nuitka --onefile --enable-plugin=pyqt5 --windows-disable-console --windows-icon-from-ico=logo.ico --include-data-file=logo.ico=logo.ico --output-filename=Weave.exe --output-dir=dist main.pyThe generated executable will be placed in the dist/ directory.
Weave graphs are stored in clean, human-readable JSON:
{
"nodes": [
{
"id": "n1",
"label": "Distributed Consensus",
"x": 120.0,
"y": -85.0,
"node_type": "concept",
"color": "#7b1fa2",
"notes": "Raft vs Paxos comparison notes...",
"sticky_text": "Exam Priority βββ",
"sticky_visible": true,
"sticky_dock": "top",
"properties": {
"difficulty": "Hard",
"pyq_frequency": "High"
}
}
],
"edges": [
{
"id": "e1",
"source": "n1",
"target": "n2",
"label": "implements",
"direction": "β",
"edge_type": "relationship",
"line_style": "solid",
"color": "#adb5bd"
}
],
"groups": [],
"texts": [],
"schema": {
"node_types": {},
"edge_types": {},
"property_schema": {}
}
}- Undo / Redo Stack: Complete history rollback using
QUndoStack. - Node Cross-Linking & Backlinks: Wiki-style
@mentions and bidirectional cross-referencing. - Curved / Bezier Edge Routing: Orthogonal and Bezier spline routing for complex diagrams.
- CSV / Markdown Table Import & Export: Quick tabular import of flashcard and revision decks.
- Background Asynchronous Sync: Non-blocking worker threads (
QThread) for heavy I/O operations.
Contributions, issues, and feature requests are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under a Source-Available & Non-Commercial License.
- Permitted: Viewing, learning, personal non-commercial use, academic evaluation, and personal experimentation.
- Prohibited: Commercial exploitation, reselling, rebranding, sublicensing, or distributing as a paid product/service.
See the LICENSE file for complete terms and restrictions.



