README.md
July 10, 2026 ยท View on GitHub
Visual Programming Platform for Algorithm & AI Workflow Development
๐จ๐ณ ไธญๆ | ๐ฌ๐ง English | ๐ Documentation | ๐ฅ Demo Video
A modern low-code visual programming platform built on NodeGraphQt and qfluentwidgets, supporting drag-and-drop component orchestration, asynchronous execution, file operations, control flow logic, and one-click export of workflows into standalone, executable projectsโenabling seamless transition from development to deployment.





๐ Why Choose CanvasMind?
| Traditional Low-Code Tools | CanvasMind |
|---|---|
| Static component assembly | Dynamic expressions + global variables drive parameters |
| Only serial execution | Full conditional branching, iteration, and loops |
| No custom logic | Embedded code editor for writing Python components freely |
| Execution = endpoint | One-click export to standalone projects (API, CLI, Docker) |
| AI disconnected from canvas | Deep LLM integration: yellow jump / purple create buttons for canvas-aware intelligent completion |
| Fixed Runtime Environment | Supports remote execution via SSH: Features integrated Python environment management for SSH servers and supports dispatching nodes to the server-side for execution. |
| No Trigger Node or Hard-coded Trigger Options | Extensible Plugin Trigger System: Decoupled architecture allowing dynamic loading of Cron, Webhook, and File-watchers; UI auto-syncs with backend logic |
๐ Key Features
๐ Complex Form & Tree Control Widget ๐ณ
- Dynamic Property Grid โ Render adaptive UI controls (text fields, numeric inputs, file selectors, toggles, sliders) based on parameter data types and validation rules
- Hierarchical Property Tree โ Organize nested configurations into expandable/collapsible tree structures with drag-and-drop reordering for complex workflows
- Context-Aware Validation โ Apply real-time validation logic based on parameter dependencies (e.g., enabling/disabling fields based on toggle states)
- Interactive Tree Navigation โ Context menus and visual indicators for managing parent-child relationships in hierarchical data structures

๐ช Multi-View Splitting ๐ฐ๏ธ
- Recursive Viewport Splitting โ Split the canvas horizontally or vertically to monitor distant parts of a large-scale graph simultaneously.
- Synchronized Scene State โ All viewports share the same live scene. Editing a node in one view reflects instantly across all others, enabling high-efficiency cross-node referencing.
- Distant Node Tracking โ Ideal for complex pipelines where you need to watch the "Source Node" parameters in one view while observing the "Terminal Output" behavior in another.

