{"data":{"slug":"deanishe-alfred-workflow","name":"alfred-workflow","tagline":"Full-featured library for writing Alfred 3 & 4 workflows","github_url":"https://github.com/deanishe/alfred-workflow","owner":"deanishe","repo":"alfred-workflow","owner_avatar_url":"https://avatars.githubusercontent.com/u/747913?v=4","primary_language":"Python","stars":2972,"forks":236,"topics":["alfred","alfred-3","alfred-workflow","alfred3","alfred4","alfred4-workflow","caching","fuzzy-search","http","keychain","python","workflow","workflows"],"archived":false,"github_pushed_at":"2023-01-10T14:43:04+00:00","maintenance_label":"Dormant","url":"https://www.graphcanon.com/tools/deanishe-alfred-workflow","markdown_url":"https://www.graphcanon.com/tools/deanishe-alfred-workflow.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/deanishe-alfred-workflow","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=deanishe-alfred-workflow","description":"Full-featured library for writing Alfred 3 & 4 workflows","homepage_url":"https://www.deanishe.net/alfred-workflow/","license":"Other","open_issues":21,"watchers":57,"ai_summary":null,"readme_excerpt":"<div align=\"center\">\n  <img src=\"./icon.png\" alt=\"Alfred-Workflow logo\" height=\"200\">\n</div>\n\nAlfred-Workflow\n===============\n\nA helper library in Python for authors of workflows for [Alfred 3 and 4][alfred].\n\n\n[![Build Status][shield-github]][action-github]\n[![Coverage Status][shield-coveralls]][coveralls]\n[![Development Status][shield-status]][pypi]\n[![Latest Version][shield-version]][pypi]\n[![Supported Python Versions][shield-pyversions]][pypi]\n\n\n\nSupports Alfred 3 and Alfred 4 on macOS 10.7+ (Python 2.7).\n\nAlfred-Workflow takes the grunt work out of writing a workflow by giving you the tools to create a fast and featureful Alfred workflow from an API, application or library in minutes.\n\nAlways supports all current Alfred features.\n\n\nFeatures\n--------\n\n- Auto-saved settings API for your workflow\n- Super-simple data caching with expiry\n- Fuzzy filtering (with smart diacritic folding)\n- Keychain support for secure storage of passwords, API keys etc.\n- Lightweight web API with [Requests][requests]-like interface\n- Background tasks to keep your workflow responsive\n- Simple generation of Alfred JSON feedback\n- Full support of Alfred's AppleScript/JXA API\n- Catches and logs workflow errors for easier development and support\n- \"Magic\" arguments to help development/debugging\n- Unicode support\n- Pre-configured logging\n- Automatically check for workflow updates via GitHub releases\n- Post notifications via Notification Center\n\n\n### Alfred 4+ features ###\n\n- Advanced modifiers\n- Alfred 4-only updates (won't break older Alfred installs)\n\n\nContents\n--------\n\n\n\n- [Installation](#installation)\n  - [With pip](#with-pip)\n  - [From source](#from-source)\n- [Usage](#usage)\n  - [Workflow script skeleton](#workflow-script-skeleton)\n  - [Examples](#examples)\n    - [Web](#web)\n    - [Keychain access](#keychain-access)\n- [Documentation](#documentation)\n  - [Dash docset](#dash-docset)\n- [Licensing, thanks](#licensing-thanks)\n- [Contributing](#contributing)\n  - [Adding a workflow to the list](#adding-a-workflow-to-the-list)\n  - [Bug reports, pull requests](#bug-reports-pull-requests)\n  - [Contributors](#contributors)\n- [Workflows using Alfred-Workflow](#workflows-using-alfred-workflow)\n\n\n\n\n<a name=\"installation\"></a>\nInstallation\n------------\n\n**Note**: If you're new to Alfred workflows, check out\n[the tutorial][docs-tutorial] in the docs.\n\n\n<a name=\"with-pip\"></a>\n### With pip ###\n\nYou can install Alfred-Workflow directly into your workflow with:\n\n```bash\n# from your workflow directory\npip install --target=. Alfred-Workflow\n```\n\nYou can install any other library available on the [Cheese Shop][cheeseshop] the same way. See the [pip documentation][pip-docs] for more information.\n\nIt is highly advisable to bundle all your workflow's dependencies with your workflow in this way. That way, it will \"just work\".\n\n\n<a name=\"from-source\"></a>\n### From source ###\n\n1. Download the `alfred-workflow-X.X.X.zip` from the [GitHub releases page][releases].\n2. Extract the ZIP archive and place the `workflow` directory in the root folder of your workflow (where `info.plist` is).\n\nYour workflow should look something like this:\n\n    Your Workflow/\n        info.plist\n        icon.png\n        workflow/\n            __init__.py\n            background.py\n            notify.py\n            Notify.tgz\n            update.py\n            version\n            web.py\n            workflow.py\n        yourscript.py\n        etc.\n\nAlternatively, you can clone/download the Alfred-Workflow [repository][repo] and copy the `workflow` subdirectory to your workflow's root directory.\n\n\n<a name=\"usage\"></a>\nUsage\n-----\n\nA few examples of how to use Alfred-Workflow.\n\n\n<a name=\"workflow-script-skeleton\"></a>\n### Workflow script skeleton ###\n\nSet up your workflow scripts as follows (if you wish to use the built-in error handling or `sys.path` modification):\n\n```python\n#!/usr/bin/python\n# encoding: utf-8\n\nimport sys\n\n# Workflow3 supports Alfred 3's new features. The `Workflow` class\n# is also compatibl","github_created_at":"2014-02-21T11:58:19+00:00","created_at":"2026-07-15T10:48:14.714091+00:00","updated_at":"2026-07-15T10:48:17.725726+00:00","categories":[{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"}],"tags":[{"slug":"alfred","name":"alfred"},{"slug":"alfred-3","name":"alfred-3"},{"slug":"alfred-workflow","name":"alfred-workflow"},{"slug":"alfred3","name":"alfred3"},{"slug":"alfred4","name":"alfred4"},{"slug":"alfred4-workflow","name":"alfred4-workflow"},{"slug":"caching","name":"caching"},{"slug":"fuzzy-search","name":"fuzzy-search"}],"trust":{"provenance":{"is_fork":false,"github_id":17055028,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T10:48:15.898Z","maintenance":{"label":"Dormant","score":18,"methodology":"github_public_v1","releases_90d":0,"days_since_push":1281,"last_release_at":"2020-05-22T17:19:57Z"},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-15T10:48:16.349Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-15T10:48:15.651Z"},"languages":{"value":["python"],"source":"github.language","observed_at":"2026-07-15T10:48:15.651Z"},"license_spdx":{"value":"Other","source":"github.license","observed_at":"2026-07-15T10:48:15.651Z"}}}}