Thoth is a high-performance, feature-rich desktop application for viewing and exploring JSON and NDJSON files with a clean, intuitive interface.
- Multiple File Format Support: Handles JSON Objects, JSON Arrays, and NDJSON (Newline-Delimited JSON) files
- Lazy Loading: Efficiently handles large files by loading only what's needed
- Smart File Type Detection: Automatically detects whether a file is JSON or NDJSON
- Powerful Search: Search through complex JSON structures with ease
- Interactive Exploration: Expandable tree view to navigate nested structures
- Copy Support: Easy copying of JSON paths and values
- Dark/Light Modes: Comfortable viewing in any environment
- Multi-Window Support: Open multiple independent windows to compare files
- Keyboard Shortcuts: Comprehensive keyboard shortcuts for efficient workflow (see all shortcuts)
- Customizable: All shortcuts and settings configurable via TOML
Download the latest release from GitHub Releases.
Option 1: DMG Installer (Recommended)
- Download the appropriate DMG:
- Apple Silicon (M1/M2/M3):
Thoth-aarch64-apple-darwin.dmg - Intel:
Thoth-x86_64-apple-darwin.dmg
- Apple Silicon (M1/M2/M3):
- Open the DMG and drag Thoth.app to Applications
- Important: Open Terminal and run:
xattr -cr /Applications/Thoth.app
- Launch from Applications
Option 2: Manual Installation
- Download:
thoth-aarch64-apple-darwin.tar.gzorthoth-x86_64-apple-darwin.tar.gz - Extract:
tar -xzf thoth-*.tar.gz - Remove quarantine:
xattr -cr Thoth.app - Move to Applications:
mv Thoth.app /Applications/ - Double-click to open
⚠️ Gatekeeper Warning: This app is not code-signed. You must remove the quarantine attribute using the command above before first launch.
Option 1: MSI Installer (Recommended)
- Download
Thoth.msi - Double-click to install
- Launch from Start Menu
Option 2: Portable
- Download
thoth-x86_64-pc-windows-msvc.zip - Extract and run
thoth.exe
Option 1: DEB Package (Recommended for Debian/Ubuntu)
- Download
thoth_*_amd64.deb - Install:
sudo dpkg -i thoth_*_amd64.deb - Run:
thoth
Option 2: Portable
- Download
thoth-x86_64-unknown-linux-gnu.tar.gz - Extract:
tar -xzf thoth-x86_64-unknown-linux-gnu.tar.gz - Make executable:
chmod +x thoth - Run:
./thoth
- Rust (latest stable version recommended)
- For building installers: cargo-packager
# Clone the repository
git clone https://github.com/anitnilay20/thoth.git
cd thoth
# Build and run in debug mode
cargo run
# Build for production
cargo build --release
# The binary will be available in target/release/thothTo create platform-specific installers (MSI, DMG, DEB):
# Install cargo-packager
cargo install cargo-packager --locked
# Build installer for your platform
cargo packager --release
# Installers will be in the dist/ directory:
# - Windows: dist/*.msi
# - macOS: dist/*.dmg and dist/*.app
# - Linux: dist/*.debSee RELEASE_PROCESS.md for more details on the release and packaging workflow.
- Launch the application
- Use the top bar to open a JSON or NDJSON file (or press
Cmd/Ctrl+O) - Navigate through the file using the tree view
- Use the search functionality to find specific values (
Cmd/Ctrl+Fto focus) - Toggle between dark and light mode as needed (
Cmd/Ctrl+Shift+T) - Open new windows to compare multiple files (
Cmd/Ctrl+N)
For a complete list of keyboard shortcuts, see the Keyboard Shortcuts Guide.
src/main.rs: Application entry point and core logicsrc/components/: UI components including the JSON viewersrc/file/: File handling, lazy loading, and type detectionsrc/search/: Search functionalitysrc/helpers/: Utility functions and shared codedocs/: Documentation for architecture and design patterns
- Component Architecture: Detailed guide on Thoth's component system and one-way data binding pattern
- Keyboard Shortcuts: Complete reference of all keyboard shortcuts
- Design System: UI design guidelines and patterns
- Profiling: Performance profiling and optimization techniques used in Thoth
Thoth is built with a modular architecture that emphasizes performance and flexibility:
-
Application Core (
ThothApp):- The central controller that manages the application state
- Coordinates between UI components and data handling
- Manages the theme, file paths, and error states
-
UI Components:
- TopBar: Handles file opening, type selection, and search inputs
- CentralPanel: Main content area with the JSON viewer
- JsonViewer: Tree-based visualization of JSON structures with expandable nodes
- Theme: Manages dark/light mode and styling
-
File Handling System:
- Lazy Loading: Only parses the parts of the file that are being viewed
- File Type Detection: Automatically identifies JSON, JSON arrays, and NDJSON formats
- LRU Cache: Optimizes performance by caching recently accessed nodes
-
Search Engine:
- Parallel processing for fast searching across large files
- Background scanning to maintain UI responsiveness
- Uses Rayon for parallel iteration and memchr for optimized substring searching
User Interaction → TopBar → ThothApp → File Loading/Search Operations → CentralPanel → JsonViewer
- Lazy Parsing: JSON is only parsed when nodes are expanded
- Background Processing: Long operations run in separate threads
- Memory Efficiency: Stores file offsets instead of keeping entire files in memory
- LRU Caching: Recently accessed nodes are cached for faster repeat access
- Parallel Search: Utilizes multiple CPU cores for searching large files
- Comprehensive error handling using the
anyhowcrate - Graceful degradation with user-friendly error messages
- Robust file type detection to prevent parsing errors
- Rust: Primary language
- egui: Immediate mode GUI library
- serde_json: JSON serialization/deserialization
Key features planned for future development:
- JSON Path expression support
- Export functionality for nodes and search results
- Multi-file support with tabbed interface
- Schema validation against JSON Schema
- Diff view to compare JSON files
- Search history and improved search capabilities
- Data visualization for numerical values
- JSON editing capabilities
- Cross-platform packages (macOS, Windows, Linux)
- Plugin system for extensibility
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Named after Thoth, the Egyptian deity of wisdom, writing, and knowledge
- Inspired by the need for a fast, native JSON viewer for large files
