Skip to content

bemindlabs/liteduck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiteDuck mascot

LiteDuck

A lightweight code editor — fast, focused, and out of your way.

A file browser + editor, an integrated terminal, Git, and a manifest-based plugin system in a single fast native desktop app for macOS (Windows & Linux planned) — no AI, no clutter.

License: MIT Homebrew Website

Install

Homebrew (macOS)

brew tap bemindlabs/liteduck https://github.com/bemindlabs/liteduck
brew install bemindlabs/liteduck/liteduck

The formula lives in this repo's HomebrewFormula/ directory — there is no separate tap repo, so brew tap points straight at the LiteDuck repository. Homebrew then builds LiteDuck from source — it compiles the Tauri app locally with Node + Rust. There is no prebuilt binary to download.

Update with Homebrew (there is no in-app auto-updater):

brew upgrade liteduck

Unsigned build. Because LiteDuck is built from source, the resulting app is not code-signed or notarized. The first time you open it, macOS Gatekeeper may block it — right-click LiteDuck.app and choose Open, or run xattr -dr com.apple.quarantine "$(brew --prefix)/opt/liteduck/LiteDuck.app".

Planned: Windows & Linux. LiteDuck is macOS-only for now. Support for other platforms will follow once those targets ship.

Features

Feature Description
Workspace Shell VS Code-style layout: activity rail, file-tree side panel, editor area, collapsible terminal dock, and status bar — all visible at once
File Manager Tree view with a full right-click menu (cut/copy/paste, duplicate, new file/folder, rename, delete, copy path / relative path, reveal in Finder, open in VS Code, open terminal here), drag-to-move onto folders, image/markdown preview; drag a file/folder onto the terminal to insert its path
Code Editor CodeMirror 6: language-aware syntax highlighting, find & replace (Cmd+F), undo/redo, bracket matching, auto-indent, code folding, multi-cursor; markdown edit/split with a formatting toolbar
Terminal Tabs, split panes, full-view mode (Cmd+Shift+`), raw PTY
Git Branch management, status, commits, diffs, worktrees
Plugins Manifest-based plugin system — install from a local folder or the GitHub registry; scope-limited (no chat/agent/LLM kinds)
Setup Wizard First-run wizard: welcome, workspace, initial project
Settings Modular sections, config (global), auto-save, biometric lock

Tech Stack

Layer Technology
Frontend React 19, TypeScript, Tailwind CSS, Vite 8, CodeMirror 6, xterm.js
Backend Rust, Tauri v2
Database SQLite (bundled via rusqlite)
Auth System keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service)
Terminal portable-pty, xterm.js
Git git2 (libgit2)

Development

Prerequisites

Setup

npm install
bash .githooks/install.sh   # Set up pre-commit and pre-push hooks

Commands

npm run tauri:dev       # Development mode with hot reload (alias for `npm run tauri dev`)
npm run build:prod      # Production build
npm run build:debug     # Debug build
npm run test            # Run frontend tests (Vitest)
npm run test:coverage   # Tests with coverage report
npm run test:ci         # CI/local coverage gate (thresholds: 3-5%)
npm run lint            # ESLint
npm run lint:fix        # ESLint with auto-fix
npm run format          # Prettier format
npm run format:check    # Prettier check
npm run quality-gate    # Full quality check (tsc + format + lint + test + cargo)

Rust tests:

cd src-tauri && cargo test
cd src-tauri && cargo clippy -- -D warnings
cd src-tauri && cargo fmt --check

Scripts

Script Purpose
scripts/build.sh Production build wrapper
scripts/bump-version.sh Bump version across package.json, Cargo.toml, tauri.conf.json

Quality Gates

Gate What runs
Pre-commit cargo check --all-targets
Pre-push Frontend build (tsc + vite) + cargo test
CI npm run quality-gate — TypeScript, ESLint, Prettier, Vitest, cargo check, cargo clippy, cargo fmt, cargo test

Architecture

src/                          # Frontend (React + TypeScript)
  pages/                      # Route pages
    FilesPage.tsx             #   File browser + editor
    TerminalPage.tsx          #   Terminal with tabs and splits (always mounted)
    GitPage.tsx               #   Git operations and diff viewer (Changes/History/Worktrees)
    NotificationsPage.tsx     #   In-app notification center
    WizardPage.tsx            #   First-run setup wizard (welcome, workspace, project)
    LandingPage.tsx           #   Landing / workspace picker
    settings/SettingsPage.tsx #   App settings (modular sections)
  components/                 # Reusable UI components (incl. ui/ shadcn primitives)
    workspace/                #   VS Code-style shell (ActivityRail, SidePanel, EditorArea, TerminalDock, StatusBar)
    plugins/                  #   PluginsPanel — install/list/run plugins
  hooks/                      # Custom React hooks (useConfig, useKeyboardShortcuts, …)
  lib/                        # Tauri IPC wrappers and utilities (one file per domain)
    plugins.ts                #   Plugin install/list/run + registry fetch (→ plugins.rs)
    version.ts                #   App version via get_app_version (no network)
  utils/                      # Helpers (shellQuote — drag-to-terminal path quoting)
  contexts/                   # React contexts (Workspace, Biometric)
src-tauri/                    # Backend (Rust, Tauri v2)
  src/
    lib.rs                    #   Tauri builder + command registration
    main.rs                   #   Entry point
    db.rs                     #   SQLite (runtime state / index)
    settings.rs               #   Settings with keychain storage
    keychain.rs / keyring_store.rs  # System keychain abstraction
    workspace.rs              #   Workspace init and templates
    home.rs                   #   ~/.liteduck home: config, profile, memory notes
    agent_memory.rs           #   Markdown note store backing home memory
    app_menu.rs               #   Native application menu
    terminal.rs / pty.rs      #   Terminal and raw PTY handling
    files.rs                  #   File listing, read/write, rename/delete
    git.rs                    #   Git operations + worktrees (libgit2)
    plugins.rs                #   Plugin manifest loader, install/run, registry fetch
    device_identity.rs        #   Device identity generation
    biometric.rs              #   Biometric authentication
    event_sink.rs / file_logger.rs / bash_validator.rs  # Event bus, logging, shell validation
  icons/                      # App icons (macOS, Windows, Linux)
crates/
  liteduck-core/              # Shared business logic (DB, settings, identity; UniFFI-ready)

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for the development workflow, coding conventions, and the quality gates your change must pass.

License

Licensed under the MIT License — © 2026 Bemind Technology Co., Ltd. (bemindlabs).

About

A lightweight code editor — file browser + editor, integrated terminal, and Git in a fast native desktop app. No AI, no clutter.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors