neoagent 2.1.18-beta.8 → 2.1.18-beta.80
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.example +64 -0
- package/README.md +6 -11
- package/docs/automation.md +53 -0
- package/docs/capabilities.md +125 -0
- package/docs/configuration.md +101 -34
- package/docs/getting-started.md +64 -0
- package/docs/hardware.md +11 -0
- package/docs/index.md +50 -0
- package/docs/integrations.md +79 -0
- package/docs/operations.md +58 -0
- package/docs/skills.md +21 -11
- package/docs/why-neoagent.md +19 -0
- package/extensions/chrome-browser/background.mjs +291 -0
- package/extensions/chrome-browser/config.mjs +1 -0
- package/extensions/chrome-browser/manifest.json +17 -0
- package/extensions/chrome-browser/popup.css +288 -0
- package/extensions/chrome-browser/popup.html +55 -0
- package/extensions/chrome-browser/popup.js +269 -0
- package/extensions/chrome-browser/protocol.mjs +316 -0
- package/lib/install_helpers.js +1 -1
- package/lib/manager.js +95 -44
- package/package.json +21 -2
- package/runtime/env.js +17 -0
- package/runtime/git_helpers.js +41 -0
- package/runtime/paths.js +37 -4
- package/runtime/release_channel.js +1 -12
- package/server/catalog_sources/store-bundles/README.md +5 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-art/SKILL.md +321 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/README.md +290 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/SKILL.md +205 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/architecture.md +802 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/composition.md +892 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/effects.md +1865 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/inputs.md +685 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/optimization.md +688 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/scenes.md +1011 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/shaders.md +1385 -0
- package/server/catalog_sources/store-bundles/skills/creative/ascii-video/references/troubleshooting.md +367 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/SKILL.md +194 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/references/colors.md +44 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/references/dark-mode.md +68 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/references/examples.md +141 -0
- package/server/catalog_sources/store-bundles/skills/creative/excalidraw/scripts/upload.py +133 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/README.md +23 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/SKILL.md +241 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/animation-design-thinking.md +161 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/animations.md +282 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/camera-and-3d.md +135 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/decorations.md +202 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/equations.md +216 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/graphs-and-data.md +163 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/mobjects.md +333 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/paper-explainer.md +255 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/production-quality.md +190 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/rendering.md +185 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/scene-planning.md +118 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/troubleshooting.md +135 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/updaters-and-trackers.md +260 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/references/visual-design.md +124 -0
- package/server/catalog_sources/store-bundles/skills/creative/manim-video/scripts/setup.sh +14 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/README.md +64 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/SKILL.md +513 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/animation.md +439 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/color-systems.md +352 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/core-api.md +410 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/export-pipeline.md +566 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/interaction.md +398 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/shapes-and-geometry.md +300 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/troubleshooting.md +532 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/typography.md +302 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/visual-effects.md +895 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/references/webgl-and-3d.md +423 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/export-frames.js +179 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/render.sh +108 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/serve.sh +28 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/scripts/setup.sh +87 -0
- package/server/catalog_sources/store-bundles/skills/creative/p5js/templates/viewer.html +395 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/SKILL.md +207 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/airbnb.md +259 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/airtable.md +102 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/apple.md +326 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/bmw.md +193 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/cal.md +272 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/claude.md +325 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/clay.md +317 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/clickhouse.md +294 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/cohere.md +279 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/coinbase.md +142 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/composio.md +320 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/cursor.md +322 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/elevenlabs.md +278 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/expo.md +294 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/figma.md +233 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/framer.md +259 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/hashicorp.md +291 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/ibm.md +345 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/intercom.md +159 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/kraken.md +138 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/linear.app.md +380 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/lovable.md +311 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/minimax.md +270 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/mintlify.md +339 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/miro.md +121 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/mistral.ai.md +274 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/mongodb.md +279 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/notion.md +322 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/nvidia.md +306 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/ollama.md +280 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/opencode.ai.md +294 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/pinterest.md +243 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/posthog.md +269 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/raycast.md +281 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/replicate.md +274 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/resend.md +316 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/revolut.md +198 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/runwayml.md +257 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/sanity.md +370 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/sentry.md +275 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/spacex.md +207 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/spotify.md +259 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/stripe.md +335 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/supabase.md +268 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/superhuman.md +265 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/together.ai.md +276 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/uber.md +308 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/vercel.md +323 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/voltagent.md +336 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/warp.md +266 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/webflow.md +105 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/wise.md +186 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/x.ai.md +270 -0
- package/server/catalog_sources/store-bundles/skills/creative/popular-web-designs/templates/zapier.md +341 -0
- package/server/catalog_sources/store-bundles/skills/creative/songwriting-and-ai-music/SKILL.md +289 -0
- package/server/catalog_sources/store-bundles/skills/data-science/jupyter-live-kernel/SKILL.md +171 -0
- package/server/catalog_sources/store-bundles/skills/email/himalaya/SKILL.md +278 -0
- package/server/catalog_sources/store-bundles/skills/email/himalaya/references/configuration.md +184 -0
- package/server/catalog_sources/store-bundles/skills/email/himalaya/references/message-composition.md +199 -0
- package/server/catalog_sources/store-bundles/skills/github/codebase-inspection/SKILL.md +115 -0
- package/server/catalog_sources/store-bundles/skills/github/github-auth/SKILL.md +246 -0
- package/server/catalog_sources/store-bundles/skills/github/github-auth/scripts/gh-env.sh +66 -0
- package/server/catalog_sources/store-bundles/skills/github/github-code-review/SKILL.md +480 -0
- package/server/catalog_sources/store-bundles/skills/github/github-code-review/references/review-output-template.md +74 -0
- package/server/catalog_sources/store-bundles/skills/github/github-issues/SKILL.md +369 -0
- package/server/catalog_sources/store-bundles/skills/github/github-issues/templates/bug-report.md +35 -0
- package/server/catalog_sources/store-bundles/skills/github/github-issues/templates/feature-request.md +31 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/SKILL.md +366 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/references/ci-troubleshooting.md +183 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/references/conventional-commits.md +71 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
- package/server/catalog_sources/store-bundles/skills/github/github-pr-workflow/templates/pr-body-feature.md +33 -0
- package/server/catalog_sources/store-bundles/skills/github/github-repo-management/SKILL.md +515 -0
- package/server/catalog_sources/store-bundles/skills/github/github-repo-management/references/github-api-cheatsheet.md +161 -0
- package/server/catalog_sources/store-bundles/skills/leisure/find-nearby/SKILL.md +69 -0
- package/server/catalog_sources/store-bundles/skills/leisure/find-nearby/scripts/find_nearby.py +184 -0
- package/server/catalog_sources/store-bundles/skills/mcp/mcporter/SKILL.md +122 -0
- package/server/catalog_sources/store-bundles/skills/mcp/native-mcp/SKILL.md +356 -0
- package/server/catalog_sources/store-bundles/skills/media/gif-search/SKILL.md +86 -0
- package/server/catalog_sources/store-bundles/skills/media/youtube-content/SKILL.md +72 -0
- package/server/catalog_sources/store-bundles/skills/media/youtube-content/references/output-formats.md +56 -0
- package/server/catalog_sources/store-bundles/skills/media/youtube-content/scripts/fetch_transcript.py +124 -0
- package/server/catalog_sources/store-bundles/skills/note-taking/obsidian/SKILL.md +66 -0
- package/server/catalog_sources/store-bundles/skills/productivity/catbox-upload-skill/SKILL.md +99 -0
- package/server/catalog_sources/store-bundles/skills/productivity/catbox-upload-skill/scripts/upload.sh +155 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/SKILL.md +261 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/references/gmail-search-syntax.md +63 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/scripts/google_api.py +519 -0
- package/server/catalog_sources/store-bundles/skills/productivity/google-workspace/scripts/setup.py +363 -0
- package/server/catalog_sources/store-bundles/skills/productivity/linear/SKILL.md +297 -0
- package/server/catalog_sources/store-bundles/skills/productivity/nano-pdf/SKILL.md +51 -0
- package/server/catalog_sources/store-bundles/skills/productivity/notion/SKILL.md +171 -0
- package/server/catalog_sources/store-bundles/skills/productivity/notion/references/block-types.md +112 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/DESCRIPTION.md +3 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/SKILL.md +171 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/scripts/extract_marker.py +87 -0
- package/server/catalog_sources/store-bundles/skills/productivity/ocr-and-documents/scripts/extract_pymupdf.py +98 -0
- package/server/catalog_sources/store-bundles/skills/research/arxiv/SKILL.md +281 -0
- package/server/catalog_sources/store-bundles/skills/research/arxiv/scripts/search_arxiv.py +114 -0
- package/server/catalog_sources/store-bundles/skills/research/blogwatcher/SKILL.md +136 -0
- package/server/catalog_sources/store-bundles/skills/research/llm-wiki/SKILL.md +460 -0
- package/server/catalog_sources/store-bundles/skills/research/polymarket/SKILL.md +76 -0
- package/server/catalog_sources/store-bundles/skills/research/polymarket/references/api-endpoints.md +220 -0
- package/server/catalog_sources/store-bundles/skills/research/polymarket/scripts/polymarket.py +284 -0
- package/server/catalog_sources/store-bundles/skills/software-development/plan/SKILL.md +57 -0
- package/server/catalog_sources/store-bundles/skills/software-development/requesting-code-review/SKILL.md +282 -0
- package/server/catalog_sources/store-bundles/skills/software-development/subagent-driven-development/SKILL.md +342 -0
- package/server/catalog_sources/store-bundles/skills/software-development/systematic-debugging/SKILL.md +366 -0
- package/server/catalog_sources/store-bundles/skills/software-development/test-driven-development/SKILL.md +342 -0
- package/server/catalog_sources/store-bundles/skills/software-development/writing-plans/SKILL.md +296 -0
- package/server/config/origins.js +17 -4
- package/server/db/database.js +684 -30
- package/server/guest_agent.js +269 -0
- package/server/http/errors.js +7 -2
- package/server/http/middleware.js +69 -46
- package/server/http/routes.js +26 -2
- package/server/http/socket.js +7 -1
- package/server/index.js +56 -5
- package/server/middleware/auth.js +33 -9
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/AssetManifest.bin +1 -1
- package/server/public/assets/AssetManifest.bin.json +1 -1
- package/server/public/assets/NOTICES +603 -25
- package/server/public/assets/assets/branding/app_icon_256.png +0 -0
- package/server/public/assets/assets/branding/tray_icon_template.png +0 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/assets/packages/record_web/assets/js/record.fixwebmduration.js +507 -0
- package/server/public/assets/packages/record_web/assets/js/record.worklet.js +407 -0
- package/server/public/flutter_bootstrap.js +2 -2
- package/server/public/main.dart.js +83080 -74779
- package/server/routes/_helpers/agentRunContext.js +10 -0
- package/server/routes/_helpers/readChunkBody.js +71 -0
- package/server/routes/account.js +261 -0
- package/server/routes/agent_profiles.js +64 -0
- package/server/routes/agents.js +45 -30
- package/server/routes/android.js +4 -0
- package/server/routes/artifacts.js +47 -0
- package/server/routes/auth.js +537 -26
- package/server/routes/browser.js +17 -2
- package/server/routes/browser_extension.js +149 -0
- package/server/routes/desktop.js +240 -0
- package/server/routes/integrations.js +186 -4
- package/server/routes/mcp.js +58 -18
- package/server/routes/memory.js +34 -17
- package/server/routes/messaging.js +98 -20
- package/server/routes/recordings.js +1 -18
- package/server/routes/scheduler.js +25 -4
- package/server/routes/settings.js +239 -42
- package/server/routes/skills.js +7 -23
- package/server/routes/store.js +42 -1212
- package/server/routes/voice_assistant.js +138 -0
- package/server/routes/wearable_device.js +147 -0
- package/server/services/account/auth_provider_manager.js +436 -0
- package/server/services/account/auth_providers/google.js +102 -0
- package/server/services/account/auth_providers/registry.js +23 -0
- package/server/services/account/email.js +28 -0
- package/server/services/account/geoip.js +81 -0
- package/server/services/account/password_policy.js +133 -0
- package/server/services/account/service_email.js +491 -0
- package/server/services/account/session_secret.js +40 -0
- package/server/services/account/sessions.js +221 -0
- package/server/services/account/two_factor.js +239 -0
- package/server/services/agents/manager.js +345 -0
- package/server/services/ai/capabilityHealth.js +141 -36
- package/server/services/ai/engine.js +1054 -291
- package/server/services/ai/history.js +23 -18
- package/server/services/ai/imageAnalysis.js +104 -0
- package/server/services/ai/interim.js +62 -0
- package/server/services/ai/models.js +21 -17
- package/server/services/ai/multiStep.js +1 -0
- package/server/services/ai/outputSanitizer.js +19 -2
- package/server/services/ai/providers/anthropic.js +13 -2
- package/server/services/ai/recordingInsights.js +42 -12
- package/server/services/ai/runContext.js +47 -0
- package/server/services/ai/settings.js +119 -32
- package/server/services/ai/systemPrompt.js +74 -2
- package/server/services/ai/taskAnalysis.js +320 -130
- package/server/services/ai/toolResult.js +58 -13
- package/server/services/ai/toolRunner.js +66 -11
- package/server/services/ai/tools.js +472 -154
- package/server/services/android/controller.js +46 -6
- package/server/services/artifacts/store.js +147 -0
- package/server/services/browser/controller.js +42 -7
- package/server/services/browser/extension/gateway.js +109 -0
- package/server/services/browser/extension/protocol.js +52 -0
- package/server/services/browser/extension/provider.js +178 -0
- package/server/services/browser/extension/registry.js +353 -0
- package/server/services/browser/extension/zip.js +153 -0
- package/server/services/cli/executor.js +16 -2
- package/server/services/commands/router.js +53 -38
- package/server/services/desktop/auth.js +70 -0
- package/server/services/desktop/gateway.js +215 -0
- package/server/services/desktop/protocol.js +64 -0
- package/server/services/desktop/provider.js +176 -0
- package/server/services/desktop/registry.js +521 -0
- package/server/services/integrations/access.js +54 -0
- package/server/services/integrations/env.js +36 -6
- package/server/services/integrations/figma/provider.js +328 -0
- package/server/services/integrations/google/calendar.js +32 -1
- package/server/services/integrations/google/common.js +39 -0
- package/server/services/integrations/google/docs.js +31 -0
- package/server/services/integrations/google/drive.js +37 -1
- package/server/services/integrations/google/gmail.js +33 -0
- package/server/services/integrations/google/provider.js +14 -3
- package/server/services/integrations/google/sheets.js +31 -0
- package/server/services/integrations/manager.js +220 -31
- package/server/services/integrations/microsoft/provider.js +433 -0
- package/server/services/integrations/notion/provider.js +395 -0
- package/server/services/integrations/oauth_provider.js +426 -0
- package/server/services/integrations/registry.js +14 -2
- package/server/services/integrations/slack/provider.js +313 -0
- package/server/services/integrations/whatsapp/index.js +7 -0
- package/server/services/integrations/whatsapp/provider.js +941 -0
- package/server/services/manager.js +267 -136
- package/server/services/mcp/client.js +15 -8
- package/server/services/memory/embeddings.js +31 -11
- package/server/services/memory/manager.js +116 -83
- package/server/services/messaging/automation.js +210 -57
- package/server/services/messaging/discord.js +42 -24
- package/server/services/messaging/formatting_guides.js +155 -0
- package/server/services/messaging/http_platforms.js +852 -0
- package/server/services/messaging/manager.js +459 -86
- package/server/services/messaging/telegram.js +76 -28
- package/server/services/messaging/telnyx.js +218 -117
- package/server/services/messaging/waveshare_wearable.js +40 -0
- package/server/services/messaging/whatsapp.js +38 -1
- package/server/services/recordings/deepgram.js +7 -2
- package/server/services/recordings/manager.js +161 -145
- package/server/services/runtime/backends/host.js +37 -0
- package/server/services/runtime/backends/local-vm.js +359 -0
- package/server/services/runtime/manager.js +78 -0
- package/server/services/runtime/mcp.js +18 -0
- package/server/services/runtime/qemu.js +391 -0
- package/server/services/runtime/settings.js +176 -0
- package/server/services/runtime/validation.js +63 -0
- package/server/services/scheduler/cron.js +62 -38
- package/server/services/skills/base_catalog.js +1167 -0
- package/server/services/skills/catalog.js +10 -0
- package/server/services/skills/runtime.js +36 -0
- package/server/services/skills/store_bundles.js +158 -0
- package/server/services/skills/store_service.js +266 -0
- package/server/services/voice/agentBridge.js +62 -0
- package/server/services/voice/assistantSpeech.js +30 -0
- package/server/services/voice/bufferedLiveRelayAdapter.js +118 -0
- package/server/services/voice/geminiLiveRelayAdapter.js +16 -0
- package/server/services/voice/liveAudio.js +98 -0
- package/server/services/voice/liveSession.js +125 -0
- package/server/services/voice/liveSettings.js +105 -0
- package/server/services/voice/message.js +96 -0
- package/server/services/voice/openaiClient.js +46 -0
- package/server/services/voice/openaiLiveRelayAdapter.js +16 -0
- package/server/services/voice/openaiSpeech.js +24 -0
- package/server/services/voice/providers.js +413 -0
- package/server/services/voice/runtime.js +142 -0
- package/server/services/voice/runtimeManager.js +316 -0
- package/server/services/voice/screenshotContext.js +73 -0
- package/server/services/voice/turnCoordinator.js +51 -0
- package/server/services/voice/turnRunner.js +182 -0
- package/server/services/voice/turnState.js +20 -0
- package/server/services/wearables/device_auth.js +228 -0
- package/server/services/websocket.js +603 -85
- package/server/utils/deployment.js +51 -3
- package/server/utils/logger.js +2 -0
- package/server/utils/security.js +12 -8
- package/server/utils/update_status.js +7 -1
- package/server/utils/version.js +3 -0
- package/server/routes/wearables.js +0 -169
- package/server/services/wearables/manager.js +0 -541
- package/server/services/wearables/protocols/base.js +0 -61
- package/server/services/wearables/protocols/heypocket.js +0 -108
package/.env.example
CHANGED
|
@@ -16,6 +16,30 @@ SECURE_COOKIES=false
|
|
|
16
16
|
# Use `managed` for SaaS-style deployments to hide self-update controls in the UI.
|
|
17
17
|
NEOAGENT_DEPLOYMENT_MODE=self_hosted
|
|
18
18
|
|
|
19
|
+
# Deployment profile:
|
|
20
|
+
# private -> single-user / trusted host runtime
|
|
21
|
+
# prod -> multi-user / isolated per-user VM runtime
|
|
22
|
+
NEOAGENT_PROFILE=private
|
|
23
|
+
|
|
24
|
+
# VM runtime settings used by `prod`.
|
|
25
|
+
# Set these before switching NEOAGENT_PROFILE=prod.
|
|
26
|
+
# The app can cache a shared base image automatically from a URL, then create
|
|
27
|
+
# lightweight per-user qcow2 overlays on top of it.
|
|
28
|
+
# For Apple Silicon / arm64 hosts, switch this to:
|
|
29
|
+
# https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img
|
|
30
|
+
NEOAGENT_VM_BASE_IMAGE_URL=https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img
|
|
31
|
+
|
|
32
|
+
# Optional local override. If set, this takes precedence over the download URL.
|
|
33
|
+
NEOAGENT_VM_BASE_IMAGE=
|
|
34
|
+
|
|
35
|
+
# The guest image must boot a Linux guest that runs `npm run start:guest-agent`
|
|
36
|
+
# and exposes the guest agent on port 8421.
|
|
37
|
+
# Replace this placeholder before using NEOAGENT_PROFILE=prod.
|
|
38
|
+
# Example: openssl rand -hex 32
|
|
39
|
+
NEOAGENT_VM_GUEST_TOKEN=change-this-guest-token-before-prod
|
|
40
|
+
NEOAGENT_VM_MEMORY_MB=4096
|
|
41
|
+
NEOAGENT_VM_CPUS=2
|
|
42
|
+
|
|
19
43
|
# Self-hosted release track used by `neoagent update`.
|
|
20
44
|
NEOAGENT_RELEASE_CHANNEL=stable
|
|
21
45
|
|
|
@@ -23,6 +47,20 @@ NEOAGENT_RELEASE_CHANNEL=stable
|
|
|
23
47
|
# Example: http://localhost:3333,https://yourdomain.com
|
|
24
48
|
ALLOWED_ORIGINS=
|
|
25
49
|
|
|
50
|
+
########################################
|
|
51
|
+
# Service email
|
|
52
|
+
########################################
|
|
53
|
+
|
|
54
|
+
# Service-only email for account security messages.
|
|
55
|
+
# The agent cannot read, search, or send from this mailbox. It is not a Gmail,
|
|
56
|
+
# Outlook, or messaging integration account; it is only used by the NeoAgent
|
|
57
|
+
# server for signup confirmation, password reset, and security notifications.
|
|
58
|
+
NEOAGENT_EMAIL_FROM=
|
|
59
|
+
NEOAGENT_EMAIL_SMTP_HOST=
|
|
60
|
+
NEOAGENT_EMAIL_SMTP_PORT=587
|
|
61
|
+
NEOAGENT_EMAIL_SMTP_USER=
|
|
62
|
+
NEOAGENT_EMAIL_SMTP_PASS=
|
|
63
|
+
|
|
26
64
|
########################################
|
|
27
65
|
# Hosted AI providers
|
|
28
66
|
########################################
|
|
@@ -75,6 +113,32 @@ GOOGLE_OAUTH_CLIENT_ID=your-google-oauth-client-id
|
|
|
75
113
|
GOOGLE_OAUTH_CLIENT_SECRET=your-google-oauth-client-secret
|
|
76
114
|
GOOGLE_OAUTH_REDIRECT_URI=
|
|
77
115
|
|
|
116
|
+
# Notion official integration OAuth client.
|
|
117
|
+
# Redirect URI should match <PUBLIC_URL>/api/integrations/oauth/callback.
|
|
118
|
+
NOTION_OAUTH_CLIENT_ID=your-notion-oauth-client-id
|
|
119
|
+
NOTION_OAUTH_CLIENT_SECRET=your-notion-oauth-client-secret
|
|
120
|
+
NOTION_OAUTH_REDIRECT_URI=
|
|
121
|
+
|
|
122
|
+
# Microsoft 365 official integration OAuth client.
|
|
123
|
+
# Redirect URI should match <PUBLIC_URL>/api/integrations/oauth/callback.
|
|
124
|
+
# Leave tenant ID as `common` for a multi-tenant app, or set a specific Entra tenant ID.
|
|
125
|
+
MICROSOFT_OAUTH_CLIENT_ID=your-microsoft-oauth-client-id
|
|
126
|
+
MICROSOFT_OAUTH_CLIENT_SECRET=your-microsoft-oauth-client-secret
|
|
127
|
+
MICROSOFT_OAUTH_REDIRECT_URI=
|
|
128
|
+
MICROSOFT_OAUTH_TENANT_ID=common
|
|
129
|
+
|
|
130
|
+
# Slack official integration OAuth client.
|
|
131
|
+
# Redirect URI should match <PUBLIC_URL>/api/integrations/oauth/callback.
|
|
132
|
+
SLACK_OAUTH_CLIENT_ID=your-slack-oauth-client-id
|
|
133
|
+
SLACK_OAUTH_CLIENT_SECRET=your-slack-oauth-client-secret
|
|
134
|
+
SLACK_OAUTH_REDIRECT_URI=
|
|
135
|
+
|
|
136
|
+
# Figma official integration OAuth client.
|
|
137
|
+
# Redirect URI should match <PUBLIC_URL>/api/integrations/oauth/callback.
|
|
138
|
+
FIGMA_OAUTH_CLIENT_ID=your-figma-oauth-client-id
|
|
139
|
+
FIGMA_OAUTH_CLIENT_SECRET=your-figma-oauth-client-secret
|
|
140
|
+
FIGMA_OAUTH_REDIRECT_URI=
|
|
141
|
+
|
|
78
142
|
########################################
|
|
79
143
|
# Tools and media services
|
|
80
144
|
########################################
|
package/README.md
CHANGED
|
@@ -3,21 +3,18 @@
|
|
|
3
3
|
<p align="center"><strong>Your agent. Your server. Your rules.</strong></p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node.js-
|
|
6
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node.js-20+-5fa04e?style=flat-square&logo=node.js&logoColor=white" alt="Node.js"></a>
|
|
7
7
|
<a href="https://sqlite.org"><img src="https://img.shields.io/badge/SQLite-WAL-003b57?style=flat-square&logo=sqlite&logoColor=white" alt="SQLite"></a>
|
|
8
8
|
<a href="https://flutter.dev"><img src="https://img.shields.io/badge/Flutter-web%20%2B%20android-02569B?style=flat-square&logo=flutter&logoColor=white" alt="Flutter"></a>
|
|
9
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-a855f7?style=flat-square" alt="License"></a>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
|
-
<p align="center">
|
|
13
|
-
A self-hosted, proactive AI agent with a Flutter client for web and Android.<br>
|
|
14
|
-
Connects to OpenAI, xAI, Google, MiniMax Code, and local Ollama.<br>
|
|
15
|
-
Runs tasks on a schedule, controls a browser, manages files, and talks to you over Telegram, Discord, or WhatsApp.
|
|
16
|
-
</p>
|
|
12
|
+
<p align="center">A self-hosted, proactive AI agent with a Flutter client for web and Android.</p>
|
|
17
13
|
|
|
18
14
|
| | |
|
|
19
15
|
| --- | --- |
|
|
20
|
-
| <img alt="WebUI" src="https://github.com/user-attachments/assets/3c76d59a-b6e3-4698-929b-9c94741ccf1e" height="420"> | <img alt="Mobile Telegram" src="https://github.com/user-attachments/assets/1fd41a9b-5452-4aa4-9478-888c8ad7363a" height="420"> |
|
|
16
|
+
| <img alt="WebUI" src="https://github.com/user-attachments/assets/3c76d59a-b6e3-4698-929b-9c94741ccf1e" height="420"> | <img height="494" alt="Android" src="https://github.com/user-attachments/assets/e8a0af7a-6881-485d-ad52-f3bc6f2023ca"> | <img alt="Mobile Telegram" src="https://github.com/user-attachments/assets/1fd41a9b-5452-4aa4-9478-888c8ad7363a" height="420"> |
|
|
17
|
+
|
|
21
18
|
|
|
22
19
|
## Install
|
|
23
20
|
|
|
@@ -36,14 +33,12 @@ neoagent fix
|
|
|
36
33
|
neoagent logs
|
|
37
34
|
```
|
|
38
35
|
|
|
39
|
-
Use `neoagent fix` if a self-edit or broken local install leaves NeoAgent in a bad state. On git installs it backs up runtime data, saves local tracked changes, resets tracked source files, reinstalls dependencies, and restarts the service.
|
|
40
|
-
|
|
41
36
|
## Links
|
|
42
37
|
|
|
43
|
-
[
|
|
38
|
+
[Docs](https://neolabs-systems.github.io/NeoAgent/) | [Issues](https://github.com/NeoLabs-Systems/NeoAgent/issues)
|
|
44
39
|
|
|
45
40
|
---
|
|
46
41
|
|
|
47
42
|
<p align="center">
|
|
48
|
-
Made
|
|
43
|
+
Made by <a href="https://github.com/neooriginal">Neo</a> | <a href="https://github.com/NeoLabs-Systems">NeoLabs Systems</a>
|
|
49
44
|
</p>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Automation
|
|
2
|
+
|
|
3
|
+
NeoAgent is built for proactive work: tasks that run later, repeat on a schedule, use tools, and notify you when there is something useful to report.
|
|
4
|
+
|
|
5
|
+
## Scheduler
|
|
6
|
+
|
|
7
|
+
Use the **Scheduler** section in the UI to create recurring tasks. A scheduled task has:
|
|
8
|
+
|
|
9
|
+
| Field | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Name | Human-readable task label |
|
|
12
|
+
| Cron expression | Five-field cron schedule |
|
|
13
|
+
| Prompt | Self-contained instruction for the future run |
|
|
14
|
+
| Enabled state | Active or paused |
|
|
15
|
+
| Model override | Optional model for this task |
|
|
16
|
+
|
|
17
|
+
Scheduled prompts should include the condition for notifying you. For example, ask NeoAgent to message you only when a monitored thing changes, fails, or needs attention.
|
|
18
|
+
|
|
19
|
+
## Tool Capabilities
|
|
20
|
+
|
|
21
|
+
Automation can use the same tool surface as normal chat runs:
|
|
22
|
+
|
|
23
|
+
| Capability | Examples |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Browser | Navigate, click, type, extract page content, take screenshots, evaluate page JavaScript |
|
|
26
|
+
| Files | Read, write, search, and summarize host files through skills |
|
|
27
|
+
| CLI | Run shell commands in a persistent terminal through skills |
|
|
28
|
+
| Memory | Store durable facts and retrieve useful context |
|
|
29
|
+
| Messaging | Send a proactive result through a connected platform |
|
|
30
|
+
| MCP | Use tools exposed by configured remote MCP servers |
|
|
31
|
+
| Official integrations | Use structured OAuth-backed app tools where available |
|
|
32
|
+
| Recordings | List, open, and search recording transcripts |
|
|
33
|
+
| Health | Read synced Android Health Connect metrics as summaries |
|
|
34
|
+
| Android | Drive a server-attached emulator or device through UI and ADB tools |
|
|
35
|
+
| Subagents | Spawn async helper agents inside a longer run |
|
|
36
|
+
| Outputs | Generate artifacts, Grok images, Mermaid graphs, and markdown tables |
|
|
37
|
+
|
|
38
|
+
Prefer official integrations and structured MCP tools over browser automation when both can answer the task. They are usually less brittle and easier to audit.
|
|
39
|
+
|
|
40
|
+
See [Capabilities](capabilities.md) for the broader tool inventory.
|
|
41
|
+
|
|
42
|
+
## Safety Expectations
|
|
43
|
+
|
|
44
|
+
NeoAgent runs on your server and can touch real files, messaging surfaces, browser sessions, and connected services. Keep scheduled prompts narrow and self-contained.
|
|
45
|
+
|
|
46
|
+
For sensitive automations:
|
|
47
|
+
|
|
48
|
+
- Use allowlists for messaging platforms.
|
|
49
|
+
- Keep secrets in server config, not prompts or skills.
|
|
50
|
+
- Prefer read-only checks unless the task explicitly needs to mutate data.
|
|
51
|
+
- Ask for notification only when a condition is met to avoid noisy repeated messages.
|
|
52
|
+
- Review run history in **Runs** and service logs in **Logs** when behavior is surprising.
|
|
53
|
+
- Remember that browser, CLI, Android runtime, and local file tools run on the NeoAgent server or configured worker, not necessarily on your current laptop.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Capabilities
|
|
2
|
+
|
|
3
|
+
This page lists the product surfaces that are easy to miss from the short README. It is based on the current server routes, agent tool registry, Flutter sections, Android bridge code, and integration providers in this repository.
|
|
4
|
+
|
|
5
|
+
## Operator UI
|
|
6
|
+
|
|
7
|
+
The Flutter client exposes the main operator surfaces:
|
|
8
|
+
|
|
9
|
+
| Section | What it is for |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Chat | Normal agent runs with tools, memory, integrations, and messaging |
|
|
12
|
+
| Runs | Live and historical run steps, including browser, Android, CLI, messaging, scheduler, MCP, and subagent work |
|
|
13
|
+
| Logs | Service logs and diagnostics from the server you are connected to |
|
|
14
|
+
| Scheduler | Recurring cron tasks and one-time future runs |
|
|
15
|
+
| Skills | Built-in and custom reusable workflows |
|
|
16
|
+
| Integrations | OAuth account connections for structured app tools |
|
|
17
|
+
| MCP | Remote MCP server registration and tool discovery |
|
|
18
|
+
| Memory | Long-term memory, core memory, and session search |
|
|
19
|
+
| Devices | Server-side browser and Android runtime controls |
|
|
20
|
+
| Recordings | Recording sessions, transcripts, segments, and playback |
|
|
21
|
+
| Health | Android Health Connect sync status and synced metrics |
|
|
22
|
+
| Wearables | Supported Bluetooth recording devices and audio upload status |
|
|
23
|
+
| Settings | AI providers, model routing, runtime settings, messaging, and service controls |
|
|
24
|
+
|
|
25
|
+
## Recordings
|
|
26
|
+
|
|
27
|
+
NeoAgent records audio as server-side sessions with one or more sources. The web client can record browser microphone and screen audio, the Android app can record phone microphone audio through a foreground service, and the wearable bridge can upload audio chunks from supported Bluetooth devices.
|
|
28
|
+
|
|
29
|
+
Recording sessions support:
|
|
30
|
+
|
|
31
|
+
- Chunked uploads with per-source sequence checks.
|
|
32
|
+
- Sources, chunks, transcript segments, session status, and playback URLs.
|
|
33
|
+
- Statuses for recording, processing, completed, failed, and cancelled sessions.
|
|
34
|
+
- Retry transcription and delete transcript segment actions.
|
|
35
|
+
- Full session deletion with storage cleanup.
|
|
36
|
+
- Agent tools for listing, opening, and searching transcripts: `recordings_list`, `recordings_get`, and `recordings_search`.
|
|
37
|
+
|
|
38
|
+
Transcription uses Deepgram when `DEEPGRAM_API_KEY` is configured. The default speech model is `nova-3`, and the default language mode is `multi`. When `auto_recording_insights` is enabled in AI settings, NeoAgent can generate structured recording insights such as a summary, action items, and events.
|
|
39
|
+
|
|
40
|
+
## Android Control
|
|
41
|
+
|
|
42
|
+
NeoAgent can let the AI control an Android emulator or device attached to the NeoAgent server or configured worker. This is the Android capability in the comparison: the agent can observe and operate Android, not only run an Android companion app.
|
|
43
|
+
|
|
44
|
+
Android control supports:
|
|
45
|
+
|
|
46
|
+
- Starting and stopping the managed Android emulator.
|
|
47
|
+
- Listing ADB-connected devices and installed apps.
|
|
48
|
+
- Taking screenshots and UIAutomator XML dumps.
|
|
49
|
+
- Observing visible UI nodes.
|
|
50
|
+
- Opening apps and Android intents.
|
|
51
|
+
- Tapping, long pressing, typing, swiping, and pressing Android navigation keys.
|
|
52
|
+
- Waiting for text, resource IDs, descriptions, or classes to appear.
|
|
53
|
+
- Installing `.apk` and universal `.apks` bundles.
|
|
54
|
+
- Running `adb shell` commands when higher-level tools are not enough.
|
|
55
|
+
|
|
56
|
+
These actions run where the NeoAgent backend is running. If NeoAgent is deployed on a remote server, the AI controls the Android runtime attached to that server, not the laptop where you are reading the docs.
|
|
57
|
+
|
|
58
|
+
## Android App, Health, And Wearables
|
|
59
|
+
|
|
60
|
+
The Flutter Android app is still useful as a client. It can sign in to the same self-hosted backend, run chat and operator UI flows, sync Health Connect data, record audio locally, and bridge supported wearables.
|
|
61
|
+
|
|
62
|
+
Android app capabilities include:
|
|
63
|
+
|
|
64
|
+
- `NEOAGENT_BACKEND_URL` build/run configuration for real devices.
|
|
65
|
+
- Health Connect permission flow and background sync.
|
|
66
|
+
- Microphone recording through an Android foreground service.
|
|
67
|
+
- Boot restore hooks for recording and wearable services when Android allows them.
|
|
68
|
+
- Bluetooth wearable bridge support for HeyPocket-style devices.
|
|
69
|
+
- Upload of wearable chunks and synchronization state to the backend.
|
|
70
|
+
|
|
71
|
+
## Health Data
|
|
72
|
+
|
|
73
|
+
Health data comes from the Android app through `/api/mobile/health`. NeoAgent stores sync runs and normalized metric samples. The built-in metric aliases include steps, heart rate, sleep sessions, exercise sessions, and weight.
|
|
74
|
+
|
|
75
|
+
The agent tool `read_health_data` returns summaries and recent samples. It is designed to answer questions such as recent step totals or available health metrics without dumping every raw record.
|
|
76
|
+
|
|
77
|
+
## Integrations And Messaging
|
|
78
|
+
|
|
79
|
+
NeoAgent has two separate integration layers:
|
|
80
|
+
|
|
81
|
+
- Official integrations expose structured tools for Google Workspace, Microsoft 365, Notion, Slack, Figma, and a separate personal WhatsApp connection.
|
|
82
|
+
- Messaging platforms let the agent talk through WhatsApp, Telegram, Discord, Slack, Google Chat, Teams, Matrix, Signal, iMessage/BlueBubbles, IRC, Twitch, LINE, Mattermost, configurable webhook bridges, and Telnyx Voice.
|
|
83
|
+
|
|
84
|
+
Official integration examples include Gmail thread search and send mail, Google Calendar events, Drive upload/download/export/share links, Docs create/append/replace, Sheets read/update/append/create, Microsoft Outlook/Calendar/OneDrive/Teams tools, Notion search/page/block/database tools, Slack conversation/message tools, Figma file/node/comment/image tools, and a personal WhatsApp integration with isolated chat read/send tools and per-account read-only versus read/write access.
|
|
85
|
+
|
|
86
|
+
Messaging examples include Telegram and Discord messages, Slack channel replies, Matrix room messages, Google Chat and Teams webhook delivery, Signal bridge delivery, iMessage/BlueBubbles sends, WhatsApp text and media sends, Telnyx inbound voice, Telnyx outbound calls, and scheduled-task call delivery.
|
|
87
|
+
|
|
88
|
+
## Agent Tools
|
|
89
|
+
|
|
90
|
+
NeoAgent's agent tool surface includes more than basic chat:
|
|
91
|
+
|
|
92
|
+
| Area | Examples |
|
|
93
|
+
|---|---|
|
|
94
|
+
| CLI | PTY-capable `execute_command` with stdin, timeout, stdout, stderr, exit code, and duration |
|
|
95
|
+
| Browser | Navigate, click, type, extract, screenshot, and evaluate page JavaScript |
|
|
96
|
+
| Android control | UI observation, input, screenshots, app launch, intent launch, APK install, and shell commands |
|
|
97
|
+
| Web search | Brave Search API through `web_search` |
|
|
98
|
+
| Files | Read, write, edit, list, and search files |
|
|
99
|
+
| HTTP | Direct HTTP requests |
|
|
100
|
+
| Memory | Semantic memory, session search, daily logs, API key name reads, and core memory |
|
|
101
|
+
| Skills | Create, list, update, and delete persistent skills |
|
|
102
|
+
| Scheduler | Recurring tasks, one-time runs, model overrides, and optional Telnyx call delivery |
|
|
103
|
+
| MCP | Add, list, and remove MCP servers, plus dynamic MCP tool use |
|
|
104
|
+
| Subagents | Spawn, list, wait for, and cancel async subagents inside a run |
|
|
105
|
+
| Output | Generate markdown tables and Mermaid graphs |
|
|
106
|
+
| Images | Generate images with Grok and analyze local image files with a vision-capable model |
|
|
107
|
+
| Recordings | List, inspect, and search recording transcripts |
|
|
108
|
+
| Health | Read synced mobile health metrics |
|
|
109
|
+
|
|
110
|
+
Generated binary or text artifacts can be promoted into user-scoped artifact storage under `~/.neoagent/data/artifacts` and served through authenticated `/api/artifacts/:id/content` URLs.
|
|
111
|
+
|
|
112
|
+
## Runtime Modes
|
|
113
|
+
|
|
114
|
+
Runtime settings let operators choose where higher-risk work runs:
|
|
115
|
+
|
|
116
|
+
| Profile | Runtime shape |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `trusted-host` | CLI, browser, and Android tools run on the host |
|
|
119
|
+
| `secure-vm` | CLI, browser, and Android tools run through the local VM backend |
|
|
120
|
+
|
|
121
|
+
Production policy can require the secure VM profile and a strong VM guest token.
|
|
122
|
+
|
|
123
|
+
These controls matter operationally: the browser, Android emulator, local files, and shell commands run wherever the NeoAgent backend, VM, or paired browser extension is running, not necessarily on the computer where you are reading the docs. Logs from a different server or remote browser may not match the logs on the local machine.
|
|
124
|
+
|
|
125
|
+
For extension-only remote browser control, download `/api/browser-extension/download` from NeoAgent, unzip it on the remote machine, load the folder in `chrome://extensions`, and pair after logging in. The extension uses Chrome's debugger permission for full browser control, so Chrome will show its normal debugging warning while attached. The popup can check whether the server has a newer extension bundle, but unpacked Developer Mode installs still need a manual download and reload.
|
package/docs/configuration.md
CHANGED
|
@@ -1,66 +1,133 @@
|
|
|
1
1
|
# Configuration
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
You can override the runtime root with `NEOAGENT_HOME`.
|
|
3
|
+
NeoAgent keeps deployment secrets on the server. The default config file is `~/.neoagent/.env`; run `neoagent setup` to regenerate it interactively. You can move the runtime root by setting `NEOAGENT_HOME`.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
AI provider credentials, OAuth client secrets, and deployment controls are not configured through the public web client. The Flutter UI can select providers and models, but the secrets stay in server-side environment variables or in the local NeoAgent database where the app explicitly stores channel settings.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
## Core Variables
|
|
9
8
|
|
|
10
9
|
| Variable | Default | Description |
|
|
11
|
-
|
|
12
|
-
| `PORT` | `3333` | HTTP port |
|
|
13
|
-
| `PUBLIC_URL` |
|
|
14
|
-
| `SESSION_SECRET` |
|
|
15
|
-
| `NODE_ENV` | `production` | Set to `development` to enable verbose logs |
|
|
16
|
-
| `SECURE_COOKIES` | `false` | Set `true` when behind a TLS-terminating proxy |
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
10
|
+
|---|---:|---|
|
|
11
|
+
| `PORT` | `3333` | HTTP port for the NeoAgent server. |
|
|
12
|
+
| `PUBLIC_URL` | optional | Public base URL used for OAuth callbacks and external links. |
|
|
13
|
+
| `SESSION_SECRET` | required | Random string for session signing. Generate one with `openssl rand -hex 32`. |
|
|
14
|
+
| `NODE_ENV` | `production` | Set to `development` to enable verbose logs. |
|
|
15
|
+
| `SECURE_COOKIES` | `false` | Set `true` when NeoAgent is behind a TLS-terminating proxy. |
|
|
16
|
+
| `TRUST_PROXY` | inferred from `PUBLIC_URL`/`SECURE_COOKIES` | Set `true` when NeoAgent runs behind Nginx, Caddy, Cloudflare, Fly, or another reverse proxy that sends `X-Forwarded-*` headers. |
|
|
17
|
+
| `ALLOWED_ORIGINS` | none | Comma-separated CORS origins, for example `https://example.com`. |
|
|
18
|
+
| `NEOAGENT_DEPLOYMENT_MODE` | `self_hosted` | `self_hosted` enables in-app update controls; `managed` hides operator-only controls for SaaS deployments. |
|
|
19
|
+
| `NEOAGENT_RELEASE_CHANNEL` | `stable` | Release track used by the self-hosted updater. |
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
## Service Email
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Service email is optional. When `NEOAGENT_EMAIL_FROM` and `NEOAGENT_EMAIL_SMTP_HOST` are set, NeoAgent uses SMTP for account security flows: signup confirmation, password reset, unusual login notifications, password change notifications, and email change notifications. Confirmation and reset links use the same `PUBLIC_URL` base as the other server-generated links.
|
|
24
|
+
|
|
25
|
+
This mailbox is only for the NeoAgent server. The agent cannot read, search, or send from it, and it is not exposed as a Gmail, Outlook, or messaging integration account. Configure Gmail/Outlook tools separately under official integrations if you want the agent to work with a mailbox.
|
|
26
|
+
|
|
27
|
+
| Variable | Default | Description |
|
|
28
|
+
|---|---:|---|
|
|
29
|
+
| `NEOAGENT_EMAIL_REQUIRE_SIGNUP_CONFIRMATION` | `true` when enabled | Requires new signup email confirmation before sign-in. |
|
|
30
|
+
| `NEOAGENT_EMAIL_REQUIRE_EMAIL_CHANGE_CONFIRMATION` | `true` when enabled | Requires account email changes to be confirmed by the new address. |
|
|
31
|
+
| `NEOAGENT_EMAIL_NOTIFY_UNUSUAL_LOGIN` | `true` | Sends a security notice when a login uses a new device or network pattern. |
|
|
32
|
+
| `NEOAGENT_EMAIL_NOTIFY_ACCOUNT_CHANGES` | `true` | Sends notices for password and email changes. |
|
|
33
|
+
| `NEOAGENT_EMAIL_BRAND_NAME` | `NeoAgent` | Display name used by service email templates. |
|
|
34
|
+
| `NEOAGENT_EMAIL_SUPPORT_URL` | optional | Optional operator support URL reserved for service email templates. |
|
|
35
|
+
| `NEOAGENT_EMAIL_TOKEN_TTL_HOURS` | `24` | Confirmation link lifetime. |
|
|
36
|
+
| `NEOAGENT_EMAIL_FROM` | required when enabled | Sender header, for example `NeoAgent <no-reply@example.com>`. |
|
|
37
|
+
| `NEOAGENT_EMAIL_REPLY_TO` | optional | Reply-To header. |
|
|
38
|
+
| `NEOAGENT_EMAIL_SMTP_HOST` | required when enabled | SMTP hostname. |
|
|
39
|
+
| `NEOAGENT_EMAIL_SMTP_PORT` | `587` | SMTP port. |
|
|
40
|
+
| `NEOAGENT_EMAIL_SMTP_SECURE` | `true` on port `465` | Use implicit TLS. |
|
|
41
|
+
| `NEOAGENT_EMAIL_SMTP_REQUIRE_TLS` | `true` unless implicit TLS | Require STARTTLS for non-implicit-TLS SMTP. |
|
|
42
|
+
| `NEOAGENT_EMAIL_SMTP_REJECT_UNAUTHORIZED` | `true` | Reject invalid TLS certificates. Keep enabled in production. |
|
|
43
|
+
| `NEOAGENT_EMAIL_SMTP_USER` | optional | SMTP username. |
|
|
44
|
+
| `NEOAGENT_EMAIL_SMTP_PASS` | optional | SMTP password or app password. |
|
|
45
|
+
|
|
46
|
+
## AI Providers
|
|
47
|
+
|
|
48
|
+
At least one hosted-provider API key is required unless you only use local Ollama. The active provider and model routing are selected in the app, but credentials are read from server-side config.
|
|
24
49
|
|
|
25
50
|
| Variable | Provider |
|
|
26
51
|
|---|---|
|
|
27
52
|
| `ANTHROPIC_API_KEY` | Claude (Anthropic) |
|
|
28
|
-
| `OPENAI_API_KEY` | GPT
|
|
53
|
+
| `OPENAI_API_KEY` | GPT and Whisper (OpenAI) |
|
|
29
54
|
| `XAI_API_KEY` | Grok (xAI) |
|
|
30
55
|
| `XAI_BASE_URL` | Optional xAI-compatible base URL override |
|
|
31
56
|
| `GOOGLE_AI_KEY` | Gemini (Google) |
|
|
32
|
-
| `
|
|
33
|
-
| `GOOGLE_OAUTH_CLIENT_SECRET` | Google Workspace official integrations OAuth client secret |
|
|
34
|
-
| `GOOGLE_OAUTH_REDIRECT_URI` | Optional override for the Google Workspace OAuth callback URL |
|
|
35
|
-
| `MINIMAX_API_KEY` | MiniMax Code (Coding Plan / Token Plan for `MiniMax-M2.7`) |
|
|
57
|
+
| `MINIMAX_API_KEY` | MiniMax Code, including `MiniMax-M2.7` |
|
|
36
58
|
| `BRAVE_SEARCH_API_KEY` | Brave Search API for the native `web_search` tool |
|
|
37
59
|
| `OPENAI_BASE_URL` | Optional OpenAI-compatible base URL override |
|
|
38
60
|
| `ANTHROPIC_BASE_URL` | Optional Anthropic-compatible base URL override |
|
|
39
|
-
| `DEEPGRAM_API_KEY` | Recordings transcription with Deepgram
|
|
61
|
+
| `DEEPGRAM_API_KEY` | Recordings transcription with Deepgram |
|
|
40
62
|
| `DEEPGRAM_BASE_URL` | Optional Deepgram API base URL override |
|
|
41
|
-
| `DEEPGRAM_MODEL` | Deepgram speech model override
|
|
42
|
-
| `DEEPGRAM_LANGUAGE` | Deepgram language override
|
|
43
|
-
| `OLLAMA_URL` | Local Ollama
|
|
63
|
+
| `DEEPGRAM_MODEL` | Deepgram speech model override, defaults to `nova-3` |
|
|
64
|
+
| `DEEPGRAM_LANGUAGE` | Deepgram language override, defaults to `multi` |
|
|
65
|
+
| `OLLAMA_URL` | Local Ollama server, usually `http://localhost:11434` |
|
|
66
|
+
|
|
67
|
+
Recording insight generation is controlled in app AI settings with `auto_recording_insights`. It uses the configured AI providers after Deepgram transcription has produced transcript text.
|
|
44
68
|
|
|
45
|
-
|
|
69
|
+
## Official Integrations
|
|
46
70
|
|
|
47
|
-
|
|
71
|
+
Official integrations use OAuth or provider-native account linking and expose structured tools to the agent. The built-in registry currently covers Google Workspace, Notion, Microsoft 365, Slack, Figma, and personal WhatsApp.
|
|
72
|
+
|
|
73
|
+
All OAuth callbacks default to `PUBLIC_URL + /api/integrations/oauth/callback` unless you set a provider-specific redirect URI.
|
|
48
74
|
|
|
49
75
|
| Variable | Description |
|
|
50
76
|
|---|---|
|
|
51
|
-
| `
|
|
77
|
+
| `GOOGLE_OAUTH_CLIENT_ID` | Google Workspace OAuth client ID |
|
|
78
|
+
| `GOOGLE_OAUTH_CLIENT_SECRET` | Google Workspace OAuth client secret |
|
|
79
|
+
| `GOOGLE_OAUTH_REDIRECT_URI` | Optional Google Workspace OAuth callback URL |
|
|
80
|
+
| `NOTION_OAUTH_CLIENT_ID` | Notion OAuth client ID |
|
|
81
|
+
| `NOTION_OAUTH_CLIENT_SECRET` | Notion OAuth client secret |
|
|
82
|
+
| `NOTION_OAUTH_REDIRECT_URI` | Optional Notion OAuth callback URL |
|
|
83
|
+
| `MICROSOFT_OAUTH_CLIENT_ID` | Microsoft 365 OAuth client ID |
|
|
84
|
+
| `MICROSOFT_OAUTH_CLIENT_SECRET` | Microsoft 365 OAuth client secret |
|
|
85
|
+
| `MICROSOFT_OAUTH_REDIRECT_URI` | Optional Microsoft 365 OAuth callback URL |
|
|
86
|
+
| `MICROSOFT_OAUTH_TENANT_ID` | Optional Entra tenant selector, defaults to `common` |
|
|
87
|
+
| `SLACK_OAUTH_CLIENT_ID` | Slack OAuth client ID |
|
|
88
|
+
| `SLACK_OAUTH_CLIENT_SECRET` | Slack OAuth client secret |
|
|
89
|
+
| `SLACK_OAUTH_REDIRECT_URI` | Optional Slack OAuth callback URL |
|
|
90
|
+
| `FIGMA_OAUTH_CLIENT_ID` | Figma OAuth client ID |
|
|
91
|
+
| `FIGMA_OAUTH_CLIENT_SECRET` | Figma OAuth client secret |
|
|
92
|
+
| `FIGMA_OAUTH_REDIRECT_URI` | Optional Figma OAuth callback URL |
|
|
93
|
+
|
|
94
|
+
## Messaging
|
|
95
|
+
|
|
96
|
+
Messaging platform credentials are stored through the Flutter app messaging tab, not in `.env`. This includes Telegram, Discord, Slack, Google Chat, Microsoft Teams, Matrix, Signal, iMessage/BlueBubbles, IRC, Twitch, LINE, Mattermost, and the configurable webhook bridges. Use the app to set platform tokens, webhook URLs, inbound secrets, polling options, and access lists.
|
|
97
|
+
|
|
98
|
+
Generic inbound messaging callbacks use:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
PUBLIC_URL + /api/messaging/webhook/:platform
|
|
102
|
+
```
|
|
52
103
|
|
|
53
|
-
|
|
104
|
+
Telnyx webhook verification is configured through the environment.
|
|
54
105
|
|
|
55
|
-
|
|
106
|
+
| Variable | Description |
|
|
107
|
+
|---|---|
|
|
108
|
+
| `TELNYX_WEBHOOK_TOKEN` | Telnyx webhook signature verification token |
|
|
56
109
|
|
|
57
|
-
|
|
58
|
-
- Database/session/logs: `~/.neoagent/data/`
|
|
59
|
-
- Skills/memory/daily data files: `~/.neoagent/agent-data/`
|
|
110
|
+
## Runtime Isolation
|
|
60
111
|
|
|
61
|
-
|
|
112
|
+
Runtime profile and backend selection are stored in user settings, not normally in `.env`. The main profiles are `trusted-host` and `secure-vm`. They control whether CLI, browser, and Android tools run on the host or through the local VM backend.
|
|
113
|
+
|
|
114
|
+
Production policy can require the VM backend. In that case, set a strong `NEOAGENT_VM_GUEST_TOKEN` of at least 32 characters and avoid placeholder values.
|
|
115
|
+
|
|
116
|
+
The app exposes two browser backend choices: Cloud and Chrome extension. Cloud uses the current deployment policy, which means host browser control for trusted private installs and VM browser control for isolated production installs. Chrome extension uses the paired extension connection instead of the server-local Puppeteer browser. To install only the extension on a remote machine, open NeoAgent, download `/api/browser-extension/download`, unzip it, load the folder through `chrome://extensions` with Developer mode enabled, then pair after logging in to NeoAgent. Unpacked Chrome extensions cannot replace themselves automatically; use the extension popup's update check to compare against the server bundle, then download and reload the latest ZIP when needed.
|
|
117
|
+
|
|
118
|
+
## Secrets Guidance
|
|
119
|
+
|
|
120
|
+
Treat `SESSION_SECRET`, provider API keys, OAuth client secrets, service email SMTP credentials, messaging credentials, and Telnyx tokens as sensitive. Do not commit them, print them in logs, or expose them in client-side code. Store them in server-side environment variables or a secrets manager, restrict access to operators who need them, and rotate them immediately if you suspect exposure.
|
|
121
|
+
|
|
122
|
+
## Runtime Paths
|
|
123
|
+
|
|
124
|
+
| Path | Purpose |
|
|
125
|
+
|---|---|
|
|
126
|
+
| `~/.neoagent/.env` | Server config and deployment secrets |
|
|
127
|
+
| `~/.neoagent/data/` | Database, sessions, update status, and logs |
|
|
128
|
+
| `~/.neoagent/agent-data/` | Skills, memory, and daily data files |
|
|
62
129
|
|
|
63
|
-
## Minimal `.env`
|
|
130
|
+
## Minimal `.env` Example
|
|
64
131
|
|
|
65
132
|
```dotenv
|
|
66
133
|
PORT=3333
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
NeoAgent installs as a Node CLI and runs a self-hosted server with a bundled Flutter web client. The same server can be reached from the Android client when you point it at the deployed backend URL.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Node.js 20 or newer.
|
|
8
|
+
- A reachable server URL if you want OAuth callbacks, mobile access, or messaging webhooks.
|
|
9
|
+
- At least one hosted AI provider API key, unless you only use local Ollama.
|
|
10
|
+
- Android Studio or a Flutter Android toolchain if you build the Android client yourself.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g neoagent
|
|
16
|
+
neoagent install
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`neoagent install` runs setup if `~/.neoagent/.env` does not exist, installs dependencies, builds or verifies the bundled web client, and starts the service through the host service manager when available.
|
|
20
|
+
|
|
21
|
+
On macOS, NeoAgent uses a `launchd` user service. On Linux, it uses a `systemd --user` service. On unsupported platforms it falls back to a background Node process.
|
|
22
|
+
|
|
23
|
+
## Setup
|
|
24
|
+
|
|
25
|
+
Run setup again whenever you need to regenerate server config:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
neoagent setup
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The setup flow asks for the server port, public URL, release channel, AI provider keys, Ollama URL, and official integration OAuth settings. Provider credentials live in server-side config, not in the web client.
|
|
32
|
+
|
|
33
|
+
## Service Commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
neoagent status
|
|
37
|
+
neoagent start
|
|
38
|
+
neoagent stop
|
|
39
|
+
neoagent restart
|
|
40
|
+
neoagent logs
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use `neoagent status` to confirm the install root, config path, release channel, and service state. Use `neoagent logs` when the service starts but the UI or integrations do not behave as expected.
|
|
44
|
+
|
|
45
|
+
## Updates And Recovery
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
neoagent channel stable
|
|
49
|
+
neoagent channel beta
|
|
50
|
+
neoagent update
|
|
51
|
+
neoagent fix
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`neoagent update` follows the configured release channel. `neoagent fix` is for recovery after a self-edit or broken local install. On git installs it backs up runtime data, saves local tracked changes, resets tracked source files, reinstalls dependencies, and restarts the service.
|
|
55
|
+
|
|
56
|
+
## Runtime Paths
|
|
57
|
+
|
|
58
|
+
| Path | Purpose |
|
|
59
|
+
|---|---|
|
|
60
|
+
| `~/.neoagent/.env` | Server config and secrets |
|
|
61
|
+
| `~/.neoagent/data/` | Database, sessions, update status, and logs |
|
|
62
|
+
| `~/.neoagent/agent-data/` | Skills, memory, and daily data files |
|
|
63
|
+
|
|
64
|
+
Set `NEOAGENT_HOME` if you need to move the runtime root.
|
package/docs/hardware.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Waveshare ESP32-S3 1.8inch AMOLED Setup
|
|
3
|
+
sidebar_label: Waveshare 1.8inch AMOLED
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Waveshare ESP32-S3 1.8inch AMOLED Setup
|
|
7
|
+
|
|
8
|
+
Use this only if you want to build or flash this board:
|
|
9
|
+
|
|
10
|
+
Waveshare ESP32-S3 1.8inch AMOLED Touch Display Dev Board
|
|
11
|
+
|
package/docs/index.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: /
|
|
3
|
+
title: NeoAgent
|
|
4
|
+
sidebar_label: Overview
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# NeoAgent
|
|
8
|
+
|
|
9
|
+
NeoAgent is a self-hosted proactive AI agent with a bundled Flutter client for web and Android. It runs on your server, keeps credentials server-side, and gives you an operator UI for chat, runs, logs, scheduler tasks, skills, integrations, MCP, memory, Android control, recordings, Health Connect data, wearables, and settings.
|
|
10
|
+
|
|
11
|
+
It is designed for people who want a focused personal automation server rather than a broad gateway platform. NeoAgent can run scheduled tasks, control a browser, operate a server-attached Android emulator or device, manage files, remember long-term context, connect to hosted AI providers or local Ollama, search recordings, read synced health summaries, and send results through Telegram, Discord, WhatsApp, or Telnyx Voice.
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g neoagent
|
|
17
|
+
neoagent install
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Open the server URL, sign in, configure providers and messaging, then create a scheduled task or chat run.
|
|
21
|
+
|
|
22
|
+
## What NeoAgent Does
|
|
23
|
+
|
|
24
|
+
| Area | Capability |
|
|
25
|
+
|---|---|
|
|
26
|
+
| AI providers | OpenAI, Anthropic, xAI, Google, MiniMax Code, and local Ollama |
|
|
27
|
+
| Operator UI | Chat, live runs, logs, scheduler, skills, integrations, MCP, memory, devices, recordings, health, wearables, settings |
|
|
28
|
+
| Automation | Recurring scheduled tasks, one-time runs, browser control, file access, CLI skills, subagents, and messaging delivery |
|
|
29
|
+
| Android control | AI control of a server-attached Android emulator or device: screenshots, UI dumps, taps, typing, intents, APK installs, and ADB shell |
|
|
30
|
+
| Recordings | Web, Android, and wearable audio sessions with transcript search and AI insights |
|
|
31
|
+
| Integrations | Google Workspace, Notion, Microsoft 365, Slack, Figma, and remote MCP servers |
|
|
32
|
+
| Messaging | Telegram, Discord, WhatsApp text/media, and Telnyx Voice calls |
|
|
33
|
+
| Outputs | Artifacts, Grok image generation, vision analysis, markdown tables, and Mermaid graphs |
|
|
34
|
+
| Recovery | `neoagent status`, `neoagent logs`, `neoagent update`, release channels, and `neoagent fix` |
|
|
35
|
+
|
|
36
|
+
## Main Paths
|
|
37
|
+
|
|
38
|
+
| Need | Start here |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Install and first run | [Getting Started](getting-started.md) |
|
|
41
|
+
| Full product surface | [Capabilities](capabilities.md) |
|
|
42
|
+
| Android device control | [Capabilities: Android Control](capabilities.md#android-control) |
|
|
43
|
+
| Recordings and transcripts | [Capabilities: Recordings](capabilities.md#recordings) |
|
|
44
|
+
| Scheduled tasks | [Automation](automation.md) |
|
|
45
|
+
| OAuth apps and messaging | [Integrations](integrations.md) |
|
|
46
|
+
| Skills and MCP | [Skills](skills.md) |
|
|
47
|
+
| Secrets and runtime settings | [Configuration](configuration.md) |
|
|
48
|
+
| Logs, updates, and repair | [Operations](operations.md) |
|
|
49
|
+
| Want to flash a Waveshare ESP32-S3 1.8inch AMOLED | [Waveshare ESP32-S3 1.8inch AMOLED Setup](hardware.md) |
|
|
50
|
+
| OpenClaw comparison | [Why NeoAgent](why-neoagent.md) |
|