Talorys is een open-source persoonlijke AI-assistent die volledig wordt gehost in het Cloudflare-account van de gebruiker, waardoor er geen externe servers of databases van de ontwikkelaar nodig zijn. De tool combineert een chatinterface met streaming responsen met functies voor het beheren van taken, notities en projecten, ondersteund door een duurzaam geheugen voor persoonlijke voorkeuren.
De technische architectuur is gebaseerd op Cloudflare Pages voor de frontend, een private Worker voor de API en SQLite-backed Durable Objects voor data-opslag en automatiseringen via alarms. De AI-intelligentie wordt geleverd via Workers AI. Installatie gebeurt via een enkel commando (npx create-talorys@latest), waarbij de gebruiker volledige controle behoudt over de data. Hoewel Talorys is ontworpen om binnen het gratis plan van Cloudflare te passen, is het gebruik van de AI-functies afhankelijk van de dagelijkse quota van Cloudflare.
Talorys: Uw persoonlijke AI-agent in uw eigen cloud
Eén persoon. Eén Cloudflare-account. Eén commando. Eén persoonlijke AI-agent.
npx create-talorys@latest
1. Wat is Talorys?
- Een private assistent — chat met streaming responsen, Markdown en indicatoren voor tool-activiteit.
- Geheugen — duurzame persoonlijke feiten en voorkeuren die u kunt bekijken, bewerken en verwijderen. Alleen de meest relevante herinneringen worden bij elke beurt naar het model gestuurd.
- Taken, notities en projecten — volledige CRUD-functionaliteit in de gebruikersinterface en via de chat (bijv. "Voeg een taak toe om morgen mijn project te reviewen").
- Automatiseringen — eenmalige en terugkerende herinneringen, dagelijkse taakoverzichten en optionele AI-routines, afgeleverd in een in-app notificatiecentrum. Deze draaien op Durable Object alarms, waardoor er niets constant online hoeft te blijven.
- Ontworpen voor één gebruiker — geen aanmelding, geen accounts, geen teams. De installateur stelt het wachtwoord van de eigenaar in.
- Werkt zonder AI — taken, notities, herinneringen en geheugen blijven functioneren als Workers AI niet beschikbaar is of als uw gratis quota is verbruikt.
2. Hoe het werkt
De architectuur volgt dit proces:
Browser $\xrightarrow{\text{HTTPS}}$ Cloudflare Pages (React app + /api Pages Function) $\downarrow$ service binding (geen publieke URL) Private Worker (Hono router) $\downarrow$ getAgentByName("personal-agent") TalorysAgent — Cloudflare Agents SDK Durable Object
- SQLite: gesprekken, herinneringen, taken, notities, projecten, automatiseringen, sessies, instellingen, verbruik.
- Workers AI:
@cf/zai-org/glm-4.7-flash (streaming + tool calling).
- Alarms: herinneringen en terugkerende schema's.
De browser communiceert uitsluitend met uw .pages.dev site. /api/ verzoeken voeren een Pages Function uit die deze via een service binding doorstuurt naar de agent Worker.
De agent Worker wordt geïmplementeerd met workersdev: false en previewurls: false, wat betekent dat deze geen publieke URL heeft. Authenticatie en autorisatie vinden plaats in de Worker, niet in het frontend-gedeelte. Chat-responsen worden end-to-end gestreamd als Server-Sent Events.
Voor meer details kan worden verwezen naar docs/architecture.md.
3. Gebruikte Cloudflare-diensten
| Dienst | Gebruik | Gratis plan |
| Cloudflare Pages | Frontend + Pages Function | Ja |
| Cloudflare Workers | Private API Worker | Ja |
| Durable Objects (SQLite) | Alle data, scheduling alarms | Ja |
| Workers AI | Chat model (@cf/zai-org/glm-4.7-flash) | Ja, dagelijkse toewijzing |
Talorys maakt geen gebruik van R2, D1, KV, Vectorize, AI Search, Workflows of andere betaalde diensten.
4. Implementatie
Voer het volgende commando uit: npx create-talorys@latest
Het installatieproces:
- Controleert Node.js (20.18+) en gebruikt de meegeleverde Wrangler CLI.
- Verifieert uw Cloudflare-login of opent de autorisatiepagina van Cloudflare in uw browser.
- Laat u een account kiezen (indien u er meerdere heeft) en een naam voor de agent.
- Vraagt om een wachtwoord voor de eigenaar (verborgen invoer, strength-check). Dit wordt lokaal gehasht met PBKDF2-SHA256 en uitsluitend opgeslagen als een Cloudflare-secret.
- Genereert een 256-bit sessiesleutel en unieke ressourcenamen (
talorys-<id>-agent, talorys-<id>-web).
- Implementeert de private Worker (maakt het SQLite Durable Object aan), slaat secrets op, en maakt het Pages-project aan met de service binding.
- Verifieert de live implementatie (frontend, auth endpoint, afwijzing van niet-geauthentiseerde verzoeken, storage health) zonder AI-inferentie uit te voeren.
- Print de uiteindelijke
https://….pages.dev URL.
De installateur maakt een talorys/ directory aan met talorys.json (installatie-id, account-id, ressourcenamen, URL — geen secrets) en de implementeerbare artefacten. Bewaar deze voor updates.
Indien het proces wordt onderbroken, kan hetzelfde commando opnieuw worden uitgevoerd. De installateur synchroniseert wat er al bestaat: er worden geen dubbele ressourcen aangemaakt, u hoeft het wachtwoord niet opnieuw in te voeren als dit al is geconfigureerd, en er worden nooit gegevens verwijderd.
Niet-interactieve installaties: TALORYSOWNERPASSWORD=... npx create-talorys@latest --yes --account-id <id> (vereist CLOUDFLAREAPITOKEN indien u niet bent ingelogd).
Machtigingen
De browser-login gebruikt de standaard OAuth-flow van Wrangler. Indien u een API-token gebruikt, zijn de volgende machtigingen nodig:
- Account → Workers Scripts → Edit
- Account → Cloudflare Pages → Edit
- Account → Workers AI → Read
- Account → Account Settings → Read
- User → User Details → Read (optioneel; toont uw e-mail)
Zie docs/deployment.md voor meer informatie.
5. Toegang
Open de URL die de installateur heeft geprint, voer uw wachtwoord in en begin met chatten. U kunt inloggen vanaf meerdere apparaten; deze hebben allemaal dezelfde eigenaar. Beheer sessies onder Settings → Security.
Wachtwoord vergeten? Voer vanuit uw talorys/ directory het volgende uit: npx create-talorys@latest reset-password Dit vervangt het wachtwoord-secret en logt elk apparaat uit.
6. Waar uw gegevens staan
Alle gegevens worden opgeslagen in één SQLite-backed Durable Object (personal-agent) in uw Cloudflare-account. Talorys bevat geen telemetrie, analytics, tracking of advertentiecode en stuurt niets naar de ontwikkelaars.
Cloudflare verwerkt uw gegevens om haar diensten te leveren — inclusief het uitvoeren van Workers AI-inferentie op uw chatberichten en de relevante herinneringen die in elke prompt zijn opgenomen. Raadpleeg het privacybeleid en de Workers AI-voorwaarden van Cloudflare.
Voor het beveiligingsmodel en mitigaties van bedreigingen, zie docs/security.md.
7. Wat is gratis en wat kan geld kosten?
Talorys is ontworpen om binnen het Cloudflare Workers Free plan te passen en activeert nooit zelfstandig betaalde functies. Het is echter niet "onbeperkt gratis":
- Gratis plannen hebben quota's op accountniveau (verzoeken, Durable Object-gebruik, een dagelijkse Workers AI Neuron-toewijzing). Deze quota worden bepaald door Cloudflare.
- Wanneer de AI-toewijzing is uitgeput, toont de chat een duidelijk bericht en hervat de functie na de dagelijkse reset. Alles overig blijft werken en uw gegevens blijven intact.
- Als uw account op een betaald plan staat, wordt gebruik boven de inbegrepen hoeveelheden gefactureerd door Cloudflare volgens uw plan.
Ingebouwde beveiligingen (aanpasbaar in Settings → AI):
- Maximum aantal output-tokens.
- Maximum aantal context-tokens (oudere geschiedenis wordt samengevat).
- Maximum aantal tool-calls en redeneringsstappen per verzoek.
- Maximum aantal AI-verzoeken per dag.
- Maximum aantal geplande AI-runs per dag.
Eenvoudige herinneringen en taakoverzichten maken nooit gebruik van AI. Het Usage-paneel toont lokale schattingen en links naar het Cloudflare-dashboard voor het exacte Neuron-verbruik.
8. Lokale ontwikkeling
Vereisten: Node.js 20.18+.
git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev
npm run dev start de agent Worker (wrangler dev, poort 8787), de Pages Function proxy met service binding (wrangler pages dev, poort 8788) en de Vite UI (http://localhost:5173) in één terminal. Er wordt een apps/agent/.dev.vars aangemaakt met een lokaal wachtwoord (talorys-dev-password, kan worden overschreven met TALORYSDEVPASSWORD) en er wordt gebruikgemaakt van een deterministische mock AI-provider, waardoor geen Cloudflare-login nodig is. De status wordt bewaard in .wrangler/state.
Andere scripts: npm run build, npm test, npm run test:e2e, npm run test:pack, npm run typecheck, npm run lint. Zie docs/development.md.
9. Gegevens back-uppen
Via Settings → Privacy → Download backup wordt een talorys-backup.json bestand gegenereerd met gesprekken, herinneringen, taken, notities, projecten, instellingen en automatiseringen (nooit sessies of inloggegevens). De importfunctie valideert het bestand en voegt het in één transactie samen; het tweemaal importeren van dezelfde back-up is ongevaarlijk.
10. Updaten
Voer vanuit uw talorys/ directory het volgende uit: npx create-talorys@latest update
Dit implementeert de nieuwste Worker en frontend naar dezelfde ressourcen. De Durable Object namespace wordt nooit opnieuw aangemaakt (migraties zijn append-only), het wachtwoord van de eigenaar en sessies blijven behouden, en schema-migraties worden automatisch en transactioneel uitgevoerd bij het eerste verzoek. Ook beschikbaar: status en doctor.
11. Probleemoplossing
| Probleem | Oplossing |
| Installateur stopte halverwege | Voer hetzelfde commando opnieuw uit; het proces wordt hervat. |
| "did not pass its health checks yet" | Nieuwe pages.dev sites kunnen enkele minuten duren. Probeer het opnieuw. |
| Machtigingsfouten (Permission errors) | Gebruik een account waarin u Workers en Pages kunt bewerken, of een token met de bovengenoemde machtigingen. |
| Chat meldt dat de AI-toewijzing is verbruikt | Wacht op de dagelijkse reset, of schakel de Demo mode in via Settings → AI. |
| Uitgesloten na mislukte inlogpogingen | Wacht 15 minuten, of reset het wachtwoord via de CLI. |
npx create-talorys@latest doctor controleert automatisch alle instellingen. Meer informatie in docs/troubleshooting.md.
Repository-indeling
apps/agent: Private Worker: Hono API, TalorysAgent, tools, SQLite repositories.
apps/web: React + Vite app, Pages Function (functions/api/[[path]].ts).
packages/shared: Zod schema's, types, recurrentie/DST logica, password hashing.
packages/create-talorys: De one-command installateur (npm package).
tests/e2e: Playwright UI tests.
tests/smoke: Optionele deployment-test met een echt account.
docs/: Architectuur, implementatie, ontwikkeling, beveiliging, probleemoplossing.
Licentie: MIT
Talorys: Uw persoonlijke AI-agent in uw eigen cloud
Eén persoon. Eén Cloudflare-account. Eén commando. Eén persoonlijke AI-agent.
npx create-talorys@latest
1. Wat is Talorys?
- Een private assistent — chat met streaming responsen, Markdown en indicatoren voor tool-activiteit.
- Geheugen — duurzame persoonlijke feiten en voorkeuren die u kunt bekijken, bewerken en verwijderen. Alleen de meest relevante herinneringen worden bij elke beurt naar het model gestuurd.
- Taken, notities en projecten — volledige CRUD-functionaliteit in de gebruikersinterface en via de chat (bijv. "Voeg een taak toe om morgen mijn project te reviewen").
- Automatiseringen — eenmalige en terugkerende herinneringen, dagelijkse taakoverzichten en optionele AI-routines, afgeleverd in een in-app notificatiecentrum. Deze draaien op Durable Object alarms, waardoor er niets constant online hoeft te blijven.
- Ontworpen voor één gebruiker — geen aanmelding, geen accounts, geen teams. De installateur stelt het wachtwoord van de eigenaar in.
- Werkt zonder AI — taken, notities, herinneringen en geheugen blijven functioneren als Workers AI niet beschikbaar is of als uw gratis quota is verbruikt.
2. Hoe het werkt
De architectuur volgt dit proces:
Browser $\xrightarrow{\text{HTTPS}}$ Cloudflare Pages (React app + /api Pages Function) $\downarrow$ service binding (geen publieke URL) Private Worker (Hono router) $\downarrow$ getAgentByName("personal-agent") TalorysAgent — Cloudflare Agents SDK Durable Object
- SQLite: gesprekken, herinneringen, taken, notities, projecten, automatiseringen, sessies, instellingen, verbruik.
- Workers AI:
@cf/zai-org/glm-4.7-flash (streaming + tool calling).
- Alarms: herinneringen en terugkerende schema's.
De browser communiceert uitsluitend met uw .pages.dev site. /api/ verzoeken voeren een Pages Function uit die deze via een service binding doorstuurt naar de agent Worker.
De agent Worker wordt geïmplementeerd met workersdev: false en previewurls: false, wat betekent dat deze geen publieke URL heeft. Authenticatie en autorisatie vinden plaats in de Worker, niet in het frontend-gedeelte. Chat-responsen worden end-to-end gestreamd als Server-Sent Events.
Voor meer details kan worden verwezen naar docs/architecture.md.
3. Gebruikte Cloudflare-diensten
| Dienst | Gebruik | Gratis plan |
| Cloudflare Pages | Frontend + Pages Function | Ja |
| Cloudflare Workers | Private API Worker | Ja |
| Durable Objects (SQLite) | Alle data, scheduling alarms | Ja |
| Workers AI | Chat model (@cf/zai-org/glm-4.7-flash) | Ja, dagelijkse toewijzing |
Talorys maakt geen gebruik van R2, D1, KV, Vectorize, AI Search, Workflows of andere betaalde diensten.
4. Implementatie
Voer het volgende commando uit: npx create-talorys@latest
Het installatieproces:
- Controleert Node.js (20.18+) en gebruikt de meegeleverde Wrangler CLI.
- Verifieert uw Cloudflare-login of opent de autorisatiepagina van Cloudflare in uw browser.
- Laat u een account kiezen (indien u er meerdere heeft) en een naam voor de agent.
- Vraagt om een wachtwoord voor de eigenaar (verborgen invoer, strength-check). Dit wordt lokaal gehasht met PBKDF2-SHA256 en uitsluitend opgeslagen als een Cloudflare-secret.
- Genereert een 256-bit sessiesleutel en unieke ressourcenamen (
talorys-<id>-agent, talorys-<id>-web).
- Implementeert de private Worker (maakt het SQLite Durable Object aan), slaat secrets op, en maakt het Pages-project aan met de service binding.
- Verifieert de live implementatie (frontend, auth endpoint, afwijzing van niet-geauthentiseerde verzoeken, storage health) zonder AI-inferentie uit te voeren.
- Print de uiteindelijke
https://….pages.dev URL.
De installateur maakt een talorys/ directory aan met talorys.json (installatie-id, account-id, ressourcenamen, URL — geen secrets) en de implementeerbare artefacten. Bewaar deze voor updates.
Indien het proces wordt onderbroken, kan hetzelfde commando opnieuw worden uitgevoerd. De installateur synchroniseert wat er al bestaat: er worden geen dubbele ressourcen aangemaakt, u hoeft het wachtwoord niet opnieuw in te voeren als dit al is geconfigureerd, en er worden nooit gegevens verwijderd.
Niet-interactieve installaties: TALORYSOWNERPASSWORD=... npx create-talorys@latest --yes --account-id <id> (vereist CLOUDFLAREAPITOKEN indien u niet bent ingelogd).
Machtigingen
De browser-login gebruikt de standaard OAuth-flow van Wrangler. Indien u een API-token gebruikt, zijn de volgende machtigingen nodig:
- Account → Workers Scripts → Edit
- Account → Cloudflare Pages → Edit
- Account → Workers AI → Read
- Account → Account Settings → Read
- User → User Details → Read (optioneel; toont uw e-mail)
Zie docs/deployment.md voor meer informatie.
5. Toegang
Open de URL die de installateur heeft geprint, voer uw wachtwoord in en begin met chatten. U kunt inloggen vanaf meerdere apparaten; deze hebben allemaal dezelfde eigenaar. Beheer sessies onder Settings → Security.
Wachtwoord vergeten? Voer vanuit uw talorys/ directory het volgende uit: npx create-talorys@latest reset-password Dit vervangt het wachtwoord-secret en logt elk apparaat uit.
6. Waar uw gegevens staan
Alle gegevens worden opgeslagen in één SQLite-backed Durable Object (personal-agent) in uw Cloudflare-account. Talorys bevat geen telemetrie, analytics, tracking of advertentiecode en stuurt niets naar de ontwikkelaars.
Cloudflare verwerkt uw gegevens om haar diensten te leveren — inclusief het uitvoeren van Workers AI-inferentie op uw chatberichten en de relevante herinneringen die in elke prompt zijn opgenomen. Raadpleeg het privacybeleid en de Workers AI-voorwaarden van Cloudflare.
Voor het beveiligingsmodel en mitigaties van bedreigingen, zie docs/security.md.
7. Wat is gratis en wat kan geld kosten?
Talorys is ontworpen om binnen het Cloudflare Workers Free plan te passen en activeert nooit zelfstandig betaalde functies. Het is echter niet "onbeperkt gratis":
- Gratis plannen hebben quota's op accountniveau (verzoeken, Durable Object-gebruik, een dagelijkse Workers AI Neuron-toewijzing). Deze quota worden bepaald door Cloudflare.
- Wanneer de AI-toewijzing is uitgeput, toont de chat een duidelijk bericht en hervat de functie na de dagelijkse reset. Alles overig blijft werken en uw gegevens blijven intact.
- Als uw account op een betaald plan staat, wordt gebruik boven de inbegrepen hoeveelheden gefactureerd door Cloudflare volgens uw plan.
Ingebouwde beveiligingen (aanpasbaar in Settings → AI):
- Maximum aantal output-tokens.
- Maximum aantal context-tokens (oudere geschiedenis wordt samengevat).
- Maximum aantal tool-calls en redeneringsstappen per verzoek.
- Maximum aantal AI-verzoeken per dag.
- Maximum aantal geplande AI-runs per dag.
Eenvoudige herinneringen en taakoverzichten maken nooit gebruik van AI. Het Usage-paneel toont lokale schattingen en links naar het Cloudflare-dashboard voor het exacte Neuron-verbruik.
8. Lokale ontwikkeling
Vereisten: Node.js 20.18+.
git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev
npm run dev start de agent Worker (wrangler dev, poort 8787), de Pages Function proxy met service binding (wrangler pages dev, poort 8788) en de Vite UI (http://localhost:5173) in één terminal. Er wordt een apps/agent/.dev.vars aangemaakt met een lokaal wachtwoord (talorys-dev-password, kan worden overschreven met TALORYSDEVPASSWORD) en er wordt gebruikgemaakt van een deterministische mock AI-provider, waardoor geen Cloudflare-login nodig is. De status wordt bewaard in .wrangler/state.
Andere scripts: npm run build, npm test, npm run test:e2e, npm run test:pack, npm run typecheck, npm run lint. Zie docs/development.md.
9. Gegevens back-uppen
Via Settings → Privacy → Download backup wordt een talorys-backup.json bestand gegenereerd met gesprekken, herinneringen, taken, notities, projecten, instellingen en automatiseringen (nooit sessies of inloggegevens). De importfunctie valideert het bestand en voegt het in één transactie samen; het tweemaal importeren van dezelfde back-up is ongevaarlijk.
10. Updaten
Voer vanuit uw talorys/ directory het volgende uit: npx create-talorys@latest update
Dit implementeert de nieuwste Worker en frontend naar dezelfde ressourcen. De Durable Object namespace wordt nooit opnieuw aangemaakt (migraties zijn append-only), het wachtwoord van de eigenaar en sessies blijven behouden, en schema-migraties worden automatisch en transactioneel uitgevoerd bij het eerste verzoek. Ook beschikbaar: status en doctor.
11. Probleemoplossing
| Probleem | Oplossing |
| Installateur stopte halverwege | Voer hetzelfde commando opnieuw uit; het proces wordt hervat. |
| "did not pass its health checks yet" | Nieuwe pages.dev sites kunnen enkele minuten duren. Probeer het opnieuw. |
| Machtigingsfouten (Permission errors) | Gebruik een account waarin u Workers en Pages kunt bewerken, of een token met de bovengenoemde machtigingen. |
| Chat meldt dat de AI-toewijzing is verbruikt | Wacht op de dagelijkse reset, of schakel de Demo mode in via Settings → AI. |
| Uitgesloten na mislukte inlogpogingen | Wacht 15 minuten, of reset het wachtwoord via de CLI. |
npx create-talorys@latest doctor controleert automatisch alle instellingen. Meer informatie in docs/troubleshooting.md.
Repository-indeling
apps/agent: Private Worker: Hono API, TalorysAgent, tools, SQLite repositories.
apps/web: React + Vite app, Pages Function (functions/api/[[path]].ts).
packages/shared: Zod schema's, types, recurrentie/DST logica, password hashing.
packages/create-talorys: De one-command installateur (npm package).
tests/e2e: Playwright UI tests.
tests/smoke: Optionele deployment-test met een echt account.
docs/: Architectuur, implementatie, ontwikkeling, beveiliging, probleemoplossing.
Licentie: MIT