moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,123 @@
# CONT-02-day0 — Day-0 LinkedIn Launch Post (DRAFT)
**Author:** Marko Marković (Marko publishes; I draft)
**Audience:** LinkedIn network — founders, AI/ML community, enterprise contacts, Egzakta network
**Length target:** ≤ 1,300 chars (per M-32 + LinkedIn-native cap before "see more" fold)
**Tone:** Confident, evidence-led, NOT hype
**Zone (per 2026-04-19-launch-copy-variants.md):** Zone B — Matches/Marginal Beat (LoCoMo 74% vs Mem0 66.9% is +7.1pp but framed as "apples-to-apples methodology" rather than "SOTA dominance")
**Status:** READY-TO-PUBLISH. Marko reviews + posts on Day-0 morning.
**Pre-publish coordination:** waggle-os.ai/blog technical post live first (linked from this), arxiv preprint live if Path A succeeded, otherwise methodology.md link.
---
## Version A — Sovereignty-led (RECOMMENDED)
> 🐝 Today we're launching Waggle OS — and I want to share why.
>
> Every AI assistant forgets you exist between sessions. Every chat starts from zero. That's not memory; that's amnesia.
>
> We built a different layer:
>
> 🔹 **Memory that persists** — local-first, bitemporal knowledge graph, audit-trail grade.
> 🔹 **Harvest from where you already work** — ChatGPT, Claude, Gemini, Perplexity exports → one unified memory.
> 🔹 **Agents that get smarter the longer you use them** — categorized decisions, preferences, corrections.
>
> On the LoCoMo long-context memory benchmark — apples-to-apples methodology — Waggle's substrate scores **74%** vs Mem0's published **66.9%**. Same fixture, same model class, transparent judge ensemble. The +7.1pp is real. The methodology is reproducible.
>
> The architecture is sovereign by default — your data never leaves your machine unless you choose. EU AI Act Article 13 audit triggers ship by default. Apache 2.0 hive-mind core is on GitHub today.
>
> Try it free: [waggle-os.ai](https://waggle-os.ai)
> Read the methodology: [waggle-os.ai/docs/methodology](https://waggle-os.ai/docs/methodology)
> Open source: [github.com/marolinik/hive-mind](https://github.com/marolinik/hive-mind)
>
> Egzakta Group's KVARK enterprise platform builds on this same substrate — same numbers, sovereign deployment, customer-perimeter.
>
> #AIagents #Memory #Sovereignty #LocalFirst #EUAIAct
**Char count:** ~1,250 (under cap; leaves 50 chars buffer for line break artifacts)
---
## Version B — Methodology-led (academic-leaning)
> Today we're publishing Waggle — and the methodology paper behind it.
>
> Most "AI memory" benchmarks compare apples to oranges: different judge ensembles, different cell definitions, no pre-registration. We built one that doesn't:
>
> 🔹 **Pre-registered manifest** with SHA-pinned protocol
> 🔹 **Multi-jurisdictional judge trio** (Opus 4.7 + GPT-5.4 + Gemini 3.1, κ=0.7878)
> 🔹 **5-cell ablation** (no-context, oracle-context, full-context, retrieval, agentic)
>
> On LoCoMo with this methodology, our substrate scores **74%** vs Mem0's published **66.9%**. The +7.1pp gap traces partly to architecture (bitemporal KG, IPB compression) and partly to methodology choices the field hasn't standardized.
>
> Why this matters: memory is the moat. Not training, not parameters. The AI that remembers you, your preferences, your decisions — that's the one you'll keep. And that memory has to be auditable for EU AI Act and SOC 2 to even start the enterprise conversation.
>
> Local-first by default. Apache 2.0 hive-mind core. Tauri desktop binary. MCP-native.
>
> Paper: [arxiv link OR methodology.md]
> Try free: [waggle-os.ai](https://waggle-os.ai)
> OSS: [github.com/marolinik/hive-mind](https://github.com/marolinik/hive-mind)
>
> #AIMemory #Benchmarks #Reproducibility #EUAIAct #LocalFirst
**Char count:** ~1,290 (within cap)
---
## Version C — Founder-voice / honest (alternative)
> Six months ago I told my co-founders I was going to build "the memory layer for AI." They thought I was insane.
>
> Today we're shipping it.
>
> Waggle OS is a desktop app + open-source substrate. It does three things most AI assistants don't:
>
> 🔹 Remembers what you decided, preferred, and corrected — across all your sessions, across all your AI tools.
> 🔹 Pulls memory FROM your existing AI exports (ChatGPT, Claude, Gemini, Perplexity) — you don't have to "start fresh."
> 🔹 Stays on your machine unless you choose otherwise. EU AI Act audit trail built-in.
>
> Benchmark: LoCoMo apples-to-apples, **74%** vs Mem0's **66.9%**. The methodology paper is live. The substrate is Apache 2.0. The hive-mind core is on npm and GitHub today.
>
> If you're a founder, consultant, or researcher who wishes your AI tools remembered you: try it. Free tier exists forever.
>
> If you're an enterprise looking at memory + AI Act audit trail + sovereignty as a 2026 priority: KVARK (Egzakta Group) is built on this same substrate. Same numbers, customer-perimeter deployment.
>
> [waggle-os.ai](https://waggle-os.ai) — try free
> [marolinik/hive-mind](https://github.com/marolinik/hive-mind) — Apache 2.0 OSS
>
> #AI #Memory #FounderJourney #EUAIAct #Sovereignty
**Char count:** ~1,260 (within cap)
---
## Recommendation
**Version A — sovereignty-led.** Reasons:
1. Sovereignty is the differentiator Hermes Agent (110K stars Feb 2026) doesn't have — per Track H Hermes canonical integration, this is the load-bearing positioning angle.
2. Concrete benchmark number (74% vs 66.9%) anchors the credibility but isn't the lead.
3. EU AI Act mention plants the enterprise seed (KVARK funnel) without making the post enterprise-flavored.
4. Three concrete things (memory, harvest, agents) is the most cognitively-accessible structure for a launch post.
5. Personal voice (🐝 + "I want to share why") balances the technical claims.
**When to use Version B:** if Pavlukhin endorsement succeeds and arxiv preprint goes live alongside, the methodology-led framing leverages that credibility chain.
**When to use Version C:** if the founder narrative matters more for this audience and we want to seed "KVARK as enterprise path" without pushing it.
## Pre-publish checklist
- [ ] Day-0 actual achieved (signed binary downloadable from waggle-os.ai)
- [ ] Landing page Day-0 CTA active (sign-up flow live, Stripe live keys flipped per DAY0-02)
- [ ] OSS hive-mind v0.2.0 republished (per push-gate ceremony §2.5)
- [ ] Arxiv preprint live (Path A) OR methodology.md route confirmed live (Path D)
- [ ] Demo video (90s) URL accessible (CR-4 / CONT-01) — even if "coming soon" is acceptable per Phase 3
- [ ] Warm list 5-10 names pre-emailed T-72h per M-32 (Marko-side action; not gating but helpful)
## Post-publish actions (Marko)
1. Pin to LinkedIn profile for 24h
2. Cross-post to X (adapted to 280-char + thread format)
3. Reply to first 10 comments within 1h to seed engagement
4. Monitor PostHog dashboard for landing→signup conversion in first 4h
5. T+5d: post "It's been a week" follow-up (CONT-02-followup, separate draft)
6. T+10d: post "What we learned" reflection

View File

@@ -0,0 +1,70 @@
# DAY0-CRED-05 / CONT-03 — Pavlukhin EVOLVESCHEMA arxiv submission email (DRAFT)
**Target:** Mikhail Pavlukhin
**Author:** Marko Marković (Marko sends; I draft)
**Purpose:** Path A endorsement chain — request standalone EVOLVESCHEMA arxiv preprint so Marko's LoCoMo paper can cite it + benefit from Pavlukhin's existing arxiv-author status for endorsement.
**Status:** READY-TO-SEND. Marko reviews + adjusts tone, then sends.
**Reply window:** 24-72h. Path D fallback (methodology.md in OSS repo) already live if Pavlukhin doesn't respond.
**Authority:** PM master §3a — Path A primary; v1.0 Phase 2 DAY0-CRED-05.
---
## Subject line options (pick one)
- **A (direct):** "Quick ask: standalone EVOLVESCHEMA arxiv preprint for Waggle paper citation"
- **B (relational):** "Following up on EVOLVESCHEMA — quick arxiv coordination request"
- **C (concise):** "EVOLVESCHEMA arxiv question — 5 min read"
**Recommend A** — sets clear expectation in the inbox preview.
---
## Email body (DRAFT — Marko reviews + sends)
> Hi Mikhail,
>
> Hope you're well. Brief context + a coordination ask.
>
> We're publishing a Waggle/hive-mind paper next week on apples-to-apples methodology for LoCoMo (long-context memory benchmark). Our substrate score is 74% on the canonical fixture vs Mem0's published 66.9% — a +7.1pp gap that we trace partly to methodology choices (judge ensemble, no-context vs full-context cell definitions) and partly to the substrate architecture (bitemporal KG + IPB compression).
>
> The architecture relies on a prompt-evolution component that descends directly from your EVOLVESCHEMA work. We're citing you in §3.2 and §5.3 of the paper, and the lineage attribution is unambiguous — your name is in the paper either as a co-author candidate or as a strong primary citation, your call.
>
> **The ask:** Would you consider submitting a standalone EVOLVESCHEMA preprint to arxiv (cs.AI) in the next 1-2 weeks? Even a 4-6 page write-up of the core method, separate from any longer paper you're working on, would be enormously helpful because:
>
> 1. It lets our Waggle paper cite an arxiv ID rather than an informal lineage reference.
> 2. As an existing arxiv author, you could endorse our submission, which gates first-time submissions to cs.AI.
>
> If you're already planning a fuller EVOLVESCHEMA paper, even a placeholder/draft preprint would work for both purposes — the endorsement chain only needs the arxiv-author status to exist, not the final version.
>
> Happy to share our paper draft if helpful (currently at the methodology-doc stage; the LoCoMo numbers are pre-registered + reproducible). And of course we can coordinate authorship/citation framing whichever way suits you best.
>
> No pressure if the timing doesn't work — we have a fallback path that doesn't require arxiv coordination. But Path A (your standalone preprint) is materially stronger for the paper, and I wanted to offer it first.
>
> Quick yes/no/maybe in a few days would help us calibrate the Day-0 sequencing.
>
> Thanks,
> Marko
---
## Tone calibration (for Marko's review)
- **Specific number:** "74% vs Mem0's 66.9%" is concrete; signals we're serious about evidence.
- **Attribution latitude:** "co-author candidate or primary citation, your call" — flexible without being pushy.
- **Time-bounded but not pressuring:** "next 1-2 weeks" + "Quick yes/no/maybe in a few days" — clear window but no urgency.
- **Path D acknowledged:** "we have a fallback path" — signals this isn't blocking the launch (per PM master §3a) and respects his time.
- **Length:** ~310 words. Within "5 min read" framing of subject C.
## Send mechanics
1. Marko reviews + adjusts tone (especially the "your name is in the paper either as a co-author candidate or as a strong primary citation" framing — this depends on M-04 strategic decision pending on attribution).
2. Marko sends from his personal email (not company; lineage is academic).
3. Marko marks calendar reminder for T+72h to chase if no reply.
4. Path D activation: if no reply by 2026-05-17 (T+7d), pivot to methodology.md citation in OSS repo per `decisions/2026-05-02-track-e-arxiv-7-decisions.md` Path D fallback.
## Reply handling
- **YES:** Marko replies with paper draft + arxiv submission timeline coordination. CONT-03 closes.
- **MAYBE / "let me think":** Marko gives him 72h. Pre-schedule a chase email.
- **NO:** Marko thanks him + activates Path D. No bridge burned; attribution remains in paper.
- **NO REPLY 7d:** Path D auto-activates. No further follow-up.

View File

@@ -0,0 +1,239 @@
# apps/www Deployment Readiness — Day-0 Plan
**Status:** DRAFT — what's needed to deploy `apps/www` to `https://waggle-os.ai`
**Authoring:** CC, 2026-05-12 (Phase 2 Wave 3 prep)
**Gates:** Wave 3 / C2 (Stripe live smoke) is blocked until apps/www is live at a real URL
---
## Why this matters
The Stripe webhook endpoint `we_1TVt5qCNCrMQy1f7Zl5ujKSC` (created during Wave 2 PG3
prep) is configured to POST to `https://waggle-os.ai/api/webhooks/stripe`. Without a
live deployment at that URL:
- Stripe webhook deliveries fail (5xx or DNS fail) — won't trigger tier upgrades.
- Marketing CTAs ("Start free trial") have nowhere to land.
- Day-0 LinkedIn post can't link to a real domain.
The Day-0 ETA target (2026-05-15) requires this resolved.
---
## Existing deploy automation: broken
`.github/workflows/deploy-www.yml` targets **GitHub Pages** and expects
`apps/www/dist` (static output). Two problems:
1. `next build` outputs `.next/`, NOT `dist/` — the workflow's artifact upload path is wrong.
2. GitHub Pages only serves **static files** — it cannot run:
- The `/api/webhooks/stripe` route (needs serverless)
- The Clerk middleware (needs Node runtime)
- Server Actions / dynamic rendering
This workflow either needs full rewrite OR a different host. **Recommendation: switch to Vercel.**
---
## Recommended path: Vercel
### Why Vercel
- **Native Next.js hosting** — zero config; auto-detects `apps/www/next.config.mjs`
- **Server Actions + API routes + middleware** all work without translation
- **Free tier** sufficient for pilot traffic; auto-scaling on Pro
- **Native Clerk + Stripe + PostHog integrations** documented
- **DNS-by-CNAME** straightforward to point `waggle-os.ai` at Vercel
### Step 1 — Vercel project setup
```powershell
# Install Vercel CLI (one-time)
npm i -g vercel
# Link the apps/www directory to a new Vercel project
cd D:\Projects\waggle-os\apps\www
vercel login # browser OAuth, uses Marko's account
vercel link # creates .vercel/ folder (gitignored)
# When prompted: "Set up apps/www?" → Yes
# Project name: waggle-www (or your choice)
# Framework: Next.js (auto-detected)
# Build command: leave default (npm run build)
# Output directory: leave default (.next)
# Root directory: ./ (already in apps/www)
```
### Step 2 — Set production environment variables
13 env vars from `apps/www/.env.local` need to land in Vercel. Use the CLI for atomicity:
```powershell
cd D:\Projects\waggle-os\apps\www
# Bulk-add all 13 prod env vars to Vercel (production environment)
# Reads from .env.local and pushes each to Vercel.
$envFile = ".env.local"
Get-Content $envFile | ForEach-Object {
if ($_ -match "^([A-Z_]+)=(.+)$") {
$key = $matches[1]
$val = $matches[2]
# Skip lines that are template/example values
if ($val -notmatch "REPLACE_ME") {
Write-Host "Setting $key in Vercel production..."
$val | vercel env add $key production
}
}
}
```
**Verification:**
```powershell
vercel env ls production
# Should list all 13 keys (no values displayed; just names).
```
### Step 3 — First deploy (preview)
```powershell
cd D:\Projects\waggle-os\apps\www
vercel
# Deploys to a preview URL like https://waggle-www-<hash>.vercel.app
# Capture this URL — use for smoke test before production
```
### Step 4 — Preview smoke test
```powershell
# Open the preview URL in browser:
# 1. Landing page renders (no Clerk crash, no 500)
# 2. /sign-up loads the Clerk widget
# 3. /pricing renders Pro + Teams cards
# 4. /privacy + /terms + /cookies + /eu-ai-act render legal pages
# 5. Hit /api/webhooks/stripe with a curl POST (should reject without signature):
curl -X POST https://waggle-www-<hash>.vercel.app/api/webhooks/stripe -d '{}'
# Expected: 400 "Missing stripe-signature header" or similar
```
### Step 5 — Promote to production at waggle-os.ai
```powershell
vercel --prod
# Promotes the last preview to production at https://<project>.vercel.app
```
Now point `waggle-os.ai` DNS:
- Vercel dashboard → project → Domains → Add `waggle-os.ai`
- Vercel shows the CNAME/A record values to set at your DNS registrar
- At the registrar (whoever hosts waggle-os.ai DNS), add the records
- Verify with `nslookup waggle-os.ai` — should resolve to Vercel's IP
- SSL cert auto-provisions via Let's Encrypt within ~5 min of DNS pointing
### Step 6 — Production smoke test
```powershell
# Once https://waggle-os.ai resolves to Vercel:
# 1. Browser: load https://waggle-os.ai — landing renders
# 2. curl Stripe webhook endpoint (should 400, not 404 or 5xx):
curl -X POST https://waggle-os.ai/api/webhooks/stripe -d '{}'
# Expected: 400 — endpoint reachable, just rejected for missing signature
# 3. Test Stripe webhook delivery FROM Stripe side:
# Stripe Dashboard → Developers → Webhooks → endpoint we_1TVt5qCNCrMQy1f7Zl5ujKSC
# → "Send test webhook" → checkout.session.completed event
# Look for 200 response in Stripe's recent deliveries panel.
```
### Step 7 — Update Day-0 ETA marker
After production smoke passes, Wave 3 / C2 (Stripe live smoke) can fire — that's the
real Pro Checkout test with a card 4242, watching webhook arrive + Clerk publicMetadata
update + tier flip in the UI.
---
## Env var checklist (the 13)
Order matches `apps/www/.env.local` line-by-line. Each must be in Vercel "Production"
environment before deploy.
| Variable | Notes |
|---|---|
| `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` | Clerk dashboard, "live" mode key (`pk_live_*` or `pk_test_*`) |
| `CLERK_SECRET_KEY` | Server-side Clerk auth. **Rotated 2026-05-12** ✓ |
| `NEXT_PUBLIC_CLERK_SIGN_IN_URL` | Default `/sign-in` |
| `NEXT_PUBLIC_CLERK_SIGN_UP_URL` | Default `/sign-up` |
| `NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL` | Where to send post-signin (e.g. `/`) |
| `NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL` | Where to send post-signup (e.g. `/`) |
| `CLERK_WEBHOOK_SECRET` | For Clerk → tier publicMetadata sync; set if using Clerk webhooks (else can defer) |
| `STRIPE_SECRET_KEY` | Live key, on Egzakta account (`CNCrMQy1f7`). **Marko declined rotation per session call** — left in chat log; consider rotating post-Day-0. |
| `STRIPE_WEBHOOK_SECRET` | `whsec_smwv4fInMEzJ3NSj3AwcNY2pz21eVrBu` (live endpoint created Wave 2 PG3 prep) |
| `STRIPE_PRICE_PRO_MONTHLY` | `price_1TVsaMCNCrMQy1f7KwImpxA4` (Pro $19/mo) |
| `STRIPE_PRICE_PRO_ANNUAL` | `price_1TVsaLCNCrMQy1f7YhQGDH2o` (Pro $190/yr) |
| `STRIPE_PRICE_TEAMS_MONTHLY` | `price_1TVsaLCNCrMQy1f7WUhtbZ88` (Teams $49/seat/mo) |
| `STRIPE_PRICE_TEAMS_ANNUAL` | `price_1TVsaLCNCrMQy1f75lmMHMTj` (Teams $490/seat/yr) |
**Note:** `.env.example` is missing 10 of these 13. Update `.env.example` to include
all key names (no values; just placeholders) so onboarding contributors know what's needed.
---
## Alternative paths (if Vercel doesn't fit)
### Alt-A: Self-host via Docker + Render/Fly/Railway
```dockerfile
# apps/www/Dockerfile (would need creating)
FROM node:20-alpine
WORKDIR /app
COPY apps/www/package*.json ./
RUN npm install
COPY apps/www/ ./
RUN npm run build
CMD ["npm", "start"]
EXPOSE 3000
```
Render/Fly: connect GitHub repo, point at `apps/www`, set 13 env vars, deploy.
Cost: $0-7/mo for hobby, scales with traffic.
### Alt-B: Cloudflare Pages with Functions
CF Pages supports Next.js with Functions for API routes. Slightly more setup than
Vercel, similar feature parity. Pro: cheaper at scale. Con: less mature Next.js
integration vs Vercel.
### Alt-C: Existing GitHub Pages workflow + Next.js static export
Rewrite `apps/www/next.config.mjs` with `output: 'export'`, drop API routes, move
the Stripe webhook handler elsewhere (Cloudflare Worker, AWS Lambda, your `cloud.waggle-os.ai`
sidecar). **Significant rework. NOT recommended for Day-0.**
---
## Day-0 readiness gate
Wave 3 / C2 (Stripe live smoke) **cannot fire** until:
- [ ] apps/www deployed to https://waggle-os.ai (whichever path)
- [ ] Production smoke confirms `/api/webhooks/stripe` responds (4xx for missing sig, not 5xx or 404)
- [ ] Stripe dashboard "Send test webhook" delivers 200 from production endpoint
- [ ] DNS propagation confirmed (`nslookup waggle-os.ai` resolves)
- [ ] SSL cert active (no browser warning)
Once those 5 checks pass, the Wave 3 C2 task in `02-PLAN.md` (real Pro Checkout
with test card 4242 → live webhook → Clerk publicMetadata.tier flip → tier
unlock in product) can fire as designed.
**Wall-clock estimate** for Marko to drive this: 30-60 min if Vercel auth + DNS
are already set up; +1-2h if DNS is at a registrar that takes hours to propagate.
---
## Disposition
Once you pick a deploy path:
- **Vercel (recommended):** follow Steps 1-7 above. Tell CC "deployment live at https://waggle-os.ai" and I fire Wave 3 / C2 from there.
- **Other:** confirm the path; CC adapts the smoke script accordingly.
---
*Drafted 2026-05-12 by CC. Wave 3 C2 task in `02-PLAN.md` resumes once deployment is live.*

View File

@@ -0,0 +1,398 @@
# Egzakta Legal Text Drafts — Day-0 Placeholder
**Status:** DRAFT — for Marko review before swap into `apps/www/app/(legal)/*/page.tsx`
**Disposition:** generic-but-plausible legal text; replaces lorem ipsum but keeps `noindex` on
**Long-term:** to be replaced by Egzakta legal counsel-reviewed text within T+30d
**Authoring stance:** pragmatic boilerplate covering actual data flows (Stripe + Clerk + PostHog + local-only memory). NOT a substitute for actual legal review.
---
## How to use these drafts
1. Read each block below.
2. For each, copy the text between `BEGIN BODY` and `END BODY` markers.
3. Replace the lorem-ipsum body in the corresponding `apps/www/app/(legal)/<route>/page.tsx`.
4. Keep the existing `robots: { index: false, follow: false }` in metadata.
5. Replace the `pendingNoteStyle` paragraph ("Content pending Egzakta Group legal review...") with the new opening paragraph from each draft below.
6. **OR**: tell CC "swap drafts into legal route group" and CC handles the file edits in one commit.
---
## Block 1 — Privacy Policy
**Route:** `apps/www/app/(legal)/privacy/page.tsx`
**Heading:** Privacy Policy
```
BEGIN BODY
**Effective date:** [Day-0 launch date]
**Last updated:** [Day-0 launch date]
Waggle OS is provided by Egzakta Group d.o.o. ("Egzakta", "we", "us"), a company
registered in the Republic of Serbia. This Privacy Policy explains what personal
data we collect, how we use it, and your rights.
### 1. Data we collect
- **Account data**: when you sign up via Clerk, we collect your email address,
display name, and optional profile information. Clerk Inc. processes this data
as an authentication sub-processor under their own privacy policy
(https://clerk.com/privacy).
- **Subscription data**: when you upgrade to Pro or Teams, Stripe Inc. processes
your payment information. We never see or store your card details — Stripe
returns only a customer ID and subscription status to us. Stripe's privacy
practices: https://stripe.com/privacy.
- **Product analytics**: with your opt-in (default off), we collect
anonymous usage events (onboarding completion, feature interactions) via
PostHog Inc. to improve the product. You can opt out at any time in Settings
→ Privacy. PostHog's privacy: https://posthog.com/privacy.
- **Local memory**: Waggle OS stores your conversations, memories, and harvested
content **locally on your device** in a SQLite database (`.waggle/` directory).
We do not transmit this data to our servers. If you choose to enable shared
team workspaces (Teams tier), encrypted memory bundles are stored on our
infrastructure for synchronization; you control which workspaces sync.
### 2. How we use your data
- Provide the Service (authentication, subscription management, support).
- Improve the Service (analytics where you've opted in).
- Comply with legal obligations (tax records, fraud prevention).
- We do not sell your personal data and do not use it for advertising.
### 3. Where your data lives
- Account + subscription data: Clerk + Stripe (US- and EU-region processors).
- Analytics (opt-in only): PostHog (US-region).
- Memory + conversations: your device. Optionally your Teams workspace bundle.
- Egzakta's own systems: minimal account + billing metadata in encrypted storage.
### 4. Your rights (GDPR + similar regimes)
You have the right to access, rectify, port, restrict, or delete your personal
data, and to object to processing. To exercise these rights, email
**privacy@egzakta.com**. We aim to respond within 30 days.
Local memory data: you can erase all locally-stored data at any time via
Settings → Privacy → Erase All Data. This is irreversible and does not require
contacting us.
### 5. Retention
- Account data: retained while your account is active + 90 days after deletion
for billing reconciliation.
- Subscription data: retained per Stripe's record-keeping requirements (typically
7 years for accounting).
- Analytics (opt-in only): retained 12 months.
- Local memory: retained until you delete it. Egzakta has no access.
### 6. Cookies and tracking
We use strictly-necessary cookies for authentication (Clerk session) and, with
your opt-in, analytics cookies (PostHog). See our [Cookie Policy](/cookies).
### 7. Changes to this policy
We may update this policy. Material changes will be announced via the product
and email. Continued use after a change means you accept the updated terms.
### 8. Contact
Egzakta Group d.o.o.
[Egzakta registered address — Marko to fill]
Email: **privacy@egzakta.com**
Data Protection Officer: **dpo@egzakta.com** (designated point of contact for
EU residents)
END BODY
```
---
## Block 2 — Terms of Service
**Route:** `apps/www/app/(legal)/terms/page.tsx`
**Heading:** Terms of Service
```
BEGIN BODY
**Effective date:** [Day-0 launch date]
**Last updated:** [Day-0 launch date]
These Terms of Service ("Terms") govern your use of Waggle OS (the "Service"),
provided by Egzakta Group d.o.o. ("Egzakta", "we", "us"). By creating an
account or installing the Waggle desktop application, you agree to these Terms.
### 1. The Service
Waggle OS is a desktop AI agent platform with persistent local memory. The
Service includes the Waggle desktop application, the cloud-hosted account
infrastructure, and optional team collaboration features.
### 2. Account
You must be at least 16 years old to use the Service. You are responsible for
maintaining the confidentiality of your account credentials. You agree to
provide accurate and current information when creating an account.
### 3. Acceptable use
You agree not to:
- Use the Service to violate any law or third-party rights.
- Attempt to reverse-engineer, modify, or interfere with the Service's
protections.
- Use the Service to generate content that infringes intellectual property,
defames individuals, or violates privacy.
- Submit data you do not have the right to submit (including confidential or
copyrighted third-party content).
- Use the Service to develop or train competing AI products.
### 4. Subscription and billing
Free tier: available at no cost, subject to documented usage limits.
Pro tier (USD 19/month): unlocks advanced features and unlimited memory.
Teams tier (USD 49/seat/month): adds shared workspaces and team collaboration.
Subscriptions are billed in advance through Stripe. Auto-renewal is on by
default; you can cancel at any time in account settings. Cancellations take
effect at the end of the current billing period. We do not refund partial
periods except where required by law.
### 5. Trial
A free 15-day trial of all features is available to new accounts. If you do
not subscribe at trial end, your account converts to the Free tier and trial
features become inaccessible. Trial data is retained per the Privacy Policy.
### 6. Intellectual property
You retain ownership of content you create, store, or process via the Service.
You grant Egzakta a limited license to host and process your content solely
to provide the Service.
Egzakta retains all rights in the Service, including source code,
documentation, and marketing materials. Open-source components are governed
by their respective licenses (notably Apache 2.0 for the hive-mind substrate).
### 7. Disclaimer of warranties
The Service is provided "as is" without warranties of any kind. We do not
warrant that the Service will be uninterrupted, error-free, or that AI-
generated outputs will be accurate, complete, or fit for any particular
purpose. You are responsible for verifying AI-generated content before
acting on it.
### 8. Limitation of liability
To the maximum extent permitted by law, Egzakta's total liability for any
claim arising from the Service is limited to the fees you paid Egzakta in
the 12 months preceding the claim. We are not liable for indirect, incidental,
or consequential damages.
### 9. Termination
Either party may terminate at any time. We may suspend or terminate your
account for material breach of these Terms. Upon termination, you may
export your data for 30 days; after that, we may delete your account data
in accordance with the Privacy Policy.
### 10. Governing law
These Terms are governed by the laws of the Republic of Serbia. Disputes
shall be resolved in the competent courts of Belgrade, Serbia, except where
mandatory consumer protection laws in your jurisdiction provide otherwise.
### 11. Changes to the Terms
We may update these Terms. Material changes will be announced at least 30
days in advance via the product and email. Continued use after the change
means you accept the updated Terms.
### 12. Contact
Egzakta Group d.o.o.
[Egzakta registered address — Marko to fill]
Email: **legal@egzakta.com**
END BODY
```
---
## Block 3 — Cookie Policy
**Route:** `apps/www/app/(legal)/cookies/page.tsx`
**Heading:** Cookie Policy
```
BEGIN BODY
**Effective date:** [Day-0 launch date]
**Last updated:** [Day-0 launch date]
This Cookie Policy explains how Waggle OS uses cookies and similar technologies
on its web properties (the marketing site at waggle-os.ai and any in-product
web views).
### 1. What cookies are
Cookies are small text files stored by your browser when you visit a website.
They allow the site to remember information about your visit (e.g., your
login state). Similar technologies include local storage, session storage,
and pixels.
### 2. Cookies we use
#### Strictly necessary
These cookies are required for the Service to function and cannot be disabled.
- **Clerk session cookies** — keep you logged in. Set by `clerk.waggle-os.ai`.
Cleared on logout.
- **CSRF protection** — prevents cross-site request forgery. Cleared on tab close.
#### Analytics (opt-in)
These cookies are loaded only if you opt in via Settings → Privacy → "Allow
anonymous product analytics." Default is opt-out.
- **PostHog `ph_*` cookies** — capture anonymous usage events for product
improvement. We do not use PostHog session recordings, do not capture form
inputs, and do not link analytics to your account email.
### 3. No advertising or social-media tracking
We do not use third-party advertising networks, social-media pixels (Meta,
TikTok, X), or cross-site tracking. We do not sell or share data with
advertisers.
### 4. Managing cookies
You can clear cookies through your browser settings. For granular control of
the analytics cookie, use Settings → Privacy in the Waggle product.
### 5. Changes to this policy
We may update this Cookie Policy. Material changes will be announced via
the product and email.
### 6. Contact
Email: **privacy@egzakta.com**
END BODY
```
---
## Block 4 — EU AI Act Statement
**Route:** `apps/www/app/(legal)/eu-ai-act/page.tsx`
**Heading:** EU AI Act Statement
```
BEGIN BODY
**Effective date:** [Day-0 launch date]
**Last updated:** [Day-0 launch date]
Egzakta Group d.o.o. ("we") publishes this statement to describe how Waggle OS
relates to Regulation (EU) 2024/1689 ("EU AI Act"). Our intent is to be a
transparent participant in the AI value chain, even as the EU AI Act's
provisions phase in through 2026.
### 1. Our role in the AI value chain
Waggle OS is a **deployer** (sometimes called "deployer of AI systems") under
EU AI Act terminology when end-users install the Waggle desktop application
and use it for their own purposes. Egzakta is **not** a provider of general-
purpose AI models (GPAI providers — defined in Article 51). Waggle OS routes
user requests to third-party AI providers (Anthropic, OpenAI, Mistral, and
others). The underlying GPAI providers fulfill the obligations applicable
to them.
### 2. Article 50 — transparency obligations
We comply with the transparency obligations of Article 50 by:
- **Clearly labeling AI-generated output**: the Waggle UI marks AI-generated
responses as such; the user always knows they are interacting with an AI
system.
- **Disclosing system prompts on request**: users can view the active persona's
system prompt in Settings → Personas → [persona] → System Prompt.
- **No deepfake generation**: Waggle OS does not generate synthetic images,
audio, or video that could be confused with authentic media.
### 3. Article 5 — prohibited practices
Waggle OS does not implement, encourage, or facilitate any prohibited AI
practice under Article 5, including:
- Subliminal manipulation or exploitation of vulnerabilities.
- Social scoring of natural persons.
- Real-time remote biometric identification in publicly accessible spaces.
- Emotion inference in workplace or education contexts.
### 4. High-risk AI systems
Waggle OS in its default consumer configuration is not a high-risk AI system
under Annex III. If users deploy Waggle OS for high-risk purposes (e.g.,
employment screening, credit scoring), the deployer is responsible for
fulfilling the obligations applicable to that high-risk system.
### 5. General-purpose AI (GPAI) considerations
Waggle OS depends on GPAI models provided by third parties. Those providers
publish their own EU AI Act compliance information:
- Anthropic: https://www.anthropic.com/eu-ai-act
- OpenAI: https://openai.com/eu-ai-act
- Mistral: https://mistral.ai/eu-ai-act
### 6. Risk management and documentation
Egzakta maintains internal documentation of:
- Models routed to and their provenance.
- Safety testing for the persona system + behavioral spec.
- The evolution subsystem (see arxiv paper, pending submission).
- User-facing transparency mechanisms.
We will publish a public AI risk management summary by Article 50's effective
date (2026-08-02 for Article 50 obligations).
### 7. Data protection alignment
Personal data handling is governed by our [Privacy Policy](/privacy) and the
GDPR. We do not train AI models on user data without explicit consent. Local
memory data never leaves the user's device unless they explicitly enable team
sharing (Teams tier).
### 8. Contact for data subject and EU AI Act inquiries
Email: **ai-compliance@egzakta.com**
Data Protection Officer: **dpo@egzakta.com**
Registered representative for EU AI Act purposes: [to be designated if/when
Egzakta has no Union establishment per Article 25].
END BODY
```
---
## Marko-side TODOs before swapping these in
1. **Confirm Egzakta registered address** for the Privacy + Terms contact blocks.
2. **Designate** `privacy@egzakta.com` + `legal@egzakta.com` + `dpo@egzakta.com` + `ai-compliance@egzakta.com` mailboxes (or alias them to a single forwarder).
3. **Set effective date** = your chosen Day-0 launch date (e.g., 2026-05-15).
4. **Ratify** the EU AI Act framing — specifically the "deployer not GPAI provider" classification. This is the standard read for an aggregator like Waggle but Egzakta legal counsel should sign off in T+30d.
5. **Decide** whether to keep `robots: noindex` on Day-0 (recommended for placeholder text) or remove once Egzakta legal review concludes.
---
## Disposition options
- **Option A (recommended for Day-0):** Tell CC "swap drafts into legal route group" and CC does the 4 file edits in one commit (`docs(legal): replace lorem ipsum with Day-0 placeholder text per egzakta-legal-text-drafts.md`). `noindex` stays on. Egzakta legal does proper review in T+30d.
- **Option B:** You hand these drafts to Egzakta legal counsel for review, they redline, CC swaps the final versions. T+5-15d.
- **Option C:** Ship as lorem ipsum + noindex placeholder for Day-0 launch. These drafts stay in `docs/launch/drafts/` for future swap. Cheapest path, weakest signal to any pilot user who clicks through.
---
*Drafted 2026-05-12 by CC for Marko ratification. Not a substitute for legal review.*