{"_id":"@ahmadposten/talos-server","_rev":"2-3a71c763ddf8b0ce1cc86339c0b3c7af","name":"@ahmadposten/talos-server","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@ahmadposten/talos-server","version":"1.0.0","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"@ahmadposten/talos-server@1.0.0","maintainers":[{"name":"ahmadposten","email":"ahmad.hassan612@gmail.com"}],"homepage":"https://talosapp.ai","bin":{"talos-server":"bin/talos-server.cjs"},"dist":{"shasum":"ff7b3e1ce21f2fbbe1e3a3440e469a8e70380a70","tarball":"https://registry.npmjs.org/@ahmadposten/talos-server/-/talos-server-1.0.0.tgz","fileCount":977,"integrity":"sha512-qsl+vc9N2sTtQWTeNtkiCyJZiRxffLXuKfFILrkEfEzQaoupnFiLfGhc/gDdbQRGVxu5yMSFg40W/5+kM1MzFw==","signatures":[{"sig":"MEUCIQDrhHA+z46xTjhPWEm+5NVICjcpnNUMRzFkT8OIcZd8tgIgAXMUVo6eihHnrZdCuXoNcRRD3e4vBK8ZGRBlP7EN15c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64490294},"main":"./index.cjs","type":"module","_from":"file:ahmadposten-talos-server-1.0.0.tgz","exports":{".":"./index.cjs","./standalone":"./dist/standalone.mjs","./package.json":"./package.json"},"scripts":{"db":"docker run -d -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=talos -v $(pwd)/.pgdata:/var/lib/postgresql/data -p 5432:5432 postgres","s3":"docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin -v $(pwd)/.minio/data:/data minio/minio server /data --console-address :9001","dev":"tsx --env-file=.env --env-file=.env.dev ./sources/main.ts","test":"vitest run","build":"pnpm run typecheck && node scripts/build-runtime.cjs","redis":"docker run -d -p 6379:6379 redis","start":"tsx ./sources/main.ts","migrate":"dotenv -e .env.dev -- prisma migrate dev","s3:down":"docker rm -f minio || true","s3:init":"dotenv -e .env.dev -- docker run --rm --network container:minio --entrypoint /bin/sh minio/mc -c \"mc alias set local http://localhost:9000 $S3_ACCESS_KEY $S3_SECRET_KEY && mc mb -p local/$S3_BUCKET || true && mc anonymous set download local/$S3_BUCKET\"","generate":"prisma generate --schema=prisma/schema.prisma","typecheck":"tsc --noEmit","standalone":"tsx ./sources/standalone.ts","postinstall":"prisma generate --schema=prisma/schema.prisma && node scripts/generate-runtime-client.cjs","build:runtime":"node scripts/build-runtime.cjs","bundle:webapp":"node ../talos-cli/scripts/bundle-webapp.cjs --out-dir webapp","migrate:reset":"dotenv -e .env.dev -- prisma migrate reset","standalone:dev":"tsx --env-file=.env.dev ./sources/standalone.ts migrate && tsx --env-file=.env.dev ./sources/standalone.ts serve","build:standalone":"bun build ./sources/standalone.ts --compile --outfile dist/talos-server --target bun && find ../../node_modules/@electric-sql/pglite/dist -name 'pglite.wasm' -exec cp {} dist/ \\; && find ../../node_modules/@electric-sql/pglite/dist -name 'pglite.data' -exec cp {} dist/ \\; && cp -r prisma/migrations dist/prisma/migrations"},"_npmUser":{"name":"ahmadposten","email":"ahmad.hassan612@gmail.com"},"_resolved":"/private/var/folders/h3/q9ncwgkx7qgbrzg3y31c_rhw0000gn/T/999c38c7e03074256aa6e6cc67b09669/ahmadposten-talos-server-1.0.0.tgz","_integrity":"sha512-qsl+vc9N2sTtQWTeNtkiCyJZiRxffLXuKfFILrkEfEzQaoupnFiLfGhc/gDdbQRGVxu5yMSFg40W/5+kM1MzFw==","_npmVersion":"11.6.2","description":"Talos self-host server and bundled web app","directories":{},"_nodeVersion":"25.1.0","dependencies":{"tmp":"^0.2.3","zod":"^4.0.0","pino":"^10.3.0","uuid":"^9.0.1","axios":"^1.6.8","chalk":"4.1.2","minio":"^8.0.5","sharp":"^0.34.3","dotenv":"^16.4.5","prisma":"6.19.2","semver":"^7.7.2","fastify":"^5.2.0","ioredis":"^5.6.1","octokit":"^5.0.3","date-fns":"^4.1.0","socket.io":"^4.8.1","tweetnacl":"^1.0.3","elevenlabs":"^1.54.0","pino-pretty":"^13.0.0","privacy-kit":"^0.0.25","prom-client":"^15.1.3","@date-fns/tz":"^1.2.0","jsonwebtoken":"^9.0.2","@fastify/cors":"^10.0.1","@prisma/client":"6.19.2","@fastify/static":"^8.1.1","reflect-metadata":"^0.2.2","@octokit/webhooks":"14.2.0","socket.io-adapter":"^2.5.5","zod-to-json-schema":"^3.24.3","@electric-sql/pglite":"^0.3.15","@fastify/bearer-auth":"^10.1.1","pglite-prisma-adapter":"^0.7.2","@ahmadposten/talos-wire":"0.1.0","fastify-type-provider-zod":"^6.1.0","prisma-json-types-generator":"^3.5.1","@socket.io/redis-streams-adapter":"^0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","yaml":"^2.4.2","vitest":"^3.2.0","ts-node":"^10.9.2","@types/tmp":"^0.2.6","dotenv-cli":"^8.0.0","typescript":"5.9.3","@types/node":"^20.12.3","@types/uuid":"^9.0.8","@types/chalk":"^2.2.0","@types/semver":"^7.7.0","@types/express":"^4.17.21","@types/jsonwebtoken":"^9.0.10","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/talos-server_1.0.0_1788730960086_0.8781271544625542","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"_id":"@ahmadposten/talos-server@1.0.1","bin":{"talos-server":"bin/talos-server.cjs"},"dist":{"shasum":"e9aa9f5b859d529433a99d1a732fb7a65be9b69d","tarball":"https://registry.npmjs.org/@ahmadposten/talos-server/-/talos-server-1.0.1.tgz","fileCount":977,"integrity":"sha512-PTtf5iiq2KZDBNifB826G8QkT7vFZelGawGvN5vdpy0kxB7kKqgtjsIHdR1tdD07sWiYbYuo0GeR2oSEBDKU+g==","signatures":[{"sig":"MEUCIQCGE6WP1MQXAdU/gzJIlNRF8ioDULU2JF/Q5DOrDbjuHAIgWy3idgjDtVkPOq0VpAubsP7NljqBTaktV5/AHIrGyCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDVzwZYlKt3eWhy1y5FMCWFSCaSaPzUYRgKFMMrczPdbQIgGBJ/W4isbGSiHP010/8I/RQ9jP6NiqsXpv8fBkAmR+4="}],"unpackedSize":64534701},"main":"./index.cjs","name":"@ahmadposten/talos-server","type":"module","_from":"file:ahmadposten-talos-server-1.0.1.tgz","author":{"name":"Kirill Dubovitskiy"},"exports":{".":"./index.cjs","./standalone":"./dist/standalone.mjs","./package.json":"./package.json"},"license":"MIT","scripts":{"db":"docker run -d -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=talos -v $(pwd)/.pgdata:/var/lib/postgresql/data -p 5432:5432 postgres","s3":"docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin -v $(pwd)/.minio/data:/data minio/minio server /data --console-address :9001","dev":"tsx --env-file=.env --env-file=.env.dev ./sources/main.ts","test":"vitest run","build":"pnpm run typecheck && node scripts/build-runtime.cjs","redis":"docker run -d -p 6379:6379 redis","start":"tsx ./sources/main.ts","migrate":"dotenv -e .env.dev -- prisma migrate dev","s3:down":"docker rm -f minio || true","s3:init":"dotenv -e .env.dev -- docker run --rm --network container:minio --entrypoint /bin/sh minio/mc -c \"mc alias set local http://localhost:9000 $S3_ACCESS_KEY $S3_SECRET_KEY && mc mb -p local/$S3_BUCKET || true && mc anonymous set download local/$S3_BUCKET\"","generate":"prisma generate --schema=prisma/schema.prisma","typecheck":"tsc --noEmit","standalone":"tsx ./sources/standalone.ts","postinstall":"prisma generate --schema=prisma/schema.prisma && node scripts/generate-runtime-client.cjs","build:runtime":"node scripts/build-runtime.cjs","bundle:webapp":"node ../talos-cli/scripts/bundle-webapp.cjs --out-dir webapp","migrate:reset":"dotenv -e .env.dev -- prisma migrate reset","standalone:dev":"tsx --env-file=.env.dev ./sources/standalone.ts migrate && tsx --env-file=.env.dev ./sources/standalone.ts serve","build:standalone":"bun build ./sources/standalone.ts --compile --outfile dist/talos-server --target bun && find ../../node_modules/@electric-sql/pglite/dist -name 'pglite.wasm' -exec cp {} dist/ \\; && find ../../node_modules/@electric-sql/pglite/dist -name 'pglite.data' -exec cp {} dist/ \\; && cp -r prisma/migrations dist/prisma/migrations"},"version":"1.0.1","_npmUser":{"name":"ahmadposten","email":"ahmad.hassan612@gmail.com"},"homepage":"https://talosapp.ai","_resolved":"/private/var/folders/h3/q9ncwgkx7qgbrzg3y31c_rhw0000gn/T/931f0d69dae713e8c21b9ed0504c3144/ahmadposten-talos-server-1.0.1.tgz","_integrity":"sha512-PTtf5iiq2KZDBNifB826G8QkT7vFZelGawGvN5vdpy0kxB7kKqgtjsIHdR1tdD07sWiYbYuo0GeR2oSEBDKU+g==","_npmVersion":"11.6.2","description":"Talos self-host server and bundled web app","directories":{},"maintainers":[{"name":"ahmadposten","email":"ahmad.hassan612@gmail.com"}],"_nodeVersion":"25.1.0","dependencies":{"tmp":"^0.2.3","zod":"^4.0.0","pino":"^10.3.0","uuid":"^9.0.1","axios":"^1.6.8","chalk":"4.1.2","minio":"^8.0.5","sharp":"^0.34.3","dotenv":"^16.4.5","prisma":"6.19.2","semver":"^7.7.2","fastify":"^5.2.0","ioredis":"^5.6.1","octokit":"^5.0.3","date-fns":"^4.1.0","socket.io":"^4.8.1","tweetnacl":"^1.0.3","elevenlabs":"^1.54.0","pino-pretty":"^13.0.0","privacy-kit":"^0.0.25","prom-client":"^15.1.3","@date-fns/tz":"^1.2.0","jsonwebtoken":"^9.0.2","@fastify/cors":"^10.0.1","@prisma/client":"6.19.2","@fastify/static":"^8.1.1","reflect-metadata":"^0.2.2","@octokit/webhooks":"14.2.0","socket.io-adapter":"^2.5.5","zod-to-json-schema":"^3.24.3","@electric-sql/pglite":"^0.3.15","@fastify/bearer-auth":"^10.1.1","pglite-prisma-adapter":"^0.7.2","@ahmadposten/talos-wire":"0.1.1","fastify-type-provider-zod":"^6.1.0","prisma-json-types-generator":"^3.5.1","@socket.io/redis-streams-adapter":"^0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","yaml":"^2.4.2","vitest":"^3.2.0","ts-node":"^10.9.2","@types/tmp":"^0.2.6","dotenv-cli":"^8.0.0","typescript":"5.9.3","@types/node":"^20.12.3","@types/uuid":"^9.0.8","@types/chalk":"^2.2.0","@types/semver":"^7.7.0","@types/express":"^4.17.21","@types/jsonwebtoken":"^9.0.10","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/talos-server_1.0.1_1788796252920_0.6700929680556098"}}},"time":{"created":"2026-09-06T21:42:39.844Z","modified":"2026-09-07T15:50:53.452Z","1.0.0":"2026-09-06T21:42:40.568Z","1.0.1":"2026-09-07T15:50:53.302Z"},"author":{"name":"Kirill Dubovitskiy"},"license":"MIT","homepage":"https://talosapp.ai","description":"Talos self-host server and bundled web app","maintainers":[{"name":"ahmadposten","email":"ahmad.hassan612@gmail.com"}],"readme":"# Talos Server\n\nThe Talos relay synchronizes encrypted sessions, devices, messages, and attachments. It supports embedded PGlite with local file storage, or operator-configured PostgreSQL, Redis, and S3-compatible storage.\n\n## Installation\n\n```sh\nnpm install -g talosapp @ahmadposten/talos-server\ntalos server\n```\n\nThe `@ahmadposten/talos-server` package includes the local relay and web app. The `talosapp` package supplies the `talos` command.\n\n## Local development\n\nBuild the CLI and start an isolated relay from the monorepo root:\n\n```sh\npnpm --filter talosapp build\nTALOS_HOME_DIR=\"$PWD/.talos-local\" node packages/talos-cli/bin/talos.mjs server --no-persist\n```\n\nThe CLI persists a master secret with the relay data. Keep that secret with your backups; replacing it can make server-encrypted data and existing authentication tokens unusable.\n\n`pnpm --filter @ahmadposten/talos-server build` needs Bun on PATH to bundle the Node.js runtime. `pnpm --filter @ahmadposten/talos-server bundle:webapp` adds the Expo web export to this package. `pnpm verify:packaged` checks the actual installed tarballs, database, and bundled web page.\n\n## Configuration\n\n| Setting | Purpose |\n| --- | --- |\n| `TALOS_MASTER_SECRET` | Persistent master secret for server authentication and encryption |\n| `HOST` / `PORT` | Listener address and port; local default is port 3005 |\n| `DATA_DIR` / `PGLITE_DIR` | Embedded database and file storage directories |\n| `DATABASE_URL` | External PostgreSQL connection |\n| `REDIS_URL` | Optional shared event transport |\n| `S3_HOST`, `S3_ACCESS_KEY`, `S3_SECRET_KEY`, `S3_BUCKET`, `S3_PUBLIC_URL` | Optional object storage |\n| `TALOS_WEBAPP_URL` | Web origin used for OAuth redirects |\n| `TALOS_STATIC_DIR` | Optional web export directory to serve |\n\nThe old master-secret environment name remains a compatibility fallback. Always use the Talos name for a new deployment. Never generate a new secret on each restart of an existing data directory.\n\n## Distribution and integration tests\n\nThe repository's `Dockerfile` builds a standalone relay image; `Dockerfile.server` builds the service used with external storage. See [production deployment templates](../../deploy/server) and the [Talos release requirements](../../docs/rebrand/README.md) for operator configuration. The npm distribution is `@ahmadposten/talos-server`.\n\nThe [minikube integration harness](deploy/integration-tests/AGENTS.md) uses the separate `talos-integration` namespace and a locally built image. Its destructive stress scenarios are for that test environment. Production deployment templates live at the repository root under `deploy/server`.\n\n[MIT license](LICENSE).\n","readmeFilename":"README.md"}