Open-source, free screen and audio recording application for Windows 11
Sideo is a lightweight, offline screen recording application designed to provide silent recording capabilities that remain undetected during video calls. It serves as an optimized wrapper around FFmpeg, designed for reliable operation on low-end hardware while maintaining professional recording quality.
- Offline Operation: No internet connectivity required
- Silent Recording: Undetectable during video calls
- Local Storage: All recordings saved to configurable local paths
- Performance Optimized: Designed for low-resource systems
- Reliability First: MKV default format with optional MP4 post-processing
- 🎥 Screen Recording: Full desktop, region, or specific window capture
- 🎵 Audio Capture: System audio, microphone, or mixed sources
- 🎛️ Quality Profiles: Low/Medium/High presets optimized for different hardware
- ⚙️ Hardware Acceleration: Automatic detection of NVIDIA/Intel/AMD encoders
- 📁 Flexible Output: Configurable output paths and file naming
- 🔥 System Tray: Minimal, non-intrusive interface
- ⌨️ Global Hotkeys: Quick start/stop recording
- 🛡️ Safety Controls: Disk space monitoring, duration limits
- 📂 Segmentation: Split long recordings into manageable files
- 🤖 AI Transcription: Local speech-to-text using Whisper.cpp
- 📝 Content Summarization: Generate summaries using local LLMs
- 🔒 Full Privacy: All AI processing happens offline
- Framework: Electron with TypeScript
- Frontend: React 18.2.0 with TypeScript 5.2.2
- UI Components: shadcn/ui (Radix UI primitives)
- Styling: Tailwind CSS 3.4+ with PostCSS
- Icons: Lucide React
- Video Processing: FFmpeg (external binary)
- Audio Processing: DirectShow (Windows)
- Configuration: electron-store (JSON-based)
- Build System: Vite 4.4.9 + electron-builder 24.6.4
- Testing: Jest 29.7.0 with ts-jest
- Linting: ESLint 8.49.0 with TypeScript ESLint
shadcn/ui Integration: The project uses shadcn/ui as the primary component library, providing:
- Accessible, unstyled UI primitives from Radix UI
- Consistent design system with Tailwind CSS
- Dark mode support (configurable)
- Professional, modern interface components
- Type-safe component props with TypeScript
Key UI Components:
Button,Card,Badge- Core interface elementsTabs,Select,Switch- Settings interfaceDialog,Tooltip,Progress- Interactive elementsLabel,Input,Checkbox- Form controls
Sideo/
├── src/
│ ├── main/ # Electron main process
│ │ ├── main.ts # Application entry point
│ │ └── preload.ts # Secure IPC bridge
│ └── renderer/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── ui/ # shadcn/ui components
│ │ │ └── tabs/ # Settings tabs
│ │ ├── lib/ # Utilities & helpers
│ │ └── App.tsx # Main application
│ └── index.html
├── assets/ # Icons and resources
├── scripts/ # Build and utility scripts
├── dist/ # Compiled output
├── release/ # Distribution packages
├── tailwind.config.js # Tailwind CSS configuration
├── components.json # shadcn/ui configuration
└── postcss.config.js # PostCSS configuration
- Node.js 18+
- Windows 11 (primary target)
- FFmpeg binary (auto-detected or manually configured)
-
Clone the repository
git clone https://github.com/yourusername/sideo.git cd sideo -
Install dependencies
npm install
-
Start development server
npm start
-
Build for production
npm run build npm run electron:dist
Sideo requires FFmpeg for video processing. You can:
- Download from official site: Place
ffmpeg.exeinC:\ffmpeg\bin\ - Use package manager:
winget install ffmpeg - Configure path: Set custom path in Advanced Settings
Settings are stored in JSON format at:
%APPDATA%\Sideo\config.json
| Profile | Resolution | FPS | Video Bitrate | Audio Bitrate | Use Case |
|---|---|---|---|---|---|
| Low | 1280x720 | 24 | 4 Mbps | 128 kbps | Weak PCs |
| Medium | 1920x1080 | 30 | 8 Mbps | 160 kbps | Recommended |
| High | 1920x1080 | 60 | 12 Mbps | 192 kbps | Best Quality |
- NVIDIA:
h264_nvenc(CUDA) - Intel:
h264_qsv(Quick Sync) - AMD:
h264_amf(AMF) - Fallback:
libx264(CPU)
- Launch Sideo (starts in system tray)
- Right-click tray icon → "Start Recording"
- Or press Ctrl+Alt+R hotkey
- Record your content
- Press hotkey again or tray menu to stop
┌─ Sideo ─────────────────┐
├─ ● Start Recording │
├─ ■ Stop Recording │
├─ ───────────────────── │
├─ Profile: Medium ▸ │
├─ ───────────────────── │
├─ ⚠ Transcribe Video │ (disabled in v0.1)
├─ ⚠ Summarize Video │ (disabled in v0.1)
├─ ───────────────────── │
├─ Open Settings │
├─ Open Recordings Folder │
├─ ───────────────────── │
└─ Exit │
- General: Output folder, file naming, hotkeys
- Video: Quality, encoder selection, region capture
- Audio: Device selection, mixing, quality
- Profiles: Quality preset management
- AI Features: Transcription and summarization (coming soon)
- Advanced: FFmpeg path, logging, safety limits
# Unit tests
npm test
# Watch mode
npm run test:watch
# Type checking
npm run type-check
# Linting
npm run lint- Configuration management
- FFmpeg command building
- Device detection and validation
- Recording session management
- UI component functionality
Self-contained executable with all dependencies included.
# Development build
npm run build
# Portable package (recommended)
npm run electron:pack
# Alternative electron-builder (if code signing issues resolved)
npm run electron:pack-builder
# Check build requirements
npm run check:build
# Production release scripts
npm run build:release
npm run build:release:portable
npm run build:release:installer- The project includes workarounds for Windows symbolic link creation issues during packaging
- Code signing is disabled by default for development builds
- FFmpeg binary is automatically included in the portable package
- Build output is saved to the
release/directory
Build Issues on Windows:
- If you encounter "symbolic link creation" errors during packaging, use
npm run electron:packinstead of electron-builder directly - Ensure Windows Developer Mode is enabled for symbolic link support (optional)
- Clear electron-builder cache if builds fail:
Remove-Item -Path "$env:LOCALAPPDATA\electron-builder\Cache" -Recurse -Force
FFmpeg Not Found:
- Download FFmpeg from official site
- Place
ffmpeg.exeinC:\ffmpeg\bin\or configure custom path in Advanced Settings - Verify FFmpeg is accessible:
ffmpeg -version
- Offline First: No internet connectivity required
- Local Processing: All recording and future AI features run locally
- No Telemetry: No usage data collection
- Open Source: Full transparency of functionality
- Silent Mode: Designed to be undetectable during video calls
We welcome contributions! Please see our Contributing Guidelines.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
- Components use shadcn/ui with Tailwind CSS for styling
- Follow the existing component patterns in
src/renderer/src/components/ - Use Lucide React for icons:
import { IconName } from 'lucide-react' - Maintain accessibility with Radix UI primitives
- Test components in both light and dark modes
- Use GitHub Issues for bug reports
- Include system information and logs
- Provide steps to reproduce
- Basic screen recording
- Audio capture and mixing
- Quality profiles
- System tray interface
- Settings management
- shadcn/ui component integration
- Tailwind CSS styling system
- Build process optimization
- Hardware encoder detection
- Recording session management
- Performance monitoring
- Local speech transcription (Whisper.cpp)
- Content summarization (Local LLMs)
- Batch processing workflows
- Advanced export options
- Multi-monitor support
- Advanced region selection
- Live streaming capabilities
- Plugin system
This project is licensed under the MIT License - see the LICENSE file for details.
- FFmpeg Team - For the powerful video processing engine
- Electron Team - For the cross-platform framework
- shadcn - For the excellent UI component library
- Radix UI Team - For accessible, unstyled UI primitives
- Tailwind CSS Team - For the utility-first CSS framework
- Lucide - For the beautiful icon library
- OpenAI Whisper - For offline speech recognition
- Open Source Community - For inspiration and tools
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with ❤️ for the open source community
Sideo - Silent, Reliable, Offline Screen Recording