Nodetool-Apple provides a collection of nodes that let you automate macOS applications from Nodetool. The project exposes Python classes and a DSL so that workflows can interact with built‑in Apple apps like Calendar, Notes, Messages or the Dictionary.
The package currently implements the following nodes:
- Calendar – create events or list events from Apple Calendar
- Dictionary – look up definitions in the macOS Dictionary app
- Messages – send iMessage messages via AppleScript
- Notes – create notes or read notes from the Notes app
- Reminders – create reminders using Reminders.app
- Screen – capture screenshots of the current display
- Speech – speak text using the system text‑to‑speech voices
Each node follows the BaseNode API from nodetool-core and can therefore be
used like any other workflow node.
pip install nodetool-appleThe package requires Python 3.11 or later. On macOS the optional PyObjC dependencies are installed automatically and are needed for the nodes that use Apple frameworks.
from nodetool.workflows.processing_context import ProcessingContext
from nodetool.nodes.apple.notes import CreateNote
context = ProcessingContext()
node = CreateNote(title="Demo Note", body="Created from Nodetool")
await node.process(context)For more involved scenarios take a look at the example workflow in
src/nodetool/examples/nodetool-apple/.
After adding or modifying nodes run the following commands to update metadata and DSL files:
nodetool package scan
nodetool codegenBefore submitting patches make sure the linters and tests succeed:
ruff check .
black --check .
pytest -qThis project is distributed under the terms of the GNU Affero General Public License v3.0. See the LICENSE file for details.