Omnitool is a Chrome extension prototype that enables quick access to custom utilities.
Omnitool has an omnibox-style interface for tool search and invocation, offering speed, simplicity, and flexibility for tasks lacking support from built-in browser tools.
I created Omnitool with inspiration from experience on a small developer team supporting a suite of CMS and service-backed web applications for a Fortune 50 client. Day-to-day operations included repeated tasks such as:
- Navigating complex web environments.
- Making frequent API calls to trigger cache clears and other operations.
- Inspecting and reproducing web application state.
- Debugging client-initiated service calls.
Team members had previously written a handful of small (and very useful) one-off browser extensions. The concept for Omnitool came about as a means to consolidate these tools and provide an efficient, intuitive interface.
Some noteworthy features listed by objective:
- SIMPLE
- A unified omnibox-style tool search interface.
- A consistent command-based model for tool invocation.
- A pattern for wrapping pre-existing pages as tools with an 'iframe'.


- FAST
- Quick-opening when configured with a keyboard shortcut (rec. CMD + K).
- Autocomplete for tool search.
- A tool invocation history with shortcuts for tool selection and re-invocation.


- FLEXIBLE
- Tool definitions that support a wide range of custom tools.
- Optional tool implementations patterns for tool panes, tool execution output, and hybrid text/GUI tool interfaces.
- Tool 'pinning' to allow for multiple tool selection.



The Omnitool 'demo-tools' branch includes tool samples that showcase these features (as shown in screenshots above.)
The tool development pattern is accessible to most web developers. A tool definition consists of a small package of files.

The tool logic and metadata is defined in a JS/TS module.

The optional tool UI is defined in a linked Vue component.

See the source on Github.
That's about it! In the future I may provide additional implementation details in a separate post.
Some quirks that I would like to address prior to release:
- Omnitool is not listed in the Chrome Web Store. Although I haven't tried yet, this may be impossible due to the store's "single purpose" policy for extensions, which has been in effect since 2013. This policy requires "extensions to have only a single purpose with respect to its subject matter or browser function". In the meantime, the extension may be loaded in developer mode as an "unpacked extension" without impacting functionality.
- Addition of a new tool currently requires a rebuild and reload. Hot-swappable tools would greatly enhance ease of tool sharing and developer synchronization. This might also be achieved with data-driven wrapping tools.
- Omnitool lacks global and tool-specific configuration options. It does save a small amount of core state on close, but adding configuration or customization would require this to be extended.
- A lack of sophisticated and relevant demo tools.
Thank you for reading! I'm looking forward to testing and feedback to see if this prototype is worth further development.
Cheers!