nodal-agents 0.1.0
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/README.md +81 -0
- package/cli.js +14113 -0
- package/migrations/0000_flashy_clea.sql +529 -0
- package/migrations/0001_exotic_shooting_star.sql +3 -0
- package/migrations/0002_gray_devos.sql +39 -0
- package/migrations/0003_stormy_thaddeus_ross.sql +1 -0
- package/migrations/0004_married_deadpool.sql +3 -0
- package/migrations/0005_tense_hedge_knight.sql +1 -0
- package/migrations/0006_credentials_table.sql +25 -0
- package/migrations/0007_free_speed.sql +16 -0
- package/migrations/0008_curious_thor_girl.sql +17 -0
- package/migrations/meta/0000_snapshot.json +3957 -0
- package/migrations/meta/0001_snapshot.json +3977 -0
- package/migrations/meta/0002_snapshot.json +4210 -0
- package/migrations/meta/0003_snapshot.json +4216 -0
- package/migrations/meta/0004_snapshot.json +4237 -0
- package/migrations/meta/0005_snapshot.json +4244 -0
- package/migrations/meta/0006_snapshot.json +4330 -0
- package/migrations/meta/0007_snapshot.json +4330 -0
- package/migrations/meta/0008_snapshot.json +4447 -0
- package/migrations/meta/_journal.json +69 -0
- package/package.json +63 -0
- package/runner.js +13181 -0
- package/web/.next/BUILD_ID +1 -0
- package/web/.next/app-path-routes-manifest.json +28 -0
- package/web/.next/build-manifest.json +20 -0
- package/web/.next/package.json +1 -0
- package/web/.next/prerender-manifest.json +109 -0
- package/web/.next/react-loadable-manifest.json +14 -0
- package/web/.next/required-server-files.json +351 -0
- package/web/.next/routes-manifest.json +216 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js +2 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/edit/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js +2 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/agents/[id]/telegram/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/agents/page.js +2 -0
- package/web/.next/server/app/(dashboard)/agents/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/approvals/page.js +2 -0
- package/web/.next/server/app/(dashboard)/approvals/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/approvals/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/automations/page.js +2 -0
- package/web/.next/server/app/(dashboard)/automations/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/automations/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/billing/page.js +2 -0
- package/web/.next/server/app/(dashboard)/billing/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/billing/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/connectors/page.js +2 -0
- package/web/.next/server/app/(dashboard)/connectors/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/connectors/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/credentials/page.js +2 -0
- package/web/.next/server/app/(dashboard)/credentials/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/credentials/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js +2 -0
- package/web/.next/server/app/(dashboard)/jobs/[id]/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/jobs/[id]/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/jobs/page.js +2 -0
- package/web/.next/server/app/(dashboard)/jobs/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/jobs/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/logs/page.js +2 -0
- package/web/.next/server/app/(dashboard)/logs/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/memories/page.js +2 -0
- package/web/.next/server/app/(dashboard)/memories/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/memories/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/settings/page.js +2 -0
- package/web/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js +2 -0
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/skills/[id]/edit/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/skills/page.js +2 -0
- package/web/.next/server/app/(dashboard)/skills/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/(dashboard)/stats/page.js +2 -0
- package/web/.next/server/app/(dashboard)/stats/page.js.nft.json +1 -0
- package/web/.next/server/app/(dashboard)/stats/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/_global-error/page.js +32 -0
- package/web/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/_global-error.html +1 -0
- package/web/.next/server/app/_global-error.meta +16 -0
- package/web/.next/server/app/_global-error.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/web/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/web/.next/server/app/_not-found/page.js +2 -0
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/_not-found.html +1 -0
- package/web/.next/server/app/_not-found.meta +16 -0
- package/web/.next/server/app/_not-found.rsc +17 -0
- package/web/.next/server/app/_not-found.segments/_full.segment.rsc +17 -0
- package/web/.next/server/app/_not-found.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/_not-found.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -0
- package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/api/auth/[...all]/route.js +1 -0
- package/web/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
- package/web/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/api/health/route.js +1 -0
- package/web/.next/server/app/api/health/route.js.nft.json +1 -0
- package/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/callback/route.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/callback/route.js.nft.json +1 -0
- package/web/.next/server/app/api/oauth/[provider]/callback/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/start/route.js +1 -0
- package/web/.next/server/app/api/oauth/[provider]/start/route.js.nft.json +1 -0
- package/web/.next/server/app/api/oauth/[provider]/start/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/auth/callback/route.js +1 -0
- package/web/.next/server/app/auth/callback/route.js.nft.json +1 -0
- package/web/.next/server/app/auth/callback/route_client-reference-manifest.js +1 -0
- package/web/.next/server/app/index.html +1 -0
- package/web/.next/server/app/index.meta +16 -0
- package/web/.next/server/app/index.rsc +16 -0
- package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -0
- package/web/.next/server/app/index.segments/_full.segment.rsc +16 -0
- package/web/.next/server/app/index.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/index.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/index.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/login/page.js +2 -0
- package/web/.next/server/app/login/page.js.nft.json +1 -0
- package/web/.next/server/app/login/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/onboarding/page.js +2 -0
- package/web/.next/server/app/onboarding/page.js.nft.json +1 -0
- package/web/.next/server/app/onboarding/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app/onboarding.html +1 -0
- package/web/.next/server/app/onboarding.meta +15 -0
- package/web/.next/server/app/onboarding.rsc +17 -0
- package/web/.next/server/app/onboarding.segments/_full.segment.rsc +17 -0
- package/web/.next/server/app/onboarding.segments/_head.segment.rsc +5 -0
- package/web/.next/server/app/onboarding.segments/_index.segment.rsc +7 -0
- package/web/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -0
- package/web/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +5 -0
- package/web/.next/server/app/onboarding.segments/onboarding.segment.rsc +5 -0
- package/web/.next/server/app/page.js +2 -0
- package/web/.next/server/app/page.js.nft.json +1 -0
- package/web/.next/server/app/page_client-reference-manifest.js +1 -0
- package/web/.next/server/app-paths-manifest.json +28 -0
- package/web/.next/server/chunks/1006.js +1 -0
- package/web/.next/server/chunks/168.js +8 -0
- package/web/.next/server/chunks/2187.js +1 -0
- package/web/.next/server/chunks/2275.js +120 -0
- package/web/.next/server/chunks/2422.js +1 -0
- package/web/.next/server/chunks/3159.js +45 -0
- package/web/.next/server/chunks/3699.js +1 -0
- package/web/.next/server/chunks/3807.js +1 -0
- package/web/.next/server/chunks/3865.js +9 -0
- package/web/.next/server/chunks/3869.js +1 -0
- package/web/.next/server/chunks/3938.js +1 -0
- package/web/.next/server/chunks/4574.js +1 -0
- package/web/.next/server/chunks/4674.js +18 -0
- package/web/.next/server/chunks/5376.js +1 -0
- package/web/.next/server/chunks/5402.js +65 -0
- package/web/.next/server/chunks/5449.js +1 -0
- package/web/.next/server/chunks/5754.js +62 -0
- package/web/.next/server/chunks/5962.js +1 -0
- package/web/.next/server/chunks/6128.js +1 -0
- package/web/.next/server/chunks/6402.js +1 -0
- package/web/.next/server/chunks/6605.js +12 -0
- package/web/.next/server/chunks/6697.js +1 -0
- package/web/.next/server/chunks/6764.js +1 -0
- package/web/.next/server/chunks/6896.js +2 -0
- package/web/.next/server/chunks/8464.js +2 -0
- package/web/.next/server/chunks/9606.js +428 -0
- package/web/.next/server/functions-config-manifest.json +14 -0
- package/web/.next/server/middleware-build-manifest.js +1 -0
- package/web/.next/server/middleware-manifest.json +6 -0
- package/web/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/web/.next/server/middleware.js +18 -0
- package/web/.next/server/next-font-manifest.js +1 -0
- package/web/.next/server/next-font-manifest.json +1 -0
- package/web/.next/server/pages/404.html +1 -0
- package/web/.next/server/pages/500.html +1 -0
- package/web/.next/server/pages-manifest.json +4 -0
- package/web/.next/server/prefetch-hints.json +1 -0
- package/web/.next/server/server-reference-manifest.js +1 -0
- package/web/.next/server/server-reference-manifest.json +1 -0
- package/web/.next/server/webpack-runtime.js +1 -0
- package/web/.next/static/chunks/174.f5bd28884efa0000.js +1 -0
- package/web/.next/static/chunks/203.02a2bd001ebbe608.js +1 -0
- package/web/.next/static/chunks/231-fbb2baea2de90085.js +1 -0
- package/web/.next/static/chunks/363-483f33abe1809381.js +1 -0
- package/web/.next/static/chunks/45-b78e94bb1c396542.js +1 -0
- package/web/.next/static/chunks/504-baed39064a242351.js +1 -0
- package/web/.next/static/chunks/511-487710d0fe16fbe3.js +1 -0
- package/web/.next/static/chunks/678-46261e73dea11bc7.js +1 -0
- package/web/.next/static/chunks/724-1d09b7ea367babbe.js +32 -0
- package/web/.next/static/chunks/a7a8b010-64b9ea0922a3e9c1.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/edit/page-1cbc88f6ea30c04e.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/[id]/telegram/page-c3393e2e0665b0a7.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/agents/page-fe6937dec50415e9.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/approvals/page-9509351c92665fc1.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/automations/page-d06b5eb3ec1ada30.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/billing/page-88165ec8f0c4df6b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/connectors/page-9189af92fc7cddd4.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/credentials/page-9ad4cfdfb3fda068.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/[id]/page-fdaeff5be0544e4c.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/jobs/page-c1ddb55d4de1ae7d.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/layout-7ad84dfaa376ab9f.js +2 -0
- package/web/.next/static/chunks/app/(dashboard)/logs/page-a6006d9cc2590a0a.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/memories/page-8466e02527ae909b.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/settings/page-d7dd2b7586e23ec9.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/[id]/edit/page-7c1e1566a93b3a65.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/skills/page-30cbb1e29d7e5147.js +1 -0
- package/web/.next/static/chunks/app/(dashboard)/stats/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/_global-error/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/_not-found/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/auth/[...all]/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/health/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/oauth/[provider]/callback/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/api/oauth/[provider]/start/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/auth/callback/route-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/error-41d8134c91e8652d.js +1 -0
- package/web/.next/static/chunks/app/layout-fb836a3464648614.js +1 -0
- package/web/.next/static/chunks/app/login/page-176e4c02453c9ce9.js +1 -0
- package/web/.next/static/chunks/app/not-found-88165ec8f0c4df6b.js +1 -0
- package/web/.next/static/chunks/app/onboarding/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/app/page-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/e5009a55-3b270d90dfdebefa.js +1 -0
- package/web/.next/static/chunks/framework-a208e71e7c780968.js +1 -0
- package/web/.next/static/chunks/main-949172f5a58d52c4.js +5 -0
- package/web/.next/static/chunks/main-app-ad34d1b1511b9a1c.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/app-error-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/forbidden-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/global-error-c836ffb6bc7442ca.js +1 -0
- package/web/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ddf08b608a2840c5.js +1 -0
- package/web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/web/.next/static/chunks/webpack-ea6870dc3308aa05.js +1 -0
- package/web/.next/static/css/bd2cf2f17af36e40.css +1 -0
- package/web/.next/static/vTtlbto9aMl3tYcTyV1GL/_buildManifest.js +1 -0
- package/web/.next/static/vTtlbto9aMl3tYcTyV1GL/_ssgManifest.js +1 -0
- package/web/server.js +44 -0
package/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Nodal-Agents
|
|
2
|
+
|
|
3
|
+
Local-first AI agent platform. Self-host on Mac, PC, Linux, VPS, or NAS in 3 commands.
|
|
4
|
+
|
|
5
|
+
## Install in 30 seconds (Docker)
|
|
6
|
+
|
|
7
|
+
Works on any host with Docker — Mac, PC, Linux, VPS, Synology / Unraid / TrueNAS NAS, Raspberry Pi.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
curl -O https://raw.githubusercontent.com/Kwintspiracy/nodal-agents/main/docker-compose.yml
|
|
11
|
+
docker compose up -d
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Open <http://localhost:3000> — Nodal-Agents is running. Configure your LLM provider from **Settings → LLM keys** in the dashboard.
|
|
15
|
+
|
|
16
|
+
Data (config, postgres, logs) lives in the `nodal-data` Docker volume. To wipe everything: `docker compose down -v`.
|
|
17
|
+
|
|
18
|
+
The image is published to `ghcr.io/kwintspiracy/nodal-agents:latest` (multi-arch: amd64 + arm64). To pin a version, replace `latest` with a release tag (e.g. `v0.1.0`).
|
|
19
|
+
|
|
20
|
+
### Build the image locally
|
|
21
|
+
|
|
22
|
+
If you'd rather build from source instead of pulling the published image:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
git clone https://github.com/Kwintspiracy/nodal-agents.git
|
|
26
|
+
cd nodal-agents
|
|
27
|
+
docker compose build
|
|
28
|
+
docker compose up -d
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
(Comment the `image:` line and uncomment `build: .` in `docker-compose.yml`.)
|
|
32
|
+
|
|
33
|
+
## Developer setup (monorepo)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pnpm install
|
|
37
|
+
pnpm typecheck
|
|
38
|
+
pnpm lint
|
|
39
|
+
pnpm test
|
|
40
|
+
pnpm --filter nodal-agents dev # CLI in tsx watch mode
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Monorepo structure
|
|
44
|
+
|
|
45
|
+
- `apps/web` — Next.js dashboard (UI)
|
|
46
|
+
- `apps/runner` — Agent runtime (HTTP API, job execution, cron ticker)
|
|
47
|
+
- `apps/cli` — `nodal-agents` install + ops command
|
|
48
|
+
- `packages/db` — Drizzle schema + migrations + client (only place that imports postgres)
|
|
49
|
+
- `packages/shared` — Zod types and constants shared across web + runner
|
|
50
|
+
- `packages/llm` — Vercel AI SDK wrapper, multi-provider abstraction
|
|
51
|
+
- `packages/tools` — Tool registration + execution + approval gates
|
|
52
|
+
- `packages/memory` — Agent memory CRUD + embeddings
|
|
53
|
+
- `packages/orchestration` — Router + Planner patterns (delegation, task board)
|
|
54
|
+
- `packages/runner-adapters` — Connectors: notion, drive, gmail, sheets, etc.
|
|
55
|
+
- `packages/delivery` — Telegram, email, future Slack/Discord
|
|
56
|
+
- `packages/auth` — Pluggable auth provider (local-trust default, better-auth opt-in, bearer-token for LAN)
|
|
57
|
+
|
|
58
|
+
## Architecture rules (enforced by `dependency-cruiser`)
|
|
59
|
+
|
|
60
|
+
- `apps/*` may import `packages/*`, never the reverse
|
|
61
|
+
- `apps/web` and `apps/runner` cannot import each other (DB or HTTP only)
|
|
62
|
+
- Only `packages/db` may import postgres clients (`pg`, `postgres`, `drizzle-orm`)
|
|
63
|
+
- `packages/runner-adapters/*` may only import from `packages/tools` and `packages/shared`
|
|
64
|
+
- No circular dependencies
|
|
65
|
+
|
|
66
|
+
Run `pnpm deps:check` locally before pushing.
|
|
67
|
+
|
|
68
|
+
## Stack
|
|
69
|
+
|
|
70
|
+
- **Runtime:** Node 22+, TypeScript strict
|
|
71
|
+
- **Monorepo:** pnpm workspaces + Turborepo
|
|
72
|
+
- **DB:** embedded-postgres (local + Docker), Drizzle ORM, pgvector
|
|
73
|
+
- **Validation:** Zod
|
|
74
|
+
- **HTTP server:** Hono (runner)
|
|
75
|
+
- **LLM:** Vercel AI SDK
|
|
76
|
+
- **Auth:** local-trust (single-user loopback) / local-auth (better-auth, multi-user LAN) / bearer-token
|
|
77
|
+
- **Tests:** Vitest (unit), Playwright (e2e), dependency-cruiser (architecture)
|
|
78
|
+
|
|
79
|
+
## License
|
|
80
|
+
|
|
81
|
+
TBD.
|