The IDEA-shaped core for AI-assisted development
Native macOS IDE · familiar workflows · a lighter memory footprint
AI writes the code. Lithe helps you see it, run it, and review it.
简体中文 · Core capabilities · Product tour · Use Lithe · Architecture · Develop Lithe · Contact us
| 🧭 Familiar IDE core Project · Editor · Search · Diff |
⚡ Native and on demand SwiftUI/AppKit with services that start when needed |
🤖 AI-ready review loop See, run, diff, undo, and commit external changes |
🪶 Lighter footprint Keep the resident app small and focused |
Lithe is a native macOS IDE built for AI-assisted development. It preserves the project browsing, editing, search, code navigation, Git, run, and debug workflows familiar to IntelliJ IDEA users while starting Java language services, terminals, Maven, and debug processes only when needed.
When an external AI tool changes a project, Lithe helps you locate the affected code, run the project, review the diff, and decide which changes to stage, undo, or commit.
A familiar IDE core with a lighter resource footprint.
| Workflow | What Lithe provides |
|---|---|
| Project browsing | Welcome screen, recent projects, file tree, file type icons, path breadcrumbs, and workspace restoration |
| Code reading | Native multi-tab editor, basic Java highlighting, code folding, line numbers, saves, and dirty-state tracking |
| Java navigation | Eclipse JDT LS definitions, references, implementations, workspace symbols, and live diagnostics |
| Search | File name, path, full text, Search Everywhere, case/word/regex matching, and project replace |
| External changes | FSEvents watching, create/delete/update refreshes, and disk-versus-editor conflict prompts |
| Git review | Changes, side-by-side diff, diff search, hunk-level stage/revert, commit, shelf, branches, and Git graph |
| Build and run | Maven roots, multimodule projects, profiles, lifecycle, build output, current file, Spring Boot, and Maven module |
| Java debug | Local JDWP, Maven/Spring Boot debug, remote JVM/Tomcat attach, breakpoints, stepping, threads, and variables |
| Productivity | Project-level local history, built-in terminal, draggable tool windows, and restored split layouts |
| Updates | GitHub Release checks, matching artifact validation, confirmed replacement, and restart |
| Interface language | English by default with Simplified Chinese available in Settings |
Lithe requires macOS 14 or later. Java project features require a JDK; JDK 17 or JDK 21 is recommended. Semantic navigation requires Eclipse JDT LS. Maven projects need either a project mvnw or a system Maven installation.
Download the latest macOS .dmg from GitHub Releases. If a release provides architecture-specific installers, choose arm64 for Apple silicon or x86_64 for an Intel Mac. Open the disk image, drag Lithe.app into /Applications, and launch it.
If macOS blocks an app from an unidentified developer, right-click the app and select Open, or go to System Settings → Privacy & Security → Open Anyway. Only after confirming that the app came from an official Lithe GitHub Release, you can also run:
xattr -dr com.apple.quarantine "/Applications/Lithe.app"
open "/Applications/Lithe.app"Install JDT LS with Homebrew:
brew install jdtlsAfter opening a project, use Settings → Project to configure the project JDK, Maven, and the JDK used by Maven. Lithe also detects Java and Maven from common system locations.
flowchart TB
CORE["Shared Rust Core<br/>JSON C ABI and shared contracts"]
subgraph MACOS["macOS · Available"]
MUI["SwiftUI / AppKit Views"] --> MAPP["AppModel · Feature models · AppServices"]
MAPP --> MADAPTERS["Native macOS adapters"]
MADAPTERS --> MNATIVE["FSEvents · Process · PTY · Native UI"]
end
MAPP --> CORE
subgraph WINDOWS["Windows · In development"]
WUI["Qt Widgets Workbench<br/>Foundation available"] --> WAPP["C++ application workflows<br/>To be completed"]
WAPP --> WCLIENT["C++ CoreClient<br/>Foundation available"]
WAPP --> WADAPTERS["Win32 adapters<br/>Foundation available"]
WADAPTERS --> WNATIVE["Win32 · ConPTY · File watching"]
WAPP -.-> WPARITY["Full feature parity<br/>Planned"]
WCLIENT -.-> WPACKAGE["Rust library integration and packaging<br/>Planned"]
WNATIVE -.-> WBUILD["Native Windows build and validation<br/>To be completed"]
WUI -.-> WSHIP["Installer · Updates<br/>Planned"]
end
WCLIENT --> CORE
classDef planned fill:#fff3cd,stroke:#d97706,stroke-width:2px,stroke-dasharray:6 4,color:#111827
class WAPP,WPARITY,WPACKAGE,WBUILD,WSHIP planned
Development requires Swift 6.2 or later. Running the complete test suite requires Xcode; basic SwiftPM builds only need Command Line Tools.
Run the development build from the repository root:
./scripts/preview.shThe script builds and links Rust Core before launching the macOS app. To validate only the Swift source, run:
swift run --disable-sandbox LitheBuild an app bundle:
./scripts/package-app.sh
open dist/Lithe.appBefore submitting a change, run:
swift test --disable-sandbox
./scripts/verify-core.sh
./scripts/verify-git-graph.sh
./scripts/verify-service-boundaries.sh
./scripts/verify-shared-contracts.sh
./scripts/verify-windows-boundaries.sh
./scripts/verify-rust-core.shSee Repository layout and shared boundaries for directory ownership, cross-platform boundaries, and sharing rules. Include your verification steps and known limitations when submitting a change.
|
Code GO provides relay access to Claude models and supports the development of Lithe. Thank you to Code GO for supporting this project! |
|
CodeZ provides relay access to GPT-family models and supports the development of Lithe. Thank you to CodeZ for supporting this project! |
|
FastAI provides access to large language models and supports the development of Lithe. Thank you to FastAI for supporting this project! |
For all things AI, head to LINUX DO. Wishing the community ever greater success.
Thank you to everyone who contributes to and improves Lithe.
Lithe is licensed under the Apache License 2.0.
Join the Lithe-IDEA community group to discuss the project and share feedback, or contact the author directly.
| Join the community group | Contact the author |
![]() |
![]() |







