WaTools is an open-source desktop productivity toolbox inspired by uTools and Alfred. It combines a Wails desktop shell, a Go backend, and a React command-palette UI to make local tools, system actions, and plugins available from a single hotkey-driven surface.
WaTools is currently organized around four core capabilities:
- A transparent, frameless command-palette style desktop UI
- Local application search and launch
- Built-in system operation commands
- A trusted local plugin system with
executableanduientries
The repository is cross-platform in structure, but the current implementation is still most complete on macOS.
WaTools started as a manually built desktop tool project. The early implementation, architecture, and core workflows were designed and written in a traditional hand-coded way.
As the project evolved, the workflow expanded into AI-assisted development. Recent iterations increasingly use Codex, Claude Code, and related vibe coding practices for repo mapping, documentation restructuring, implementation acceleration, and plugin-oriented iteration.
That means this project is best understood as:
- Initially human-designed and human-implemented
- Later accelerated with AI pair-programming and vibe coding style workflows
- Still grounded in concrete repo structure, explicit modules, and reviewable code paths
At a high level, the app is split into:
main.goWails entrypoint, asset embedding, lifecycle wiring, native window setupinternal/Backend modules for app behavior, command scanning, plugins, APIs, handlers, updates, and menusfrontend/React 19 + TypeScript + Tailwind 4 frontend for the command palette, plugin host, and management pagespkg/Shared models, SQLite access, and loggingplugins/Official plugin source tree and packaging outputdocs/Architecture, UI, implementation mechanism, feature module, release, and plugin development docs
The only Wails-bound API surface is the coordinator in internal/coordinator/, which acts as the stable bridge between frontend and backend modules.
- Global hotkey access to the main panel
- Application discovery and launch
- System operation commands
- Plugin installation from trusted
.wtpackages - UI plugins hosted through iframe pages with a shared
PluginContext - Executable plugins that run directly from the command palette
- Local logging and update management screens
- Official plugin set for common utilities, calculator, JSON, QR, translation, and text statistics workflows
- Backend: Go
1.26 - Desktop framework: Wails
v3.0.0-beta.27 - Frontend: React
19, TypeScript, Vite7 - Styling: Tailwind CSS
4 - State management: Zustand
- Search and command UI: Fuse.js, cmdk
- Package manager:
pnpm - Persistence: SQLite
Start with the entry that matches the task instead of reading everything end-to-end.
AGENT.mdRepository map, runtime summary, and fast orientation for developers and agentsdocs/README.mdDocumentation indexdocs/architecture/architecture.mdSystem layers, runtime boundaries, and data flowdocs/design/ui-style.mdCommand palette structure, routes, and UI directiondocs/architecture/implementation-mechanism.mdWails binding, command, plugin, update, and resource-serving mechanismsdocs/architecture/feature-modules.mdUser-facing functional modulesdocs/plugin-development/README.mdPlugin development reading path
.
|-- main.go
|-- config/
|-- internal/
|-- frontend/
|-- pkg/
|-- plugins/
|-- docs/
|-- cmd/watoolsctl/
|-- cmd/pluginctl/
`-- build/
- Go launcher (the development entry selects
go1.26.8fromgo.mod) - Node.js
22.12+ pnpm10.21.0- Xcode Command Line Tools for macOS development
- Clone the repository.
git clone https://github.com/a31521424/watools.git
cd watools- Check the macOS environment and install locked dependencies.
go run ./cmd/watoolsctl doctor
go run ./cmd/watoolsctl setup- Start the development app.
go run ./cmd/watoolsctl plugins install
go run ./cmd/watoolsctl dev- Build a production binary.
go run ./cmd/watoolsctl check
go run ./cmd/watoolsctl buildInstall the application and all official plugins into the normal installation:
go run ./cmd/watoolsctl installThe output application is written to build/bin/. The entry uses a Wails CLI pinned to the Go module version, so a global CLI is not required. Development data, cache and plugin packages are isolated under .cache/dev/; checks and builds use disposable application data. See the local development guide for browser debugging, binding generation and boundaries. The unified entry currently targets macOS; existing Windows CI remains separate.
Official plugin source code lives in plugins/official.
Current official plugins include:
watools.plugin.commonwatools.plugin.calculatorwatools.plugin.jsonwatools.plugin.qrwatools.plugin.translatewatools.plugin.textstats
Useful plugin commands:
go run ./cmd/watoolsctl plugins list
go run ./cmd/watoolsctl plugins package
go run ./cmd/watoolsctl plugins installMore plugin details:
The repository includes a GitHub Actions release workflow and app update support.
- Workflow:
/.github/workflows/release.yml - Notes:
docs/development/release-cd.md
Installed plugins are currently treated as trusted local code chosen by the user. WaTools is not positioned as a hardened sandbox for an untrusted public marketplace.
Issues and pull requests are welcome. If you are changing architecture, plugin behavior, or developer-facing workflows, update the matching docs under docs/ together with the code.
This project is licensed under the MIT License.