machinaos 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.template +4 -0
- package/README.md +86 -36
- package/bin/cli.js +23 -12
- package/client/Dockerfile +8 -6
- package/client/src/Dashboard.tsx +57 -11
- package/client/src/components/AIAgentNode.tsx +414 -90
- package/client/src/components/CredentialsModal.tsx +122 -5
- package/client/src/components/GenericNode.tsx +39 -2
- package/client/src/components/LocationParameterPanel.tsx +3 -3
- package/client/src/components/ModelNode.tsx +5 -10
- package/client/src/components/SquareNode.tsx +5 -5
- package/client/src/components/ToolkitNode.tsx +22 -17
- package/client/src/components/parameterPanel/InputSection.tsx +152 -18
- package/client/src/components/parameterPanel/MasterSkillEditor.tsx +581 -0
- package/client/src/components/parameterPanel/MiddleSection.tsx +131 -26
- package/client/src/components/ui/CodeEditor.tsx +3 -3
- package/client/src/components/ui/ComponentPalette.tsx +23 -14
- package/client/src/components/ui/SettingsPanel.tsx +289 -131
- package/client/src/hooks/useDragAndDrop.ts +6 -6
- package/client/src/hooks/useParameterPanel.ts +14 -34
- package/client/src/nodeDefinitions/aiAgentNodes.ts +20 -8
- package/client/src/nodeDefinitions/locationNodes.ts +16 -16
- package/client/src/nodeDefinitions/schedulerNodes.ts +38 -22
- package/client/src/nodeDefinitions/skillNodes.ts +37 -1
- package/client/src/nodeDefinitions/socialNodes.ts +750 -0
- package/client/src/nodeDefinitions/specializedAgentNodes.ts +577 -0
- package/client/src/nodeDefinitions/toolNodes.ts +2 -31
- package/client/src/nodeDefinitions.ts +13 -1
- package/client/src/schemas/workflowSchema.ts +3 -3
- package/client/src/services/executionService.ts +6 -3
- package/client/src/store/useAppStore.ts +64 -5
- package/client/src/styles/theme.ts +2 -0
- package/client/src/utils/locationUtils.ts +2 -2
- package/client/src/utils/nodeUtils.ts +3 -3
- package/client/src/utils/workflowExport.ts +26 -2
- package/client/vite.config.js +13 -0
- package/package.json +21 -8
- package/scripts/build.js +49 -80
- package/scripts/clean.js +1 -3
- package/scripts/install.js +235 -0
- package/scripts/postinstall.js +29 -53
- package/scripts/serve-client.js +67 -0
- package/scripts/start.js +34 -6
- package/server/constants.py +27 -3
- package/server/core/config.py +3 -0
- package/server/core/database.py +93 -2
- package/server/main.py +2 -2
- package/server/models/database.py +26 -0
- package/server/models/nodes.py +21 -20
- package/server/routers/websocket.py +163 -1
- package/server/services/ai.py +317 -50
- package/server/services/android/client.py +20 -21
- package/server/services/android_service.py +12 -14
- package/server/services/claude_oauth.py +139 -0
- package/server/services/handlers/__init__.py +10 -0
- package/server/services/handlers/ai.py +238 -225
- package/server/services/handlers/android.py +22 -2
- package/server/services/handlers/social.py +525 -0
- package/server/services/handlers/tools.py +356 -15
- package/server/services/handlers/utility.py +17 -17
- package/server/services/maps.py +8 -8
- package/server/services/node_executor.py +73 -10
- package/server/services/skill_loader.py +10 -13
- package/server/services/workflow.py +4 -0
- package/server/skills/GUIDE.md +137 -0
- package/server/skills/android/personality/SKILL.md +57 -0
- package/server/skills/{android-skill → android/skill}/SKILL.md +2 -0
- package/server/skills/{assistant-personality → assistant/assistant-personality}/SKILL.md +2 -0
- package/server/skills/{code-skill → assistant/code-skill}/SKILL.md +2 -0
- package/server/skills/{http-skill → assistant/http-skill}/SKILL.md +2 -0
- package/server/skills/{maps-skill → assistant/maps-skill}/SKILL.md +2 -0
- package/server/skills/{memory-skill → assistant/memory-skill}/SKILL.md +2 -0
- package/server/skills/{scheduler-skill → assistant/scheduler-skill}/SKILL.md +2 -0
- package/server/skills/{web-search-skill → assistant/web-search-skill}/SKILL.md +2 -0
- package/server/skills/{whatsapp-skill → assistant/whatsapp-skill}/SKILL.md +2 -0
- package/client/.dockerignore +0 -45
- package/client/dist/assets/index-DFSC53FP.css +0 -1
- package/client/dist/assets/index-fJ-1gTf5.js +0 -613
- package/client/dist/index.html +0 -14
- package/scripts/download-binaries.js +0 -178
- package/server/uv.lock +0 -3277
- package/server/whatsapp-rpc/.dockerignore +0 -30
- package/server/whatsapp-rpc/Dockerfile +0 -44
- package/server/whatsapp-rpc/Dockerfile.web +0 -17
- package/server/whatsapp-rpc/README.md +0 -139
- package/server/whatsapp-rpc/bin/whatsapp-rpc-server +0 -0
- package/server/whatsapp-rpc/cli.js +0 -95
- package/server/whatsapp-rpc/configs/config.yaml +0 -7
- package/server/whatsapp-rpc/docker-compose.yml +0 -35
- package/server/whatsapp-rpc/docs/API.md +0 -410
- package/server/whatsapp-rpc/go.mod +0 -67
- package/server/whatsapp-rpc/go.sum +0 -203
- package/server/whatsapp-rpc/node_modules/.package-lock.json +0 -259
- package/server/whatsapp-rpc/node_modules/chalk/license +0 -9
- package/server/whatsapp-rpc/node_modules/chalk/package.json +0 -83
- package/server/whatsapp-rpc/node_modules/chalk/readme.md +0 -297
- package/server/whatsapp-rpc/node_modules/chalk/source/index.d.ts +0 -325
- package/server/whatsapp-rpc/node_modules/chalk/source/index.js +0 -225
- package/server/whatsapp-rpc/node_modules/chalk/source/utilities.js +0 -33
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -236
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -223
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -1
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/browser.js +0 -34
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -55
- package/server/whatsapp-rpc/node_modules/chalk/source/vendor/supports-color/index.js +0 -190
- package/server/whatsapp-rpc/node_modules/commander/LICENSE +0 -22
- package/server/whatsapp-rpc/node_modules/commander/Readme.md +0 -1148
- package/server/whatsapp-rpc/node_modules/commander/esm.mjs +0 -16
- package/server/whatsapp-rpc/node_modules/commander/index.js +0 -26
- package/server/whatsapp-rpc/node_modules/commander/lib/argument.js +0 -145
- package/server/whatsapp-rpc/node_modules/commander/lib/command.js +0 -2179
- package/server/whatsapp-rpc/node_modules/commander/lib/error.js +0 -43
- package/server/whatsapp-rpc/node_modules/commander/lib/help.js +0 -462
- package/server/whatsapp-rpc/node_modules/commander/lib/option.js +0 -329
- package/server/whatsapp-rpc/node_modules/commander/lib/suggestSimilar.js +0 -100
- package/server/whatsapp-rpc/node_modules/commander/package-support.json +0 -16
- package/server/whatsapp-rpc/node_modules/commander/package.json +0 -80
- package/server/whatsapp-rpc/node_modules/commander/typings/esm.d.mts +0 -3
- package/server/whatsapp-rpc/node_modules/commander/typings/index.d.ts +0 -884
- package/server/whatsapp-rpc/node_modules/cross-spawn/LICENSE +0 -21
- package/server/whatsapp-rpc/node_modules/cross-spawn/README.md +0 -89
- package/server/whatsapp-rpc/node_modules/cross-spawn/index.js +0 -39
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/enoent.js +0 -59
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/parse.js +0 -91
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/escape.js +0 -47
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
- package/server/whatsapp-rpc/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
- package/server/whatsapp-rpc/node_modules/cross-spawn/package.json +0 -73
- package/server/whatsapp-rpc/node_modules/execa/index.d.ts +0 -955
- package/server/whatsapp-rpc/node_modules/execa/index.js +0 -309
- package/server/whatsapp-rpc/node_modules/execa/lib/command.js +0 -119
- package/server/whatsapp-rpc/node_modules/execa/lib/error.js +0 -87
- package/server/whatsapp-rpc/node_modules/execa/lib/kill.js +0 -102
- package/server/whatsapp-rpc/node_modules/execa/lib/pipe.js +0 -42
- package/server/whatsapp-rpc/node_modules/execa/lib/promise.js +0 -36
- package/server/whatsapp-rpc/node_modules/execa/lib/stdio.js +0 -49
- package/server/whatsapp-rpc/node_modules/execa/lib/stream.js +0 -133
- package/server/whatsapp-rpc/node_modules/execa/lib/verbose.js +0 -19
- package/server/whatsapp-rpc/node_modules/execa/license +0 -9
- package/server/whatsapp-rpc/node_modules/execa/package.json +0 -90
- package/server/whatsapp-rpc/node_modules/execa/readme.md +0 -822
- package/server/whatsapp-rpc/node_modules/get-stream/license +0 -9
- package/server/whatsapp-rpc/node_modules/get-stream/package.json +0 -53
- package/server/whatsapp-rpc/node_modules/get-stream/readme.md +0 -291
- package/server/whatsapp-rpc/node_modules/get-stream/source/array-buffer.js +0 -84
- package/server/whatsapp-rpc/node_modules/get-stream/source/array.js +0 -32
- package/server/whatsapp-rpc/node_modules/get-stream/source/buffer.js +0 -20
- package/server/whatsapp-rpc/node_modules/get-stream/source/contents.js +0 -101
- package/server/whatsapp-rpc/node_modules/get-stream/source/index.d.ts +0 -119
- package/server/whatsapp-rpc/node_modules/get-stream/source/index.js +0 -5
- package/server/whatsapp-rpc/node_modules/get-stream/source/string.js +0 -36
- package/server/whatsapp-rpc/node_modules/get-stream/source/utils.js +0 -11
- package/server/whatsapp-rpc/node_modules/get-them-args/LICENSE +0 -21
- package/server/whatsapp-rpc/node_modules/get-them-args/README.md +0 -95
- package/server/whatsapp-rpc/node_modules/get-them-args/index.js +0 -97
- package/server/whatsapp-rpc/node_modules/get-them-args/package.json +0 -36
- package/server/whatsapp-rpc/node_modules/human-signals/LICENSE +0 -201
- package/server/whatsapp-rpc/node_modules/human-signals/README.md +0 -168
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/core.js +0 -273
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.d.ts +0 -73
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/main.js +0 -70
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/realtime.js +0 -16
- package/server/whatsapp-rpc/node_modules/human-signals/build/src/signals.js +0 -34
- package/server/whatsapp-rpc/node_modules/human-signals/package.json +0 -61
- package/server/whatsapp-rpc/node_modules/is-stream/index.d.ts +0 -81
- package/server/whatsapp-rpc/node_modules/is-stream/index.js +0 -29
- package/server/whatsapp-rpc/node_modules/is-stream/license +0 -9
- package/server/whatsapp-rpc/node_modules/is-stream/package.json +0 -44
- package/server/whatsapp-rpc/node_modules/is-stream/readme.md +0 -60
- package/server/whatsapp-rpc/node_modules/isexe/LICENSE +0 -15
- package/server/whatsapp-rpc/node_modules/isexe/README.md +0 -51
- package/server/whatsapp-rpc/node_modules/isexe/index.js +0 -57
- package/server/whatsapp-rpc/node_modules/isexe/mode.js +0 -41
- package/server/whatsapp-rpc/node_modules/isexe/package.json +0 -31
- package/server/whatsapp-rpc/node_modules/isexe/test/basic.js +0 -221
- package/server/whatsapp-rpc/node_modules/isexe/windows.js +0 -42
- package/server/whatsapp-rpc/node_modules/kill-port/.editorconfig +0 -12
- package/server/whatsapp-rpc/node_modules/kill-port/.gitattributes +0 -1
- package/server/whatsapp-rpc/node_modules/kill-port/LICENSE +0 -21
- package/server/whatsapp-rpc/node_modules/kill-port/README.md +0 -140
- package/server/whatsapp-rpc/node_modules/kill-port/cli.js +0 -25
- package/server/whatsapp-rpc/node_modules/kill-port/example.js +0 -21
- package/server/whatsapp-rpc/node_modules/kill-port/index.js +0 -46
- package/server/whatsapp-rpc/node_modules/kill-port/logo.png +0 -0
- package/server/whatsapp-rpc/node_modules/kill-port/package.json +0 -41
- package/server/whatsapp-rpc/node_modules/kill-port/pnpm-lock.yaml +0 -4606
- package/server/whatsapp-rpc/node_modules/kill-port/test.js +0 -16
- package/server/whatsapp-rpc/node_modules/merge-stream/LICENSE +0 -21
- package/server/whatsapp-rpc/node_modules/merge-stream/README.md +0 -78
- package/server/whatsapp-rpc/node_modules/merge-stream/index.js +0 -41
- package/server/whatsapp-rpc/node_modules/merge-stream/package.json +0 -19
- package/server/whatsapp-rpc/node_modules/mimic-fn/index.d.ts +0 -52
- package/server/whatsapp-rpc/node_modules/mimic-fn/index.js +0 -71
- package/server/whatsapp-rpc/node_modules/mimic-fn/license +0 -9
- package/server/whatsapp-rpc/node_modules/mimic-fn/package.json +0 -45
- package/server/whatsapp-rpc/node_modules/mimic-fn/readme.md +0 -90
- package/server/whatsapp-rpc/node_modules/npm-run-path/index.d.ts +0 -90
- package/server/whatsapp-rpc/node_modules/npm-run-path/index.js +0 -52
- package/server/whatsapp-rpc/node_modules/npm-run-path/license +0 -9
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.d.ts +0 -31
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/index.js +0 -12
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/license +0 -9
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/package.json +0 -41
- package/server/whatsapp-rpc/node_modules/npm-run-path/node_modules/path-key/readme.md +0 -57
- package/server/whatsapp-rpc/node_modules/npm-run-path/package.json +0 -49
- package/server/whatsapp-rpc/node_modules/npm-run-path/readme.md +0 -104
- package/server/whatsapp-rpc/node_modules/onetime/index.d.ts +0 -59
- package/server/whatsapp-rpc/node_modules/onetime/index.js +0 -41
- package/server/whatsapp-rpc/node_modules/onetime/license +0 -9
- package/server/whatsapp-rpc/node_modules/onetime/package.json +0 -45
- package/server/whatsapp-rpc/node_modules/onetime/readme.md +0 -94
- package/server/whatsapp-rpc/node_modules/path-key/index.d.ts +0 -40
- package/server/whatsapp-rpc/node_modules/path-key/index.js +0 -16
- package/server/whatsapp-rpc/node_modules/path-key/license +0 -9
- package/server/whatsapp-rpc/node_modules/path-key/package.json +0 -39
- package/server/whatsapp-rpc/node_modules/path-key/readme.md +0 -61
- package/server/whatsapp-rpc/node_modules/shebang-command/index.js +0 -19
- package/server/whatsapp-rpc/node_modules/shebang-command/license +0 -9
- package/server/whatsapp-rpc/node_modules/shebang-command/package.json +0 -34
- package/server/whatsapp-rpc/node_modules/shebang-command/readme.md +0 -34
- package/server/whatsapp-rpc/node_modules/shebang-regex/index.d.ts +0 -22
- package/server/whatsapp-rpc/node_modules/shebang-regex/index.js +0 -2
- package/server/whatsapp-rpc/node_modules/shebang-regex/license +0 -9
- package/server/whatsapp-rpc/node_modules/shebang-regex/package.json +0 -35
- package/server/whatsapp-rpc/node_modules/shebang-regex/readme.md +0 -33
- package/server/whatsapp-rpc/node_modules/shell-exec/LICENSE +0 -21
- package/server/whatsapp-rpc/node_modules/shell-exec/README.md +0 -60
- package/server/whatsapp-rpc/node_modules/shell-exec/index.js +0 -47
- package/server/whatsapp-rpc/node_modules/shell-exec/package.json +0 -29
- package/server/whatsapp-rpc/node_modules/signal-exit/LICENSE.txt +0 -16
- package/server/whatsapp-rpc/node_modules/signal-exit/README.md +0 -74
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js +0 -10
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js +0 -279
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/package.json +0 -3
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js +0 -42
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js +0 -4
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js +0 -275
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/package.json +0 -3
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js +0 -39
- package/server/whatsapp-rpc/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
- package/server/whatsapp-rpc/node_modules/signal-exit/package.json +0 -106
- package/server/whatsapp-rpc/node_modules/strip-final-newline/index.js +0 -14
- package/server/whatsapp-rpc/node_modules/strip-final-newline/license +0 -9
- package/server/whatsapp-rpc/node_modules/strip-final-newline/package.json +0 -43
- package/server/whatsapp-rpc/node_modules/strip-final-newline/readme.md +0 -35
- package/server/whatsapp-rpc/node_modules/which/CHANGELOG.md +0 -166
- package/server/whatsapp-rpc/node_modules/which/LICENSE +0 -15
- package/server/whatsapp-rpc/node_modules/which/README.md +0 -54
- package/server/whatsapp-rpc/node_modules/which/bin/node-which +0 -52
- package/server/whatsapp-rpc/node_modules/which/package.json +0 -43
- package/server/whatsapp-rpc/node_modules/which/which.js +0 -125
- package/server/whatsapp-rpc/package-lock.json +0 -272
- package/server/whatsapp-rpc/package.json +0 -30
- package/server/whatsapp-rpc/schema.json +0 -1294
- package/server/whatsapp-rpc/scripts/clean.cjs +0 -66
- package/server/whatsapp-rpc/scripts/cli.js +0 -171
- package/server/whatsapp-rpc/src/go/cmd/server/main.go +0 -91
- package/server/whatsapp-rpc/src/go/config/config.go +0 -49
- package/server/whatsapp-rpc/src/go/rpc/rpc.go +0 -446
- package/server/whatsapp-rpc/src/go/rpc/server.go +0 -112
- package/server/whatsapp-rpc/src/go/whatsapp/history.go +0 -166
- package/server/whatsapp-rpc/src/go/whatsapp/messages.go +0 -390
- package/server/whatsapp-rpc/src/go/whatsapp/service.go +0 -2130
- package/server/whatsapp-rpc/src/go/whatsapp/types.go +0 -261
- package/server/whatsapp-rpc/src/python/pyproject.toml +0 -15
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/__init__.py +0 -4
- package/server/whatsapp-rpc/src/python/whatsapp_rpc/client.py +0 -427
- package/server/whatsapp-rpc/web/app.py +0 -609
- package/server/whatsapp-rpc/web/requirements.txt +0 -6
- package/server/whatsapp-rpc/web/rpc_client.py +0 -427
- package/server/whatsapp-rpc/web/static/openapi.yaml +0 -59
- package/server/whatsapp-rpc/web/templates/base.html +0 -150
- package/server/whatsapp-rpc/web/templates/contacts.html +0 -240
- package/server/whatsapp-rpc/web/templates/dashboard.html +0 -320
- package/server/whatsapp-rpc/web/templates/groups.html +0 -328
- package/server/whatsapp-rpc/web/templates/messages.html +0 -465
- package/server/whatsapp-rpc/web/templates/messaging.html +0 -681
- package/server/whatsapp-rpc/web/templates/send.html +0 -259
- package/server/whatsapp-rpc/web/templates/settings.html +0 -459
package/.env.template
CHANGED
|
@@ -64,6 +64,10 @@ WEBSOCKET_API_KEY=
|
|
|
64
64
|
# WhatsApp Service URL
|
|
65
65
|
WHATSAPP_SERVICE_URL=http://localhost:5000
|
|
66
66
|
|
|
67
|
+
# AI Proxy Configuration (Ollama-style proxy for Claude Code CLI)
|
|
68
|
+
# Default port for AI proxy servers (e.g., Ollama, Claude Code CLI proxy)
|
|
69
|
+
AI_PROXY_DEFAULT_PORT=11434
|
|
70
|
+
|
|
67
71
|
# External API Keys (managed through UI, these are optional defaults)
|
|
68
72
|
OPENAI_API_KEY=
|
|
69
73
|
GOOGLE_MAPS_API_KEY=
|
package/README.md
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
# MachinaOS
|
|
2
2
|
|
|
3
|
-
Open-source
|
|
3
|
+
Open-source Platform to Build Your Own Personal AI Assistant, mashup of clawdbot and n8n, but More Powerful.
|
|
4
|
+
|
|
5
|
+
# Full Capabilities.
|
|
6
|
+
|
|
7
|
+
<img width="1280" height="671" alt="func_img" src="https://github.com/user-attachments/assets/2f14b6c8-3995-4ccc-b076-e40749a83df2" />
|
|
8
|
+
|
|
9
|
+
**60 nodes** | **6 AI providers** | **WebSocket-first** | **Self-hosted**
|
|
4
10
|
|
|
5
11
|
## Quick Start
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g machinaos
|
|
15
|
+
machinaos start
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Open http://localhost:3000
|
|
19
|
+
|
|
20
|
+
<details>
|
|
21
|
+
<summary><b>Other Install Options</b></summary>
|
|
22
|
+
|
|
23
|
+
### One-Line Install (installs all dependencies automatically)
|
|
8
24
|
|
|
9
25
|
**Linux/macOS:**
|
|
10
26
|
```bash
|
|
@@ -16,9 +32,7 @@ curl -fsSL https://raw.githubusercontent.com/trohitg/MachinaOS/main/install.sh |
|
|
|
16
32
|
iwr -useb https://raw.githubusercontent.com/trohitg/MachinaOS/main/install.ps1 | iex
|
|
17
33
|
```
|
|
18
34
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
### Option 2: Clone & Run
|
|
35
|
+
### Clone & Run
|
|
22
36
|
|
|
23
37
|
```bash
|
|
24
38
|
git clone https://github.com/trohitg/MachinaOS.git
|
|
@@ -27,16 +41,7 @@ npm run build
|
|
|
27
41
|
npm run start
|
|
28
42
|
```
|
|
29
43
|
|
|
30
|
-
###
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
npm install -g machinaos
|
|
34
|
-
machinaos start
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Requires Node.js 18+, Python 3.11+, uv, and Go 1.21+ to be pre-installed.
|
|
38
|
-
|
|
39
|
-
### Option 4: Docker
|
|
44
|
+
### Docker
|
|
40
45
|
|
|
41
46
|
```bash
|
|
42
47
|
git clone https://github.com/trohitg/MachinaOS.git
|
|
@@ -44,7 +49,62 @@ cd MachinaOS
|
|
|
44
49
|
npm run docker:up
|
|
45
50
|
```
|
|
46
51
|
|
|
47
|
-
|
|
52
|
+
</details>
|
|
53
|
+
|
|
54
|
+
## Features
|
|
55
|
+
|
|
56
|
+
### AI Integration (6 Providers)
|
|
57
|
+
|
|
58
|
+
| Provider | Models | Features |
|
|
59
|
+
|----------|--------|----------|
|
|
60
|
+
| **OpenAI** | GPT-4o, GPT-4 Turbo, o1, o3, o4-mini | JSON mode, reasoning effort |
|
|
61
|
+
| **Anthropic** | Claude 3.5 Sonnet, Claude 3 Opus, Claude 3 Haiku | Extended thinking |
|
|
62
|
+
| **Google** | Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.0 Flash Thinking | Multimodal, 1M context |
|
|
63
|
+
| **OpenRouter** | 200+ models | Unified API for all providers |
|
|
64
|
+
| **Groq** | Llama, Mixtral, Qwen | Ultra-fast inference |
|
|
65
|
+
| **Cerebras** | Llama, Qwen | Ultra-fast on custom hardware |
|
|
66
|
+
|
|
67
|
+
### AI Agents & Skills
|
|
68
|
+
|
|
69
|
+
- **AI Agent** - LangGraph-powered with tool calling and iterative reasoning
|
|
70
|
+
- **Chat Agent** - Conversational agent with skill support for multi-turn chat
|
|
71
|
+
- **10 Skills** - WhatsApp, Maps, HTTP, Scheduler, Android, Code, Memory, Web Search, Custom
|
|
72
|
+
- **4 Tools** - Calculator, Current Time, Web Search, Android Toolkit
|
|
73
|
+
- **Simple Memory** - Markdown-based conversation history with vector storage
|
|
74
|
+
|
|
75
|
+
### Platform Integrations
|
|
76
|
+
|
|
77
|
+
- **WhatsApp** - Send/receive messages with QR pairing, filters, group support
|
|
78
|
+
- **Android** - 17 service nodes for device control (battery, WiFi, Bluetooth, apps, camera, sensors)
|
|
79
|
+
- **HTTP/Webhooks** - REST API integration with event-driven triggers
|
|
80
|
+
- **Google Maps** - Geocoding, nearby places, directions
|
|
81
|
+
|
|
82
|
+
### Document Processing (RAG Pipeline)
|
|
83
|
+
|
|
84
|
+
- **HTTP Scraper** - Scrape URLs with pagination and date ranges
|
|
85
|
+
- **File Downloader** - Parallel downloads with semaphore concurrency
|
|
86
|
+
- **Document Parser** - PyPDF, Marker (OCR), Unstructured, BeautifulSoup
|
|
87
|
+
- **Text Chunker** - Recursive, markdown, or token-based splitting
|
|
88
|
+
- **Embedding Generator** - HuggingFace, OpenAI, Ollama embeddings
|
|
89
|
+
- **Vector Store** - ChromaDB, Qdrant, Pinecone backends
|
|
90
|
+
|
|
91
|
+
## Node Categories
|
|
92
|
+
|
|
93
|
+
| Category | Count | Description |
|
|
94
|
+
|----------|-------|-------------|
|
|
95
|
+
| AI Models | 6 | OpenAI, Anthropic, Google, OpenRouter, Groq, Cerebras |
|
|
96
|
+
| AI Agents | 3 | AI Agent, Chat Agent, Simple Memory |
|
|
97
|
+
| AI Skills | 10 | WhatsApp, Maps, HTTP, Scheduler, Android, Code, etc. |
|
|
98
|
+
| AI Tools | 4 | Calculator, Time, Search, Android Toolkit |
|
|
99
|
+
| WhatsApp | 3 | Send, Receive, Database |
|
|
100
|
+
| Android | 17 | Device control and monitoring |
|
|
101
|
+
| Documents | 6 | RAG pipeline nodes |
|
|
102
|
+
| Utilities | 5 | HTTP, Webhooks, Chat Trigger, Console |
|
|
103
|
+
| Location | 3 | Google Maps integration |
|
|
104
|
+
| Code | 2 | Python and JavaScript executors |
|
|
105
|
+
| Workflow | 1 | Start node |
|
|
106
|
+
|
|
107
|
+
**Total: 60 nodes**
|
|
48
108
|
|
|
49
109
|
## Prerequisites
|
|
50
110
|
|
|
@@ -67,26 +127,6 @@ The install script handles these automatically, but for manual installation:
|
|
|
67
127
|
| `machinaos docker:down` | Stop Docker containers |
|
|
68
128
|
| `machinaos help` | Show all available commands |
|
|
69
129
|
|
|
70
|
-
## Local Development
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
git clone https://github.com/trohitg/MachinaOS.git
|
|
74
|
-
cd MachinaOS
|
|
75
|
-
npm run build
|
|
76
|
-
npm run start
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Features
|
|
82
|
-
|
|
83
|
-
- **AI Workflows** - OpenAI, Claude, Gemini, Groq, OpenRouter models with tool calling
|
|
84
|
-
- **AI Agents** - LangGraph-powered agents with memory and skills
|
|
85
|
-
- **Android Automation** - Control your phone via 17 service nodes
|
|
86
|
-
- **WhatsApp Bots** - Send/receive messages with filters and triggers
|
|
87
|
-
- **HTTP/Webhooks** - API integrations with event-driven triggers
|
|
88
|
-
- **Document Processing** - RAG pipeline with vector storage
|
|
89
|
-
|
|
90
130
|
## Configuration
|
|
91
131
|
|
|
92
132
|
**API Keys:** Click **Credentials** button in toolbar to add API keys for OpenAI, Claude, Google Maps, etc.
|
|
@@ -131,6 +171,16 @@ MachinaOS/
|
|
|
131
171
|
- **Services:** WhatsApp (Go + whatsmeow), WebSocket relay
|
|
132
172
|
- **Package Manager:** uv (Python), npm (Node.js)
|
|
133
173
|
|
|
174
|
+
## Documentation
|
|
175
|
+
|
|
176
|
+
Full documentation available at: https://docs.machinaos.dev
|
|
177
|
+
|
|
178
|
+
- [Installation Guide](https://docs.machinaos.dev/installation)
|
|
179
|
+
- [Quick Start](https://docs.machinaos.dev/quickstart)
|
|
180
|
+
- [Node Catalog](https://docs.machinaos.dev/nodes/overview)
|
|
181
|
+
- [AI Models](https://docs.machinaos.dev/nodes/ai-models)
|
|
182
|
+
- [AI Agents](https://docs.machinaos.dev/nodes/ai-agent)
|
|
183
|
+
|
|
134
184
|
## Troubleshooting
|
|
135
185
|
|
|
136
186
|
**Port already in use:**
|
package/bin/cli.js
CHANGED
|
@@ -44,14 +44,31 @@ function getVersion(cmd) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// Add common binary paths to PATH (Linux installs uv to ~/.local/bin)
|
|
48
|
+
function expandPath() {
|
|
49
|
+
const home = process.env.HOME || process.env.USERPROFILE;
|
|
50
|
+
if (home) {
|
|
51
|
+
const additionalPaths = [
|
|
52
|
+
`${home}/.local/bin`, // uv, cargo installs
|
|
53
|
+
`${home}/.cargo/bin`, // Rust tools
|
|
54
|
+
'/usr/local/bin', // Homebrew on macOS
|
|
55
|
+
];
|
|
56
|
+
const currentPath = process.env.PATH || '';
|
|
57
|
+
const sep = process.platform === 'win32' ? ';' : ':';
|
|
58
|
+
const newPaths = additionalPaths.filter(p => !currentPath.includes(p));
|
|
59
|
+
if (newPaths.length > 0) {
|
|
60
|
+
process.env.PATH = newPaths.join(sep) + sep + currentPath;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
47
65
|
function checkDeps() {
|
|
48
66
|
const errors = [];
|
|
49
|
-
const warnings = [];
|
|
50
67
|
|
|
51
68
|
// Node.js version check
|
|
52
69
|
const nodeVersion = parseInt(process.version.slice(1));
|
|
53
|
-
if (nodeVersion <
|
|
54
|
-
errors.push(`Node.js
|
|
70
|
+
if (nodeVersion < 20) {
|
|
71
|
+
errors.push(`Node.js 20+ required (found ${process.version})`);
|
|
55
72
|
}
|
|
56
73
|
|
|
57
74
|
// Python version check
|
|
@@ -73,15 +90,6 @@ function checkDeps() {
|
|
|
73
90
|
errors.push('uv (Python package manager) - https://docs.astral.sh/uv/');
|
|
74
91
|
}
|
|
75
92
|
|
|
76
|
-
// Go check (warning only - needed for WhatsApp service)
|
|
77
|
-
if (!getVersion('go version')) {
|
|
78
|
-
warnings.push('Go 1.21+ (optional, for WhatsApp service) - https://go.dev/dl/');
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (warnings.length > 0) {
|
|
82
|
-
console.warn('Warnings:\n' + warnings.map(w => ` - ${w}`).join('\n') + '\n');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
93
|
if (errors.length > 0) {
|
|
86
94
|
console.error('Missing required dependencies:\n' + errors.map(e => ` - ${e}`).join('\n'));
|
|
87
95
|
console.error('\nInstall the missing dependencies and try again.');
|
|
@@ -99,6 +107,9 @@ function run(script) {
|
|
|
99
107
|
child.on('close', (code) => process.exit(code || 0));
|
|
100
108
|
}
|
|
101
109
|
|
|
110
|
+
// Expand PATH to find tools like uv installed in user directories
|
|
111
|
+
expandPath();
|
|
112
|
+
|
|
102
113
|
const cmd = process.argv[2] || 'help';
|
|
103
114
|
|
|
104
115
|
if (cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
package/client/Dockerfile
CHANGED
|
@@ -5,10 +5,10 @@ FROM node:22-alpine AS development
|
|
|
5
5
|
WORKDIR /app
|
|
6
6
|
|
|
7
7
|
# Copy package files
|
|
8
|
-
COPY package.json
|
|
8
|
+
COPY package.json ./
|
|
9
9
|
|
|
10
|
-
# Install dependencies
|
|
11
|
-
RUN npm
|
|
10
|
+
# Install dependencies
|
|
11
|
+
RUN npm install
|
|
12
12
|
|
|
13
13
|
# Copy application code
|
|
14
14
|
COPY . .
|
|
@@ -28,10 +28,10 @@ FROM node:22-alpine AS builder
|
|
|
28
28
|
WORKDIR /app
|
|
29
29
|
|
|
30
30
|
# Copy package files
|
|
31
|
-
COPY package.json
|
|
31
|
+
COPY package.json ./
|
|
32
32
|
|
|
33
|
-
# Install dependencies
|
|
34
|
-
RUN npm
|
|
33
|
+
# Install dependencies
|
|
34
|
+
RUN npm install
|
|
35
35
|
|
|
36
36
|
# Copy application code
|
|
37
37
|
COPY . .
|
|
@@ -41,12 +41,14 @@ ARG VITE_AUTH_ENABLED=true
|
|
|
41
41
|
ARG VITE_PYTHON_SERVICE_URL=
|
|
42
42
|
ARG VITE_WHATSAPP_SERVICE_URL=
|
|
43
43
|
ARG VITE_ANDROID_RELAY_URL=
|
|
44
|
+
ARG VITE_APP_VERSION=0.0.0
|
|
44
45
|
|
|
45
46
|
# Expose build args as environment variables for Vite build
|
|
46
47
|
ENV VITE_AUTH_ENABLED=$VITE_AUTH_ENABLED
|
|
47
48
|
ENV VITE_PYTHON_SERVICE_URL=$VITE_PYTHON_SERVICE_URL
|
|
48
49
|
ENV VITE_WHATSAPP_SERVICE_URL=$VITE_WHATSAPP_SERVICE_URL
|
|
49
50
|
ENV VITE_ANDROID_RELAY_URL=$VITE_ANDROID_RELAY_URL
|
|
51
|
+
ENV VITE_APP_VERSION=$VITE_APP_VERSION
|
|
50
52
|
|
|
51
53
|
# Increase Node.js memory limit for large builds (GCP e2-micro has limited RAM)
|
|
52
54
|
ENV NODE_OPTIONS="--max-old-space-size=2048"
|
package/client/src/Dashboard.tsx
CHANGED
|
@@ -27,8 +27,10 @@ import { CHAT_NODE_TYPES } from './nodeDefinitions/chatNodes';
|
|
|
27
27
|
import { CODE_NODE_TYPES } from './nodeDefinitions/codeNodes';
|
|
28
28
|
import { UTILITY_NODE_TYPES } from './nodeDefinitions/utilityNodes';
|
|
29
29
|
import { TOOL_NODE_TYPES } from './nodeDefinitions/toolNodes';
|
|
30
|
+
import { SPECIALIZED_AGENT_TYPES } from './nodeDefinitions/specializedAgentNodes';
|
|
30
31
|
import { SKILL_NODE_TYPES } from './nodeDefinitions/skillNodes';
|
|
31
32
|
import { DOCUMENT_NODE_TYPES } from './nodeDefinitions/documentNodes';
|
|
33
|
+
import { SOCIAL_NODE_TYPES } from './nodeDefinitions/socialNodes';
|
|
32
34
|
import ParameterPanel from './ParameterPanel';
|
|
33
35
|
import LocationParameterPanel from './components/LocationParameterPanel';
|
|
34
36
|
import { useAppStore } from './store/useAppStore';
|
|
@@ -65,6 +67,12 @@ const createNodeTypes = (): Record<string, React.ComponentType<any>> => {
|
|
|
65
67
|
// Trigger nodes (no input handles) - check by group or specific types
|
|
66
68
|
const TRIGGER_NODE_TYPES = ['start', 'cronScheduler', 'webhookTrigger', 'whatsappReceive', 'chatTrigger'];
|
|
67
69
|
|
|
70
|
+
// Pre-register specialized agent nodes explicitly to ensure they're always available
|
|
71
|
+
// This handles cases where nodeDefinitions iteration order might miss them
|
|
72
|
+
SPECIALIZED_AGENT_TYPES.forEach(type => {
|
|
73
|
+
types[type] = AIAgentNode;
|
|
74
|
+
});
|
|
75
|
+
|
|
68
76
|
Object.keys(nodeDefinitions).forEach(type => {
|
|
69
77
|
const definition = nodeDefinitions[type];
|
|
70
78
|
|
|
@@ -98,20 +106,20 @@ const createNodeTypes = (): Record<string, React.ComponentType<any>> => {
|
|
|
98
106
|
// Utility nodes (HTTP, Webhooks) use SquareNode component
|
|
99
107
|
// Note: webhookTrigger is already handled as trigger above
|
|
100
108
|
types[type] = SquareNode;
|
|
109
|
+
} else if (SPECIALIZED_AGENT_TYPES.includes(type)) {
|
|
110
|
+
// Specialized agent nodes use AIAgentNode (rectangular card with bottom handles)
|
|
111
|
+
types[type] = AIAgentNode;
|
|
101
112
|
} else if (TOOL_NODE_TYPES.includes(type)) {
|
|
102
|
-
|
|
103
|
-
// Exception: androidTool uses ToolkitNode with top/bottom handles
|
|
104
|
-
if (type === 'androidTool') {
|
|
105
|
-
types[type] = ToolkitNode;
|
|
106
|
-
} else {
|
|
107
|
-
types[type] = ModelNode;
|
|
108
|
-
}
|
|
113
|
+
types[type] = SquareNode;
|
|
109
114
|
} else if (SKILL_NODE_TYPES.includes(type)) {
|
|
110
115
|
// Skill nodes use ToolkitNode (vertical handle layout like Android Toolkit)
|
|
111
116
|
types[type] = ToolkitNode;
|
|
112
117
|
} else if (DOCUMENT_NODE_TYPES.includes(type)) {
|
|
113
118
|
// Document processing nodes use SquareNode component
|
|
114
119
|
types[type] = SquareNode;
|
|
120
|
+
} else if (SOCIAL_NODE_TYPES.includes(type)) {
|
|
121
|
+
// Social nodes use AIAgentNode for multiple output handles support
|
|
122
|
+
types[type] = AIAgentNode;
|
|
115
123
|
} else if (definition?.group?.includes('model')) {
|
|
116
124
|
// Fallback for other model nodes
|
|
117
125
|
types[type] = ModelNode;
|
|
@@ -293,7 +301,8 @@ const DashboardContent: React.FC = () => {
|
|
|
293
301
|
} = useWorkflowManagement();
|
|
294
302
|
|
|
295
303
|
const { collapsedSections, searchQuery, setSearchQuery, toggleSection } = useComponentPalette();
|
|
296
|
-
const { saveNodeParameters, executeWorkflow, deployWorkflow, cancelDeployment, nodeStatuses, deploymentStatus, workflowLock } = useWebSocket();
|
|
304
|
+
const { saveNodeParameters, executeWorkflow, deployWorkflow, cancelDeployment, nodeStatuses, deploymentStatus, workflowLock, isConnected, sendRequest } = useWebSocket();
|
|
305
|
+
const applyUIDefaults = useAppStore((state) => state.applyUIDefaults);
|
|
297
306
|
|
|
298
307
|
// Scope deployment and lock to current workflow (n8n pattern)
|
|
299
308
|
// Only show as "running" or "locked" if it applies to the currently viewed workflow
|
|
@@ -334,7 +343,10 @@ const DashboardContent: React.FC = () => {
|
|
|
334
343
|
});
|
|
335
344
|
const [settingsOpen, setSettingsOpen] = React.useState(false);
|
|
336
345
|
const [credentialsOpen, setCredentialsOpen] = React.useState(false);
|
|
337
|
-
|
|
346
|
+
|
|
347
|
+
// Console panel visibility from store (database-backed)
|
|
348
|
+
const consolePanelVisible = useAppStore((state) => state.consolePanelVisible);
|
|
349
|
+
const toggleConsolePanelVisible = useAppStore((state) => state.toggleConsolePanelVisible);
|
|
338
350
|
|
|
339
351
|
// Context menu state for node right-click
|
|
340
352
|
const [contextMenu, setContextMenu] = React.useState<{
|
|
@@ -348,6 +360,40 @@ const DashboardContent: React.FC = () => {
|
|
|
348
360
|
localStorage.setItem('workflow_settings', JSON.stringify(settings));
|
|
349
361
|
}, [settings]);
|
|
350
362
|
|
|
363
|
+
// Load UI defaults from database on initial WebSocket connection
|
|
364
|
+
const hasLoadedUIDefaults = React.useRef(false);
|
|
365
|
+
React.useEffect(() => {
|
|
366
|
+
if (!isConnected || hasLoadedUIDefaults.current) return;
|
|
367
|
+
hasLoadedUIDefaults.current = true;
|
|
368
|
+
|
|
369
|
+
const loadUIDefaults = async () => {
|
|
370
|
+
try {
|
|
371
|
+
const response = await sendRequest<{ settings: any }>('get_user_settings', {});
|
|
372
|
+
if (response?.settings) {
|
|
373
|
+
applyUIDefaults({
|
|
374
|
+
sidebarDefaultOpen: response.settings.sidebar_default_open,
|
|
375
|
+
componentPaletteDefaultOpen: response.settings.component_palette_default_open,
|
|
376
|
+
consolePanelDefaultOpen: response.settings.console_panel_default_open,
|
|
377
|
+
});
|
|
378
|
+
// Also update local settings state for auto-save preferences
|
|
379
|
+
setSettings(prev => ({
|
|
380
|
+
...prev,
|
|
381
|
+
autoSave: response.settings.auto_save ?? prev.autoSave,
|
|
382
|
+
autoSaveInterval: response.settings.auto_save_interval ?? prev.autoSaveInterval,
|
|
383
|
+
sidebarDefaultOpen: response.settings.sidebar_default_open ?? prev.sidebarDefaultOpen,
|
|
384
|
+
componentPaletteDefaultOpen: response.settings.component_palette_default_open ?? prev.componentPaletteDefaultOpen,
|
|
385
|
+
consolePanelDefaultOpen: response.settings.console_panel_default_open ?? prev.consolePanelDefaultOpen,
|
|
386
|
+
}));
|
|
387
|
+
console.log('[Dashboard] UI defaults loaded from database');
|
|
388
|
+
}
|
|
389
|
+
} catch (error) {
|
|
390
|
+
console.error('[Dashboard] Failed to load UI defaults:', error);
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
loadUIDefaults();
|
|
395
|
+
}, [isConnected, sendRequest, applyUIDefaults]);
|
|
396
|
+
|
|
351
397
|
// Update nodes with execution status classes
|
|
352
398
|
const styledNodes = React.useMemo(() => {
|
|
353
399
|
return nodes.map(node => {
|
|
@@ -1140,8 +1186,8 @@ const DashboardContent: React.FC = () => {
|
|
|
1140
1186
|
|
|
1141
1187
|
{/* Console Panel - n8n-style debug output at bottom */}
|
|
1142
1188
|
<ConsolePanel
|
|
1143
|
-
isOpen={
|
|
1144
|
-
onToggle={
|
|
1189
|
+
isOpen={consolePanelVisible}
|
|
1190
|
+
onToggle={toggleConsolePanelVisible}
|
|
1145
1191
|
nodes={nodes}
|
|
1146
1192
|
/>
|
|
1147
1193
|
|