CrabCamera: The Desktop Camera Plugin for Tauri
CrabCamera will be free forever. No asterisks. No "free for now." No pivot to paid.
What is CrabCamera?
CrabCamera is the first production-ready desktop camera plugin for Tauri applications. It provides unified camera access across Windows, macOS, and Linux with professional controls and zero-config setup. It's designed to be the invisible infrastructure that makes desktop camera apps just work.
| Feature | CrabCamera | Web APIs | Other Plugins |
|---|---|---|---|
| Desktop Native | Windows/macOS/Linux 🏆 | Limited browser | Mobile-only |
| Hardware Access | Direct camera control 🏆 | Browser restricted | Basic access |
| Professional Controls | Auto-focus, exposure 🏆 | Limited | Basic |
| Cross-Platform | Unified API 🏆 | Platform dependent | Single platform |
| Production Ready | 63 comprehensive tests 🏆 | No guarantees | Proof-of-concept |
| Memory Safety | Zero unsafe code 🏆 | N/A | Manual management |
🎯 Perfect for Desktop Applications
- Photography: Photo booth apps, image editors, content creation tools
- Security: Surveillance systems, access control, monitoring dashboards
- Medical: Imaging interfaces, patient documentation, diagnostic tools
- Industrial: Quality control, inspection systems, documentation cameras
- Education: Interactive learning tools, virtual labs, presentation software
- Communication: Video chat apps, streaming tools, conference software
BONUS: Professional camera controls with platform-optimized settings for maximum image quality.
Quick Start (30 seconds)
Installation
[]
= "0.1"
= { = "2.0", = ["protocol-asset"] }
Tauri Integration
// src-tauri/src/main.rs
use crabcamera;
// tauri.conf.json
Frontend Usage
import from '@tauri-apps/api/tauri';
// Initialize camera system
await ;
// Get available cameras
const cameras = await ;
console.log;
// Get recommended format for high quality
const format = await ;
// Capture a photo
const photo = await ;
📦 Professional Camera Features
🔧 Hardware Control
- Device Enumeration: Automatic discovery of all connected cameras
- Format Negotiation: Resolution, FPS, and color format selection
- Professional Settings: Auto-focus, auto-exposure, white balance
- Multi-camera Support: Switch between multiple cameras seamlessly
- Error Recovery: Robust handling of device disconnection and errors
🖥️ Cross-Platform Native
- Windows: DirectShow and MediaFoundation backends
- macOS: AVFoundation with Metal acceleration support
- Linux: V4L2 with comprehensive device support
- Unified API: Same code works across all platforms
- Platform Optimization: Best settings for each operating system
⚡ Performance & Memory
- Zero-Copy Operations: Minimal memory allocations where possible
- Async/Await: Non-blocking operations throughout
- Resource Management: Automatic cleanup and device release
- Memory Safety: Built with Rust's memory safety guarantees
- Thread Safety: Concurrent access with proper synchronization
🔧 Available Commands
Initialization & Discovery
// Initialize the camera system
initialize_camera_system // Get all available cameras with capabilities
get_available_cameras // Get platform-specific information
get_platform_info // Test camera system functionality
test_camera_system
Camera Operations
// Check if specific camera is available
check_camera_availability // Get supported formats for a camera
get_camera_formats // Get recommended settings for quality photography
get_recommended_format
Capture & Streaming
// Single photo capture
capture_single_photo // Photo sequence for burst mode
capture_photo_sequence // Real-time streaming
start_camera_preview // Save frames to disk
save_frame_to_disk
Permissions & Security
// Handle camera permissions properly
request_camera_permission
Why CrabCamera Will Always Be Free
I built CrabCamera because desktop applications deserve native camera access without the limitations of web APIs or mobile-only plugins.
This is my commitment: CrabCamera stays MIT licensed, forever. If you want to support development, sponsor it. If you don't, just build something incredible with it.
CrabCamera saves developers weeks of cross-platform camera integration. If it's useful, consider sponsoring for $5/month — less than a coffee, infinitely more valuable than web API limitations.
Performance Comparison
| Metric | CrabCamera | Web APIs | Mobile Plugins |
|---|---|---|---|
| Desktop Support | Full native | Browser dependent | None |
| Camera Access | Direct hardware | getUserMedia limited | N/A |
| Image Quality | Professional controls | Basic settings | Basic |
| Cross-Platform | Windows/macOS/Linux | Browser variation | iOS/Android only |
| Performance | Native speed | Browser overhead | N/A |
| Reliability | 63 tests passing | No guarantees | Varies |
Technical Architecture
- Rust + Tokio: Memory-safe, async performance
- nokhwa Backend: Cross-platform camera abstraction
- Tauri 2.0 Plugin: Modern plugin architecture
- Platform Backends: DirectShow, AVFoundation, V4L2
- Zero unsafe code: Memory safety guaranteed
API Reference
Core Types
Platform Detection
// Automatic platform detection
let platform = current;
Community & Support
- 🐛 Bug Reports: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📖 Documentation: docs.rs/crabcamera
- 💝 Sponsorship: GitHub Sponsors
Sponsors
See our amazing sponsors who make CrabCamera possible! 🙏
Sponsorship Tiers:
- $5/month: Coffee tier - My eternal gratitude + sponsor badge
- $25/month: Developer supporter - Priority support + name in SPONSORS.md
- $100/month: Corporate backer - Logo on README + monthly office hours
- $500/month: Enterprise partner - Direct support + feature requests
Companies: Need invoicing? Email michaelallenkuykendall@gmail.com
Production Usage
✅ Ready for production:
- Memory-safe Rust implementation
- 63 comprehensive tests passing
- Zero unsafe code
- Comprehensive error handling
- Async/await throughout
- Cross-platform compatibility verified
✅ Use cases in production:
- Desktop photography applications
- Security and surveillance systems
- Medical imaging interfaces
- Industrial inspection tools
- Educational software platforms
- Communication and streaming apps
Examples & Integration
Photo Booth Application
// Simple photo booth with camera selection
const cameras = await ;
const selectedCamera = cameras;
const format = await ;
// Take photo when user clicks
document. ;
Multi-Camera Security System
// Monitor multiple cameras
const cameras = await ;
License & Philosophy
MIT License - forever and always.
Philosophy: Desktop applications deserve native camera access. CrabCamera is camera infrastructure.
Forever maintainer: Michael A. Kuykendall
Promise: This will never become a paid product
Mission: Making desktop camera development effortless
"Native performance. Cross-platform compatibility. Zero hassle."