n8n
Knwler can easily be integrated into n8n but you need to ensure the following:
- install Knwler as a pipx app via
pipx install knwler - add the pipx path to the n8n env variabels since the execution node does not load the zsh context (or whatever shell env you use)
- run the execution node with
knwler ...in the command
On Mac OS you need to add /Users/<user>/.local/bin to the path. For example, to run n8n as a service you would put the plist below into ~/Library/LaunchAgents/com.<user>.n8n.plist and load/start the service with
launchctl load ~/Library/LaunchAgents/com.<user>.n8n.plistTo stop/unload the service:
launchctl unload ~/Library/LaunchAgents/com.<user>.n8n.plistChecking the status with launchctl list | grep n8n and view logs with tail -f ~/n8n/logs/n8n.log or tail -f ~/n8n/logs/n8n.error.log
The import part is the path /Users/<user>/.local/bin where the pipx knwler command resides:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.<user>.n8n</string>
<key>ProgramArguments</key>
<array>
<string>/Users/<user>/.nvm/versions/node/v22.16.0/bin/node</string>
<string>/Users/<user>/.nvm/versions/node/v22.16.0/bin/n8n</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>
/Users/<user>/.nvm/versions/node/v22.16.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/<user>/conda/bin:/Users/<user>/.local/bin</string>
<key>DB_TYPE</key>
<string>postgresdb</string>
<key>DB_POSTGRESDB_HOST</key>
<string>localhost</string>
<key>DB_POSTGRESDB_PORT</key>
<string>5432</string>
<key>DB_POSTGRESDB_DATABASE</key>
<string>n8n</string>
<key>DB_POSTGRESDB_USER</key>
<string><user></string>
<key>DB_POSTGRESDB_PASSWORD</key>
<string>som3-passw0rd</string>
<key>N8N_PORT</key>
<string>13000</string>
<key>N8N_USER_FOLDER</key>
<string>/Users/<user>/n8n</string>
<key>N8N_CUSTOM_EXTENSIONS</key>
<string>/Users/<user>/n8n/custom</string>
<key>N8N_RESTRICT_FILE_ACCESS_TO</key>
<string></string>
<key>N8N_ALLOW_EXECUTE_COMMAND</key>
<string>true</string>
<key>NODES_EXCLUDE</key>
<string>[]</string>
<key>N8N_ENABLE_NODE_DEV</key>
<string>true</string>
<key>N8N_DIAGNOSTICS_ENABLED</key>
<string>false</string>
<key>EXECUTIONS_DATA_PRUNE</key>
<string>true</string>
<key>EXECUTIONS_DATA_MAX_AGE</key>
<string>1</string>
<key>EXECUTIONS_DATA_MAX_COUNT</key>
<string>1</string>
</dict>
<key>RunAtLoad</key>
<true />
<key>KeepAlive</key>
<true />
<key>StandardOutPath</key>
<string>/Users/<user>/n8n/logs/n8n.log</string>
<key>StandardErrorPath</key>
<string>/Users/<user>/n8n/logs/n8n.error.log</string>
<key>WorkingDirectory</key>
<string>/Users/<user>/n8n</string>
</dict>
</plist>