ito

Ito, smart dictation in every application

0
0
0

Ito

Ito Logo

Smart dictation. Everywhere you want.

Ito is an intelligent voice assistant that brings seamless voice dictation to any application on your computer. Simply hold down your trigger key, speak naturally, and watch your words appear instantly in any text field.

macOS Windows Version License


โœจ Features

๐ŸŽ™๏ธ Universal Voice Dictationundefined

  • undefinedWorks in any app: Emails, documents, chat applications, web browsers, code editors
  • undefinedGlobal keyboard shortcuts: Customizable trigger keys that work system-wide
  • undefinedReal-time transcription: High-accuracy speech-to-text powered by advanced AI models
  • undefinedInstant text insertion: Automatically types transcribed text into the focused text field

๐Ÿง  Smart & Adaptiveundefined

  • undefinedCustom dictionary: Add technical terms, names, and specialized vocabulary
  • undefinedContext awareness: Learns from your usage patterns to improve accuracy
  • undefinedMulti-language support: Transcribe in multiple languages
  • undefinedIntelligent punctuation: Automatically adds appropriate punctuation

โš™๏ธ Powerful Customizationundefined

  • undefinedFlexible shortcuts: Configure any key combination as your trigger
  • undefinedAudio preferences: Choose your preferred microphone
  • undefinedPrivacy controls: Local processing options and data control settings
  • undefinedSeamless integration: Works with any application

๐Ÿ’พ Data Managementundefined

  • undefinedNotes system: Automatically save transcriptions for later reference
  • undefinedInteraction history: Track your dictation sessions and improve over time
  • undefinedCloud sync: Keep your settings and data synchronized across devices
  • undefinedExport capabilities: Export your notes and interaction data

๐Ÿš€ Quick Start

Prerequisites

  • undefinedmacOS 10.15+ or Windows 10+undefined
  • undefinedNode.js 20+ and Bun (for development)
  • undefinedRust toolchain (for building native components)
  • undefinedMicrophone access and Accessibility permissionsundefined

Installation

  1. undefinedDownload the latest release from heyito.ai or the GitHub releases page

  2. undefinedInstall the application:

    • undefinedmacOS: Open the .dmg file and drag Ito to Applications
    • undefinedWindows: Run the .exe installer and follow the setup wizard
  3. undefinedGrant permissions when prompted:

    • undefinedMicrophone access: Required for voice input
    • undefinedAccessibility access: Required for global keyboard shortcuts and text insertion
  4. undefinedSet up authentication:

    • Sign in with Google, Apple, Github through Auth0 or create a local account
    • Complete the guided onboarding process

First Use

  1. undefinedConfigure your trigger key: Choose a comfortable keyboard shortcut (default: Fn + Space)
  2. undefinedTest your microphone: Ensure clear audio input during the setup process
  3. undefinedTry it out: Hold your trigger key and speak into any text field
  4. undefinedCustomize settings: Adjust voice sensitivity, shortcuts, and preferences

๐Ÿ› ๏ธ Development

Building from Source

undefinedImportant: Ito requires a local transcription server for voice processing. See server/README.md for detailed server setup instructions.

# Clone the repository
git clone https://github.com/heyito/ito.git
cd ito

# Install dependencies
bun install

# Set up environment variables
cp .env.example .env

# Build native components (Rust binaries)
./build-binaries.sh

# Set up and start the server (required for transcription)
cd server
cp .env.example .env  # Edit with your API keys
bun install
bun run local-db-up   # Start PostgreSQL database
bun run db:migrate    # Run database migrations
bun run dev           # Start development server
cd ..

# Start the Electron app (in a new terminal)
bun run dev

Build Requirements

All Platforms

  • undefinedRust: Install via rustup.rs
    • undefinedWindows users: See Windows-specific instructions below for GNU toolchain setup
    • undefinedmacOS/Linux users: Default installation is sufficient

macOS

  • undefinedXcode Command Line Tools: xcode-select --install

Windows

undefinedRequired Setup:undefined

This setup uses git bash for shell operations. Download from git

  1. undefinedInstall Docker Desktop: Download from docker.com and ensure itโ€™s running

  2. undefinedInstall Rust (with GNU target)

Download and run the official Rust installer for Windows.
This installs rustup and the MSVC toolchain by default.

Add the GNU target (needed for our native components):

rustup toolchain install stable-x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-gnu

  1. undefinedInstall 7-Zipundefined

    winget install 7zip.7zip


  1. undefinedInstall GCC & MinGW-w64 via MSYS2undefined