โก Distributed & Hybrid Execution Engine
- Parallel DAG Execution โ Independent branches are executed concurrently via a high-performance task scheduler, maximizing CPU/GPU utilization across the workflow.
- Hybrid Runtime Orchestration โ Supports seamless mixing of execution environments:
- Interactive IPython Kernel: Leveraging local persistent sessions for rapid debugging and state retention.
- Remote SSH Workers: Transparently dispatching heavy-compute nodes (e.g., Model Training/Inference) to high-performance servers with automated environment syncing.
- Selective In-Memory Persistence (Caching) โ Users can toggle "Pin to Memory" for specific nodes; results are cached in the active process RAM to eliminate redundant re-computation and I/O overhead during iterative tuning.
- Intelligent Topological Dispatch โ Automatically resolves dependencies and routes tasks to the optimal target (Local/Remote/IPython) based on node configuration.
- Unified State Management โ Real-time visualization of node status (Queued / Running / Success / Failed) across all distributed workers on a single canvas.
- High-Speed Data Serialization โ Utilizes
pyarrowandpicklefor low-latency data transfer between local and remote environments.
๐ง Intelligent Node Recommendation โจ
- Type-Aware Suggestions โ Automatically match compatible downstream components based on output port types
- Multi-Port Grouping โ Recommendations grouped by source port for clarity
- Visual Differentiation โ Color-coded suggestions per port type
- Cross-Canvas Learning โ Tracks component connection frequency to improve recommendations over time
๐ค LLM-Chatter: Intelligent Coding Assistant
A powerful built-in coding assistant with OpenCode-style agent architecture and comprehensive tool system.
๐ง Agent System
- Multi-Agent Support: Primary agents for main tasks, Subagents for parallel subtasks, Hidden agents for background operations
- Permission System: Fine-grained tool permission control per agent (allow/deny/ask)
- Flexible Configuration: Define agents via Markdown (YAML frontmatter) or YAML files
- Agent Profiles: Support for custom temperature, top_p, max_steps, model selection per agent
๐ ๏ธ Comprehensive Tool Suite (30+ Tools)
| Category | Tools |
|---|---|
| File Operations | read, write, edit, multiedit, patch, grep, glob, list, diff_files |
| Terminal | bash, run_verify |
| Web | webfetch, websearch |
| Code Analysis | get_diagnostics (Python/JS/TS/Shell) |
| Task Management | todowrite, todoread, ask_question |
| Skills | skill, list_skills, scan_repo, stage_files |
| Memory | memory_list, memory_search, memory_save, memory_consolidate |
| Canvas Integration | list_webhooks, trigger_webhook |
| Sub-Agents | task (distribute work to build/plan/skillful/explore agents) |
๐พ Long-Term Memory System
- Persistent Context: Save key facts across sessions with confidence scores
- Conflict Management: Group memories to auto-suppress outdated information
- Category-based Organization: Task preferences, project constraints, user habits
- Auto-Consolidation: Extract important facts from conversations automatically
๐จ Canvas-Aware Integration
- Canvas Tools: Run nodes, get logs, create nodes, connect ports, set properties, edit property strings
- Context Injection: Automatic canvas image + node structure + global variables
- Yellow Jump Buttons: Click to navigate to referenced nodes on canvas
- Purple Create Buttons: One-click instantiation of recommended components
- Execution State: Query running tasks, failed nodes, logs in real-time
โจ Advanced Features
- Conversation Preview: Rich message cards with code syntax highlighting
- Context Usage Ring: Visual token budget monitoring
- History Management: Search past conversations, auto-summarize topics
- File Undo Preview: Review changes before applying via diff viewer
- Tool Floating Panel: Real-time tool call status display
- Sub-Agent Manager: Coordinate parallel task execution
๐ Advanced Control Flow โจ
- Conditional Branching โ Enable/disable branches based on
$...$expressions (if/elselogic) - Iteration โ Loop over lists or arrays, executing subgraphs per element
- Loop Control โ Fixed-count or condition-driven loops
- Dynamic Subgraph Skipping โ Entire downstream subgraphs of inactive branches are skipped for efficiency
- Expression-Driven Logic โ Branch conditions, loop counts, etc., support dynamic expressions
๐ Global Variables & Expression System โจ
- Structured Scopes โ Three variable scopes:
env(environment),custom(user-defined), andnode_vars(node outputs) - Dynamic Expressions โ Use
$env_user_id$or$custom_threshold * 2$in any parameter field - Runtime Evaluation โ Expressions resolved before execution, with support for nested dicts/lists
- Secure Sandbox โ Powered by
asteval; prevents unsafe operations and isolates environments viacontextmanager - UI Integration โ Select variables or type expressions directly in component property panels
โ Dynamic Code Components
- Full Python Logic โ Write complete
run()methods and helper functions inside nodes - Dynamic Ports โ Add/remove input/output ports via UI; bind global variables as defaults
- Full Feature Integration โ Leverages global variables, expressions, auto-dependency install, logging, and status visualization
- Safe Execution โ Runs in isolated subprocesses with timeout control, error capture, and retry support
- Developer-Friendly Editor โ Professional code editor with dark theme, syntax highlighting, intelligent autocomplete, folding, and error diagnostics
โก Plugin-based Trigger System
- Dynamic Plugin Loading โ Decoupled architecture that automatically discovers and registers new trigger types (Cron, Webhook, File Watcher) from the plugin directory without restarting.
- Auto-Adaptive UI โ Node property panels dynamically reconstruct their input widgets based on the selected plugin, ensuring a clean, context-aware interface.
- Event-Driven Execution โ Transition from manual execution to automated workflows by reacting to external HTTP requests, schedule patterns, or file system changes.
- Lifecycle Management โ Built-in safety logic that automatically unregisters backend listeners when a canvas is closed or a node is deleted to prevent resource leaks.
๐ Node Management
- Dynamic Loading โ Auto-scans
components/directory and loads new components - Pydantic Schemas โ Define inputs, outputs, and properties using Pydantic models
- Per-Node Logging โ Each node maintains its own execution log
- State Persistence โ Save/load entire workflows
- Auto Dependency Resolution โ Components declare
requirements; missing packages are auto-installed at runtime
๐ฆ Model Export & Standalone Deployment โจ
- Subgraph Export โ Select any group of nodes and export as a self-contained project
- Train/Inference Separation โ Export only inference logic with trained models bundled
- Zero-Dependency Runtime โ Generated project runs independentlyโno CanvasMind required
- Multi-Environment Support โ Auto-generated
requirements.txtenables deployment to servers, Docker, or CLI environments
๐ ๏ธ Exported Project Tool Integration
- Direct Invocation โ Canvas can call exported project scripts by name and retrieve results
- Parameter Passing โ Node properties define tool-call parameters, passed automatically at runtime
- Full Logging โ Detailed logs of tool execution are captured and returned for debugging
- LLM Function Calling Ready โ Standardized tool name, input/output schema, and examples for seamless LLM integration
๐ Quick Start
Prerequisites
- Python 3.8+
- PyQt5 or PySide6
Installation
# Clone the repository
git clone https://github.com/martin98-afk/CanvasMind.git
cd CanvasMind
# Create virtual environment (recommended)
python -m venv .venv
# Activate virtual environment
# Linux/Mac:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
Run
python main.py
Build (Optional)
python build.py
๐งช Component Development
Supported Port Types
| Type | Description | Example |
|---|---|---|
TEXT | Text input | String parameters |
LONGTEXT | Long text input | Multi-line strings |
INT | Integer | Numeric values |
FLOAT | Floating point | Decimal numbers |
BOOL | Boolean | Toggle switches |
CSV | CSV list data | Column selections |
JSON | JSON structure | Dynamic nested data |
EXCEL | Excel data | Cell ranges |
FILE | File path | Local file reference |
UPLOAD | Document upload | User-uploaded files |
SKLEARNMODEL | Scikit-learn model | Trained .pkl models |
TORCHMODEL | PyTorch model | .pt or .pth models |
IMAGE | Image data | Base64 or file paths |
Supported Property Types
| Type | Description | Example |
|---|---|---|
TEXT | Text input | Short strings |
LONGTEXT | Long text input | Code snippets, prompts |
INT / FLOAT | Numeric input | Thresholds, counts |
BOOL | Toggle | Enable/disable flags |
CHOICE | Dropdown | Predefined options |
DYNAMICFORM | Dynamic form | Variable-length lists |
RANGE | Numeric range | Min/max sliders |
VARIABLE | variable selector | global_variable |
FILE SELECT | Select file | canvas_files/model.pth |
๐ฎ Canvas Usage Guide
Basic Operations
- Create Node โ Drag from left panel to canvas
- Connect Nodes โ Drag from output port to input port
- Run Node โ Right-click โ "Run This Node"
- View Logs โ Right-click โ "View Node Logs"
Advanced Features
- Loops โ Use Loop/Iterate nodes with Backdrop for structured iteration
- File Handling โ Click file picker in property panel
- Workflow Management โ Save/load via top-left buttons
- Node Grouping โ Select multiple nodes โ right-click โ "Create Backdrop"
- Dependency Management โ Failed components auto-install missing
requirements
Keyboard Shortcuts
Ctrl+Rโ Run workflowCtrl+Sโ Save workflowCtrl+Oโ Load workflowCtrl+Aโ Select all nodesDelโ Delete selected nodes
๐ ๏ธ Development Notes
Node Status Colors
- Idle โ Gray border
- Running โ Blue border
- Success โ Green border
- Failed โ Red border
Connection Line Colors
- Idle โ Yellow
- Input Active โ Blue
- Output Active โ Green
Logging System
- Each node has independent logs with timestamps
- Powered by Loguru โ use
self.loggerin components - All
print()output is automatically captured
Dataflow
- Inputs auto-populated from upstream outputs
- Outputs stored by port name
- Full multi-input/multi-output support
๐ฅ Model Export (Standalone Deployment)
Core Value
Export any subgraph as a self-contained project that runs in any Python environmentโno CanvasMind required.
Use Cases
- Train/Inference Split โ Export only inference logic with models bundled
- Team Sharing โ Share full workflows as runnable projects
- Production Deployment โ Run on servers or in Docker
- Offline Execution โ CLI-only environments
Export Features
โ
Smart Dependency Analysis โ Copies only necessary component code
โ
Path Rewriting โ Model/data files copied and converted to relative paths
โ
Column Selection Preserved โ CSV column config fully retained
โ
Environment Isolation โ Auto-generated requirements.txt
โ
Ready-to-Run โ Includes run.py and api_server.py
Export Steps
- Select Nodes โ Choose any nodes on canvas (multi-select supported)
- Click Export โ Top-left "Export Model" button (๐ค icon)
- Choose Directory โ Project folder auto-generated
- Run Externally:
# Install dependencies
pip install -r requirements.txt
# Run model
python run.py
Exported Project Structure
model_xxxxxxxx/
โโโ model.workflow.json # Full workflow definition (nodes, connections, column selections)
โโโ project_spec.json # Input/output schema
โโโ preview.png # Canvas preview snapshot
โโโ README.md # Project overview
โโโ requirements.txt # Auto-analyzed dependencies
โโโ run.py # CLI entrypoint
โโโ api_server.py # FastAPI microservice
โโโ scan_components.py # Component loader
โโโ runner/
โ โโโ component_executor.py
โ โโโ workflow_runner.py
โโโ components/ # Original component code (preserved structure)
โ โโโ base.py
โ โโโ your_components/
โโโ inputs/ # Bundled models/data files
๐บ๏ธ Roadmap
| Status | Feature |
|---|---|
| ๐ง In Progress | Code-to-canvas auto-creation (from editor โ new node) |
| ๐ Planned | Enhanced visualization for large-scale workflows |
| ๐ Planned | Cloud execution support |
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Development Setup
# 1. Fork and clone the repository
git clone https://github.com/martin98-afk/CanvasMind.git
cd CanvasMind
# 2. Create a virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
# 3. Install dependencies
pip install -r requirements.txt
# 4. Run in development mode
python main.py
# 5. Run tests (if available)
pytest
Pull Request Process
- Fork the repository
- 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
๐ Documentation
For full documentation, visit: CanvasMind Docs
๐ฌ Get Help
- ๐ Open an Issue - Report bugs or request features
- ๐ฌ Discussions - Ask questions and share ideas
๐ License
This project is licensed under the GPLv3 License.
๐ Acknowledgements
- NodeGraphQt โ Node graph framework
- PyQt-Fluent-Widgets โ Fluent Design UI library
- Loguru โ Elegant Python logging