A Node.js toolkit for creating Alfred workflows with built-in utilities for input/output, caching, and remote fetching.
Alfy is a Node.js library designed to help developers create Alfred workflows with ease. It provides a set of utilities for handling user input, outputting results, managing configuration and cache, fetching remote data, and error handling, all within a modern JavaScript (ESM) environment. It solves the problem of repetitive boilerplate code when building Alfred automation scripts.
Developers and power users of Alfred (macOS) who want to create custom workflows using Node.js and modern JavaScript, especially those looking to automate tasks, integrate with APIs, or build complex productivity tools.
Developers choose Alfy because it dramatically reduces the complexity of Alfred workflow development by offering a clean, promise-based API, built-in best practices (like caching and error handling), and seamless integration with npm for distribution and updates.
Create Alfred workflows with ease
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides built-in caching, config management, and remote fetching with `alfy.cache` and `alfy.fetch`, reducing boilerplate code for common workflow tasks.
Catches uncaught exceptions and unhandled promise rejections, displaying them in Alfred's UI, eliminating the need for manual `.catch()` in top-level code.
Enables publishing workflows to npm with `alfy-init` and `alfy-cleanup` scripts, facilitating easy installation, updates, and version management.
Uses ESM and supports top-level await, allowing developers to write contemporary JavaScript without transpilation, as emphasized in the usage prerequisites.
Requires multiple manual steps: configuring Alfred Script Filter with a bash script, npm initialization, and ESM setup, which can be daunting for newcomers.
Tightly coupled to Alfred's ecosystem and requires Node.js 18+, making workflows non-portable and unsuitable for environments without these dependencies.
Introduces Node.js and Alfy's API complexity for basic scripts that could be handled with Alfred's native shell scripting, adding unnecessary bloat.