Install MSYS2.

Open the MSYS2 MinGW x64 shell (from the Start Menu).

Update and install the toolchain:

pacman -Syu       # run twice if asked to restart
pacman -S --needed mingw-w64-x86_64-toolchain

Verify the tools exist:

ls /mingw64/bin/gcc.exe /mingw64/bin/dlltool.exe

  1. undefinedUse the MinGW tools when building (Git Bash)

You normally develop and build in Git Bash. Before building, prepend the MinGW path:

export PATH="/c/msys64/mingw64/bin:$PATH"
export DLLTOOL="/c/msys64/mingw64/bin/dlltool.exe"
export CC_x86_64_pc_windows_gnu="/c/msys64/mingw64/bin/x86_64-w64-mingw32-gcc.exe"
export AR_x86_64_pc_windows_gnu="/c/msys64/mingw64/bin/ar.exe"
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER="/c/msys64/mingw64/bin/x86_64-w64-mingw32-gcc.exe"

Check youโ€™re picking up the right ones:

which gcc       # -> /c/msys64/mingw64/bin/gcc.exe
which dlltool   # -> /c/msys64/mingw64/bin/dlltool.exe

โš ๏ธ Do not add C:\msys64\ucrt64\bin to PATH. Thatโ€™s the wrong runtime and will break linking.

๐Ÿ’ก To avoid running these exports every session, add the lines above to your Git Bash ~/.bashrc file. They will be applied automatically whenever you open a new Git Bash window.


  1. undefinedRestart Git Bash if you update MSYS2undefined

Whenever you update MSYS2 packages with pacman -Syu, restart Git Bash so the changes take effect.

undefinedNote: Windows builds use Docker for cross-compilation to ensure consistent builds. The Docker container handles the Windows build environment automatically.

Project Structure

ito/
โ”œโ”€โ”€ app/                    # Electron renderer (React frontend)
โ”‚   โ”œโ”€โ”€ components/         # React components
โ”‚   โ”œโ”€โ”€ store/             # Zustand state management
โ”‚   โ””โ”€โ”€ styles/            # TailwindCSS styles
โ”œโ”€โ”€ lib/                   # Shared library code
โ”‚   โ”œโ”€โ”€ main/              # Electron main process
โ”‚   โ”œโ”€โ”€ preload/           # Preload scripts & IPC
โ”‚   โ””โ”€โ”€ media/             # Audio/keyboard native interfaces
โ”œโ”€โ”€ native/                # Native components (Rust/Swift)
โ”‚   โ”œโ”€โ”€ audio-recorder/    # Audio capture (Rust)
โ”‚   โ”œโ”€โ”€ global-key-listener/ # Keyboard events (Rust)
โ”‚   โ”œโ”€โ”€ text-writer/       # Text insertion (Rust)
โ”‚   โ””โ”€โ”€ active-application/ # Get the active application for context (Rust)
โ”œโ”€โ”€ server/                # gRPC transcription server
โ”‚   โ”œโ”€โ”€ src/               # Server implementation
โ”‚   โ””โ”€โ”€ infra/             # AWS infrastructure (CDK)
โ””โ”€โ”€ resources/             # Build resources & assets

Available Scripts

# Development
bun run dev                 # Start with hot reload
bun run dev:rust           # Build Rust components and start dev

# Building Native Components
bun run build:rust         # Build for current platform
bun run build:rust:mac     # Build for macOS (with universal binary)
bun run build:rust:win     # Build for Windows

# Building Application
bun run build:mac          # Build for macOS
bun run build:win          # Build for Windows
./build-app.sh mac          # Build macOS using build script
./build-app.sh windows      # Build Windows using build script (requires Docker)

# Code Quality
bun run lint               # Run ESLint
bun run format             # Run Prettier
bun run lint:fix           # Fix linting issues

๐Ÿ—๏ธ Architecture

Client Architecture

undefinedIto is built as a modern Electron application with a sophisticated multi-process architecture:

  • undefinedMain Process: Handles system integration, permissions, and native component coordination
  • undefinedRenderer Process: React-based UI with real-time audio visualization
  • undefinedPreload Scripts: Secure IPC bridge between main and renderer processes
  • undefinedNative Components: High-performance Rust binaries for audio capture and keyboard handling

Technology Stack

undefinedFrontend:undefined

  • undefinedElectron - Cross-platform desktop framework
  • undefinedReact 19 - Modern UI library with concurrent features
  • undefinedTypeScript - Type-safe development
  • undefinedTailwindCSS - Utility-first styling
  • undefinedZustand - Lightweight state management
  • undefinedFramer Motion - Smooth animations

