Synapse is a powerful, cross-platform desktop application for running AI models locally. Built with Electron, React, and TypeScript, it provides a user-friendly interface for chatting with local AI models while offering advanced features like profile management, hardware detection, and tool calling capabilities.
- Local AI Model Execution: Run AI models directly on your machine for privacy and low-latency responses
- Chat Interface: Intuitive chat UI with support for tool calls and extended conversation contexts
- Model Management: Browse, download, and manage AI models with automatic profile creation
- Profile System: Create and customize chat profiles with different model configurations, system prompts, and temperature settings
- Hardware Detection: Automatic detection of CPU, RAM, and GPU/VRAM to recommend optimal model configurations
- Tool Calling: Built-in filesystem and Git tools for AI agents to interact with your local environment
- Multi-Model Support: Support for various model formats including GGUF
- Settings Management: Comprehensive settings for model parameters (temperature, top-k, top-p, min-p, seed, etc.)
- Electron + React + TypeScript: Modern tech stack for cross-platform desktop development
- WebGPU Support: Leverages modern GPU acceleration for AI inference
- IPC Communication: Efficient main/renderer process communication via Electron IPC
- State Management: React Context and hooks for managing application state
- Node.js 18+ and npm or yarn
- A modern system with at least 8GB RAM recommended
- GPU with WebGPU support (optional, for accelerated inference)
- Clone the repository:
git clone https://github.com/your-repo/synapse.git
cd synapse- Install dependencies:
npm install- Start the development server:
npm startTo build the application for your platform:
npm run package- Start a conversation with your selected AI model
- View tool calls with expandable details
- Copy responses and manage chat history
- Browse available AI models
- Download and install models automatically
- Create default profiles for new models
- Create custom chat profiles with specific model configurations
- Set system prompts for each profile
- Adjust model parameters (temperature, top-k, top-p, etc.)
- Import/export profiles
- Configure model preferences
- Set hardware limits (RAM/VRAM allocation)
- Manage API keys (e.g., Hugging Face token)
- Configure auto-detection settings
src/
├── main/ # Electron main process
│ ├── main.ts # Main entry point
│ └── preload.ts # Preload script for IPC
├── renderer/ # React renderer process
│ ├── pages/ # Application pages
│ │ ├── ChatPage.tsx
│ │ ├── ModelsPage.tsx
│ │ ├── ProfilesPage.tsx
│ │ └── SettingsPage.tsx
│ ├── components/ # Reusable React components
│ ├── styles/ # CSS modules
│ └── types/ # TypeScript type definitions
└── data/ # Static data files
├── defaultTools.ts # Available AI tools
└── languages.ts # Language support
Synapse includes built-in tools that AI models can use to interact with your system:
read_text_file: Read text files with optional line rangesread_media_file: Read media files (images, videos, PDFs) as base64read_multiple_files: Read multiple text files simultaneouslywrite_file: Write content to filesedit_file: Edit files with text replacementscreate_directory: Create directories recursivelylist_directory: List directory contentslist_directory_with_sizes: List with file sizesmove_file: Move or rename filessearch_files: Search for files by glob patterndirectory_tree: Generate directory tree viewget_file_info: Get detailed file metadatalist_allowed_directories: List configured allowed directories
git_status: Get repository working tree statusgit_diff_unstaged: Show unstaged changesgit_diff_staged: Show staged changesgit_diff: Compare against branches/commitsgit_commit: Commit staged changesgit_add: Stage files for commitgit_reset: Unstage all changesgit_log: View commit historygit_create_branch: Create new branchgit_checkout: Switch branchesgit_show: Show commit contentsgit_branch: List branches
- Temperature: Controls randomness in responses (0.0-2.0)
- Top-K: Limits sampling to top K tokens (1-100)
- Top-P: Nucleus sampling threshold (0.0-1.0)
- Min-P: Minimum probability threshold
- Seed: Random seed for reproducibility
- RAM Allocation: Recommended based on model size
- VRAM Allocation: For GPU-accelerated inference
- GPU Selection: Choose specific GPU for multi-GPU systems
# Development
npm start # Start development server
npm run lint # Run ESLint
npm run lint:fix # Fix linting issues
# Build
npm run build # Build for production
npm run build:main # Build main process
npm run build:renderer # Build renderer process
# Package
npm run package # Package application.erb/: Electron React Boilerplate configurationnode_modules/: Dependenciespublic/: Public assetsrelease/: Build artifacts
- Auto-detect and recommend optimal model settings on first boot
- Cache hardware configuration for faster startup
- Add support for more AI model formats
- Implement cloud model integration
- Add export/import for chat history
- Enhance tool calling with custom tool definitions
Contributions are welcome! Please feel free to submit a Pull Request.
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Electron for the desktop framework
- React for the UI library
- TypeScript for type safety
- WebGPU for GPU acceleration
Built with ❤️ for the AI community
For more information and documentation, please visit our documentation (placeholder).