undefinedBackend:undefined

  • undefinedNode.js - Runtime environment
  • undefinedgRPC - High-performance RPC for transcription services
  • undefinedSQLite - Local data storage
  • undefinedProtocol Buffers - Efficient data serialization

undefinedNative Components:undefined

  • undefinedRust - System-level audio recording and keyboard event handling
  • undefinedSwift - macOS-specific text manipulation and accessibility features
  • undefinedcpal - Cross-platform audio library
  • undefinedenigo - Cross-platform input simulation

undefinedInfrastructure:undefined

  • undefinedAWS CDK - Infrastructure as code
  • undefinedDocker - Containerized deployments
  • undefinedAuth0 - Authentication and user management

Communication Flow

graph TD
    A[User Holds Trigger Key] --> B[Global Key Listener]
    B --> C[Main Process]
    C --> D[Audio Recorder Service]
    D --> E[gRPC Transcription Service]
    E --> F[AI Transcription Model]
    F --> G[Transcribed Text]
    G --> H[Text Writer Service]
    H --> I[Active Text Field]

๐Ÿ”ง Configuration

Keyboard Shortcuts

Customize your trigger keys in Settings > Keyboard:

  • undefinedSingle key: Space, Fn, etc.
  • undefinedKey combinations: Cmd + Space, Ctrl + Shift + V, etc.
  • undefinedComplex shortcuts: Fn + Cmd + Space for advanced workflows

Audio Settings

Fine-tune audio capture in Settings > Audio:

  • undefinedMicrophone selection: Choose from available input devices
  • undefinedSensitivity adjustment: Optimize for your voice and environment
  • undefinedNoise reduction: Filter background noise automatically
  • undefinedAudio feedback: Enable/disable sound effects

Privacy & Data

Control your data in Settings > General:

  • undefinedLocal processing: Keep voice data on your device
  • undefinedCloud sync: Synchronize settings across devices
  • undefinedAnalytics: Share anonymous usage data (optional)
  • undefinedData export: Download your notes and interaction history

๐Ÿ”’ Privacy & Security

Data Handling

  • undefinedLocal-enabled: Voice processing can be done entirely on your device or using our cloud
  • undefinedEncrypted transmission: All network communication uses TLS encryption
  • undefinedMinimal data collection: Only essential data is processed and stored
  • undefinedUser control: Full control and transparency over data retention and deletion

Permissions

undefinedIto requires specific system permissions to function:

  • undefinedMicrophone Access: To capture your voice for transcription
  • undefinedAccessibility Access: To detect keyboard shortcuts and insert text
  • undefinedNetwork Access: For cloud features and updates (optional)

Open Source

This project is open source under the GNU General Public License. You can:

  • Audit the source code for security and privacy
  • Contribute improvements and bug fixes
  • Fork and customize for your specific needs
  • Report security issues through responsible disclosure

๐Ÿค Contributing

We welcome contributions! Whether youโ€™re fixing bugs, adding features, or improving documentation, your help makes Ito better for everyone.

Getting Started

  1. undefinedFork the repository and clone your fork
  2. undefinedCreate a feature branch from dev
  3. undefinedMake your changes with clear commit messages
  4. undefinedTest thoroughly across supported platforms
  5. undefinedSubmit a pull request with a detailed description

Development Guidelines

  • undefinedCode Style: Use Prettier and ESLint configurations
  • undefinedType Safety: Maintain strong TypeScript typing
  • undefinedTesting: Add tests for new features
  • undefinedDocumentation: Update docs for API changes
  • undefinedPerformance: Consider impact on time between recording and text insertion

Areas for Contribution

  • undefinedAccuracy improvements: Better transcription algorithms
  • undefinedLanguage support: Additional language models
  • undefinedUI/UX enhancements: Better user experience
  • undefinedPlatform support: Windows stability testing, Linux compatibility
  • undefinedDocumentation: Tutorials, guides, and examples

๐Ÿ“„ License

This project is licensed under the GNU General Public License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

undefinedIto is built with and inspired by amazing open source projects:

  • undefinedElectron React App by @guasam - The foundational template that provided our modern Electron + React architecture
  • undefinedElectron - Cross-platform desktop apps with web technologies
  • undefinedReact - Modern UI development
  • undefinedRust - Systems programming language for native components
  • undefinedgRPC - High-performance RPC framework
  • undefinedTailwindCSS - Utility-first CSS framework

๐Ÿ“ž Support

[beta]v0.20.0