About Friday F.ai
Friday F.ai is an AI platform by Zylink Corp, a Nigerian enterprise-technology group headquartered in Port Harcourt, Rivers State. Friday is built for individuals, developers, and enterprises that want a single intelligent assistant which knows them, adapts to their industry, and acts on their connected apps — not just answers questions.
The whole system runs behind a Cloudflare Workers gateway that keeps every upstream API key server-side. Users authenticate with scoped fri_ keys; per-user connector tokens are encrypted at rest with AES-GCM keys derived per-user from a worker secret.
What's new in v4.3
Released June 2026 · a true in-chat code runner (run & preview the code Friday writes) · self-verifying answers · the upgraded Fade agent in VS Code that builds & fixes across your real codebase · the Max model · a "council of models" Pro · Imgen video studio · Studio & Design · Deep Research · Meeting Notetaker · WhatsApp Agent · Workspace Dashboard · real Workspace Chat · Direct answers.
🧠 New intelligence
- Max — the ultimate mode, and the 5th model alongside Default · Think · Browse · Pro. A larger council of every configured AI brain drafts in parallel, then a 2-round fuse → critique & verify pass returns one rigorous, decisive answer. Tapping Max plays a cinematic brown aura with the sub-engines orbiting a crowned "Max".
- Pro is now a council of models — your request fans out to every frontier/strong model you have a key for, runs in parallel, and a judge fuses them into one best answer (degrades gracefully to a single model).
- More free brains were added to the council. The more provider keys you configure, the smarter Pro and Max get.
🎬 Create
- Imgen — Friday's own free video studio. A brief becomes an AI scene script → an image per scene → real voiceover → motion + crossfades + a music bed → an intro title card and brand outro, all composed into one video. Full panel (orientation · length · voice · captions · music · experimental AI motion) and a saved-video gallery. Run
/imgenor open it from the sidebar. - Friday Studio — an image hub: generate (style/size/count), make variations, edit any image with words, with a persistent gallery and lightbox.
/studio. - Friday Design — posters & social graphics on a canvas: sizes, themes, headline/subtitle, an AI background, and an "Auto" button that writes the copy and picks a palette. Export PNG.
/design.
🔎 Get work done
- Deep Research —
/research <topic>plans focused searches, reads multiple sources, and writes a structured, cited report you can export to a Google Doc. - Meeting Notetaker —
/notesrecords your microphone or a shared browser tab, transcribes it live, then writes a summary + key decisions + action items. - WhatsApp Agent — connect your WhatsApp Business number and Friday answers your customers 24/7. A real inbound webhook generates and sends the reply, with per-contact memory.
- Workspace Dashboard —
/teamshows members & roles, who's online now, recent activity, and your shared-knowledge count.
💬 Chat & collaboration
- Direct answers — a sidebar toggle that makes Friday reply with only the exact answer, nothing attached (no preamble, follow-ups or sign-off).
- Workspace Chat is now real-time team chat — everyone in the workspace sees each message, with red unread badges, live online dots, and Friday joining only when you type
@friday. - Friday Live (voice) is conversational and personal — it greets you by name, remembers the call, and only searches the web when you actually ask a question.
- Source pills — web-grounded replies now show small, tappable source chips; replies also render image rows and clickable links.
💻 Build & code
- In-chat code runner — every runnable code block Friday writes now has a one-click ▶ Run (JavaScript · TypeScript · JSX · Python · SQL) or ▶ Preview (HTML/CSS/JS). Output, errors and return values appear right under the code; HTML renders live in a sandboxed frame. No more copy-paste to try it.
- Open-source powers — runnable JavaScript can
importany npm package straight from a CDN (e.g.import dayjs from 'https://esm.sh/dayjs'), and HTML previews can pull in any library. TypeScript & JSX are transpiled in the browser before running; separate HTML + CSS + JS blocks are stitched into one document for the preview. - Self-verifying answers — an optional sidebar toggle (Auto-verify code). When on, Friday runs the first code block it wrote, and if it errors, fixes it and re-runs before you ever see it — showing a "Verified — runs clean" or "Fixed & verified" chip.
- Fade in VS Code — an autonomous coding agent. Flip ⚡ Agent in the Friday panel and give it a task: it maps your real workspace, reads files, makes surgical edits (with an optional Apply/Skip diff), runs your tests & build in a real terminal, reads the editor's diagnostics after every change, delegates research to read-only sub-agents, and won't declare done while your changed files still have errors. Runs on the Max brain by default (tunable). Memory persists to
FADE.md. - Fade on the web also gained an Agent mode and a Design → Code button (turn a screenshot/mock-up into working HTML).
v3.3 — May 2026
Released May 2026 · 17 new modules · Megamind multi-brain router · Nigerian fintech · Daily briefs with push notifications · CLI + VS Code + Capacitor mobile shells.
🧠 Intelligence
- Genius mode — context aggregator (12 layers: profile, memory, calendar, gmail, slack, weather, etc.) + 5-brain ensemble + judge model. Toggle with
/genius autoso Friday only pays the cost on hard questions. - Megamind — multi-provider router that combines free brains from many AI brains. Key-pool rotation, automatic fallback, ensemble + self-consistency + speculative drafting.
- Curiosity — Friday asks ONE clarifying question instead of guessing on vague prompts (single biggest jump in perceived intelligence).
- Explain — every reply can show "▸ how I got this" — reasoning trace, sources, context layers, copy-prompt button.
- Fork — branch any conversation into 7 modes: alternative · steel-man · devil's advocate · child / expert / shorter / longer · custom.
- Realtime + Async — true SSE token streaming with mid-stream
/steer+/stop; fire-and-forget background jobs with push notifications.
🇳🇬 Nigerian fintech & identity
- Paystack · Flutterwave · Monnify — full payment rails.
/send 5000 to 0123456789@058 via paystack reason: rentactually moves money. - Airtime + Data —
/airtime 200 to 08031234567auto-detects MTN/Airtel/Glo/9mobile and routes via any connected provider. - BVN / NIN / Driver's licence verify — via VerifyMe.ng or YouVerify.co.
/bvn 22123456789returns matched identity with no raw data stored. - Naija news — RSS aggregator across 12 outlets (Punch, Premium Times, Daily Trust, Channels TV, Vanguard, Guardian, BusinessDay, Sahara Reporters, TheCable, ThisDay, Pulse, Nairametrics).
- Naija jobs — cross-source search (Jobberman, MyJobMag, NgCareers, Indeed NG, LinkedIn NG) with twin-voiced cover letters + Chrome-extension auto-apply.
📅 Daily briefs & push notifications
- 4 brief slots — Morning (08:00), Midday catch-up (11:00), Evening wrap-up (17:00), Night cap (23:00). Per-user timezone-aware scheduling.
- 5 voice tones — Warm · Executive · Motivational · Newscast · Nigerian Pidgin.
- Delivery — Web push, email (via your Gmail), or in-chat only.
- 13 notification templates — briefs, meeting reminders, urgent email, payment received, invoice overdue, goal check-in, pulse signal, job done, birthday nudge, inactivity nudge.
- Configurable from Settings → Daily Briefs.
🎤 Sensing & output
- Voice — wake-word ("Hey Friday"), continuous mode, 6 personality voices, barge-in.
- Vision — live camera or screen-share with continuous frame analysis.
- Screen Pilot — Friday watches your screen, narrates, suggests next steps, alerts on errors.
- Translate — live bilingual interpreter (mic in / voice out) with Yoruba / Igbo / Hausa / Pidgin cultural notes baked into the prompt.
- Receipt capture — snap a receipt → structured fields → filed into Sheets/Airtable/HubSpot/Notion/CSV.
- Canvas — infinite drag-drop workspace with auto-link + summarise.
- Deck + Video — generate pitch decks and short videos with images, narration, and PDF/MP4 export.
💻 Reach beyond the browser
- Local model — a compact model running on WebGPU in your browser. Works offline, zero cost.
- CLI —
npm i -g friday-cli→friday "explain B-trees"from any terminal. Streaming, code review, agent, image gen. - VS Code extension — chat, explain, refactor with diff, review file, generate from comment, fix diagnostic, commit message.
- Capacitor mobile shell — wraps the PWA for App Store + Play Store with native push, camera, biometrics, deep links.
- Desktop bridge — Chrome extension that lets Friday drive your real authenticated browser sessions.
- Twin — Friday studies your writing samples and drafts in your voice. Used by
/jobsfor cover letters. - Handoff — start a chat on phone, tap "send to laptop", desktop picks up live.
- Collab — multi-user shared sessions with role-based permissions (admin/contributor/viewer + Friday-as-member).
- Pulse — proactive context surfacing: watches Gmail/Slack/Calendar/GitHub/news/finance/weather and emits cards unprompted.
- Vault — encrypted personal vault. Friday can use secrets in flows but never echoes them.
- Import — bring your export history from other assistants in one drop.
🎨 UX
- Slash-command popup — type
/in chat and a categorised menu floats above the input. Arrow-key navigation, click-to-fill. - Live progress bubbles — long ops (genius, deck, video, model load, import) show a single bubble with a smooth animated bar, step pills, and ETA — no chat spam.
- Friendly tier labels — replies say "blazing fast · 240ms" instead of "cerebras/llama3.3-70b".
- Genius badge — floating pill bottom-right when Genius mode is active. One-tap cycle.
Earlier releases
v3.1 — May 2026
- Live connectors for Slack, Notion, GitHub, HubSpot, Trello, Spotify, Shopify, Stripe, Telegram.
- Full Google Workspace OAuth — Gmail, Calendar, Drive, Tasks.
- Bot Builder v2 — multi-bot library, themes, A/B prompts, hosted publishing at
/b/{slug}. - Fade v2 — CodeMirror 6, Mermaid, diff modal, snapshots, GitHub push via Git Tree API.
- Intelligence v3 — 22 industry personas, PII detector, conversation-loop detector, multi-intent commands.
- Compliance Sentinel + 4 new Apps Script generators (Slides, Drive, Calendar, Sites).
Features
/b/{slug}, real-time analytics.Products inside Friday
The main surface — chat.html. Multi-model AI, image generation, file uploads, voice input, integrations, connector actions ("post to #general…"), and intelligence-driven personalisation. Persisted to Firestore for signed-in users.
Live coding workspace at fade.html. CodeMirror editor with full syntax highlighting, debounced live preview iframe, inline Mermaid rendering, diff modal before applying AI edits, snapshot history with one-click rollback, 6 project templates, command palette (⌘K), GitHub push (atomic multi-file commits), embedded preview-console capturing iframe errors. Agent mode mind-maps the project to FADE.md, plans, builds and verifies against the live preview; Design → Code turns a screenshot into working HTML.
The Friday VS Code extension is a full pair-programmer and an autonomous agent in one panel. Chat (streaming, model picker incl. Max, your file/selection as context); or flip ⚡ Agent and it works your real codebase end-to-end: reads files, makes surgical edit_file patches (with an optional Apply/Skip diff), runs tests & build in a real terminal, reads diagnostics after every edit, fans out read-only sub-agents for research, and self-reviews — it won't finish while changed files still have errors. Runs on Max by default (set friday.agentModel to trade quality for speed).
bot-builder.html. Multi-bot library, 12+ industry templates, 4 theme presets, A/B prompt variants, URL knowledge-base scraping, capability toggles (voice / images / browse). One-click publish generates a per-bot fri_ key, encrypts settings, and hosts the bot at friday.zylink-corp.workers.dev/b/{slug}. Each deployed bot logs conversations back for real-time analytics with a composite health score.
auto.html. Visual canvas: triggers, AI nodes, HTTP requests, actions, conditions, loops, transforms, sub-workflows. Templates for AI Inbox, API Monitor, Sheets Report, WhatsApp Bot, Content Pipeline, Webhook Router, Error Retry. Environment variables stored locally; cloud-saved workflows on the roadmap.
developers.html. Generate scoped fri_ keys, route per-key model selection, attach system prompts, test the gateway live in a built-in chat, view per-key usage.
connector-dashboard.html. 30+ integrations browsable by category. Connect via OAuth (Google, Spotify, LinkedIn, Zoom) or paste tokens (Slack, Notion, GitHub, HubSpot, Trello, Shopify, Stripe, …). Test-connection button verifies credentials live. Sensitive fields encrypted at rest before write.
AI Models
Friday routes to the best model based on your request. Switch modes manually with the pill inside the chat input bar.
| Mode | Model | Best For | Speed |
|---|---|---|---|
| ⚡ Default | Friday Default | Everyday chat, questions, writing | ~1s |
| 🧠 Think | Friday Think | Maths, logic, complex reasoning. Surfaces a collapsible reasoning block. | ~5s |
| 🌐 Browse | Friday Browse + live search | Current events, news, prices, live data | ~4s |
| ⭐ Pro | Friday Pro — council of models | Hard questions, long-form writing, deep analysis. Fans out to every configured brain and fuses them into one best answer. | ~6s |
| 👑 Max | Friday Max — the ultimate mode | The most powerful setting: a larger council drafts in parallel, then a fuse → critique & verify pass returns one rigorous, decisive answer. Slower by design. | ~15s |
Pro and Max get smarter the more provider keys you configure — they call every available brain in parallel and fuse the results into one best answer.
Multi-turn conversation history
The worker now accepts a role-tagged history array on every request, so Friday holds the conversation across turns at the model level rather than reconstructing it from a flattened string. Capped at 20 turns × 8 K characters.
Auto-routing
In Default mode, Friday detects current-sounding questions (containing words like today, latest, 2026, news, price, weather) and switches to Browse mode transparently. Code questions are excluded from auto-switching. A ✨ Auto-switched to Browse badge appears when this happens.
Tavily RAG on Default
If a Tavily API key is configured, Default mode enriches every response with live web search results injected into a delimited <<<USER_QUERY>>> block so prompt-injection from search payloads is contained.
Memory & Intelligence
Friday builds a personal memory profile for every signed-in user that persists across all conversations and devices.
- Your name, preferred nickname, and pronouns
- Your industry, role, and language preference
- Your stated preferences — "I prefer concise replies", "I always work in NGN"
- Top topics you ask about (with co-occurrence graph)
- Facts you've shared across sessions (capped at 50)
- Recent sentiment trend — Friday adapts tone when you turn frustrated
Every 10 messages, Friday silently runs an extraction pass on the conversation to identify new facts. These are merged into your profile at users/{uid}/memory/profile. Memory is injected at the top of every future prompt. The intelligence layer also tracks domain scores, preferences, recent topics, and sentiment locally in localStorage.
Once a conversation exceeds 30 messages, Friday auto-generates a rolling 3–5 sentence summary and saves it. The summary is injected into the context window for every future message in that conversation.
Before sending, Friday's intelligence layer scans your prompt for emails, phone numbers (NG + international), credit cards, NIN, BVN, account numbers, AWS keys, Stripe keys, Friday keys, raw private keys, and labelled passwords — and can warn you (or auto-redact) before the message leaves the browser.
Friday notices when you're "going in circles" — three or more semantically similar questions in a row — and surfaces an option to try a different angle, switch model, or talk to a human.
Image Generation
Friday detects image requests in natural language and generates with Friday's image engine behind the worker. Style picker appears before render so you can choose Flux, Turbo, Realistic, Anime, Logo, 3D, or Dark Art.
How to trigger
"generate an image of…", "draw me a…", "create a picture of…", "paint a…", "illustrate…", "imagine…"
- Worker detects image prompt, returns
type: "image_request" - Browser shows the style picker. User picks a model.
- Browser sends
type: "image_proxy"to the worker - Worker validates Friday key, fetches the image provider server-side
- Worker streams image bytes back to browser
- Browser uploads to imgbb for a permanent shareable URL
- Chat renders image card with caption, expand, and download buttons
Rate-limit responses (429/503/500) include a retry: true signal with a recommended wait; the browser retries up to 5 times cycling through turbo → flux → any-dark before giving up. The retry loop runs client-side so Cloudflare's 30s CPU limit is never approached.
Industry Personas
Friday adapts its behaviour and language to your industry. Set yours in Settings → Personalise Friday. The intelligence layer also detects domain mid-conversation and injects extra context automatically.
Each persona carries domain jargon, regional context (Nigerian where applicable), and behaviour rules — Mental Health, for example, never diagnoses and always points to qualified professionals + crisis hotlines.
Connectors
30+ integrations browsable in connector-dashboard.html. The 9 live ones below execute real actions on your apps from chat — the rest store credentials and are pending adapter implementation. All sensitive fields are AES-GCM encrypted at rest with per-user keys derived from a worker secret.
Live — chat-driven actions
Apps Script integrations (pull-based)
Drop a generated Apps Script into Sheets, Gmail, Docs, Forms, Slides, Drive, Calendar, or Sites — and Friday adds a custom menu / on-edit triggers that call the worker on demand. Generated by generateAppsScript(type, …) in friday-intelligence.js.
OAuth + dashboard-only (no chat actions yet)
The dashboard supports 20+ more integrations — Apple Music, Instagram, X/Twitter, LinkedIn, TikTok, Discord, Airtable, Asana, Zoom, Dropbox, Mailchimp, Microsoft Teams, Jira, Paystack, Flutterwave, WhatsApp, Webhook, Zapier, Make, Zino (internal). Credentials are stored encrypted; adapter implementations land case-by-case.
Custom outbound webhook
Configure a webhook URL in the dashboard and Friday will POST every chat response to it in real time:
Google Workspace
Single click — sign in with Google and Friday gets access to Gmail, Calendar, Drive, and Tasks. Tokens are stored encrypted; refresh happens automatically. Configure the operator's OAuth client via GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET on the worker.
| Capability | Sample command in chat |
|---|---|
| 📧 Gmail search | "search my gmail for unread from john" |
| 📧 Compose-and-confirm | "draft email to alice@x.com about the proposal" → preview card → Send |
| 📅 Calendar today/tomorrow | "what's on my calendar tomorrow?" |
| 📅 Multi-attendee slot finder | "find a 1h slot with alice@x.com and bob@y.com next week" — books with Meet link |
| 📁 Drive search | "find my drive file about Q3 budget" |
| ✅ Tasks list | "show my tasks" |
Higher-level automations
| Automation | What it does |
|---|---|
| ☀️ Morning Brief | Calendar + top 8 unread + open tasks → one-screen synthesis. Optional cron + email/Telegram delivery. |
| 🎯 Meeting Agent | Pulls last emails per attendee + related Drive docs → pre-meeting brief. |
| 👤 CRM Lite | Scans inbox for new leads, dedupes against HubSpot, extracts contact info. |
| 📚 Drive Knowledge Base | "ask my drive about Q4 strategy" → Drive search + LLM synthesis with citations. |
| 🛡️ Compliance Check | Regex + LLM scan for sensitive data before content leaves your control. |
Dashboard
The Dashboard gives real-time visibility into all API key activity, plus per-bot analytics for any bots you've published with the Bot Builder.
Usage is logged via ctx.waitUntil to usage_logs in Firestore — fire-and-forget but guaranteed to complete. Each log records key, model, industry, timestamp, prompt length, reply length, and whether the response was grounded.
API & Developer Keys
Generate scoped fri_ keys in developers.html. Each key stores a name, system prompt, and model routing preference in Firestore and is validated on every gateway request.
Gateway endpoint
Response format
Health check
Image generation
Other endpoints
connector_save·connector_action·connector_call·connector_test·connector_disconnect— encrypted credential storage + live execution against connected appsoauth_exchange— server-side code-for-token exchange for Spotify and Google (refresh-token aware)morning_brief·meeting_agent·crm_lite_run·drive_kb·compliance_check— Google Workspace automationsbot_save·bot_log·bot_stats·bot_list·bot_delete·bot_telegram_deploy— Bot Builder hosting + telemetrykb_url_fetch— server-side URL scrape for the Bot Builder knowledge baseGET /b/{slug}— public bot serving (rendered HTML)POST /webhook/telegram/{prefix}— Telegram bot inbound webhook
v3.3 additions
POST /stream/chat— Server-Sent Events token streaming with mid-streamsteerPOST /async/submit · /async/status · /async/list · /async/cancel— fire-and-forget background jobsPOST /push/subscribe · /push/notify— Web Push fan-outtype:'vision'— multimodal image+texttype:'megamind'— multi-provider router with key-pool rotation (many AI brains)type:'fact_check'— claim verification with source cachingtype:'fx_rate'— currency conversion with 6h cachetype:'naija_news'— RSS aggregator + AI digest across 12 Nigerian outletstype:'naija_jobs'— cross-source job scraping + cover-letter generation- Daily-brief
scheduled()— fires morning/midday/evening/night briefs per user-configured local time - 5 new connector adapters: Paystack · Flutterwave · Monnify · Airtime (routed via any connected payment provider) · Identity (VerifyMe / YouVerify for BVN/NIN/passport/driver's licence)
v4.2 additions
model:'pro'&model:'max'— the council/ensemble routes that fan out to every configured provider and fuse the answerstype:'deep_research'— plan sub-queries → multi-source search → one cited reporttype:'transcribe'— audio chunk → text (powers the Meeting Notetaker)type:'video_render' · 'video_status'— studio-quality cloud video (json2video), submit + polltype:'tts'— free text-to-speech (Imgen narration)type:'imgen_animate'— best-effort free text-to-video clips for Imgentype:'whatsapp_config' · 'whatsapp_get'+GET/POST /webhook/whatsapp— the WhatsApp business agent- Web-grounded replies now return a
sourcesarray (rendered as tappable source pills in the app) - Per-request
intelligencedirective powers Direct answers mode and the personalised Friday Live voice
v5 additions — Friday Agent + Clid Cloud native auth
type:'agent'&POST /stream/agent— the autonomous, tool-calling Friday Agent (a Z.ai-GLM-style loop: plan → call tools → observe results → continue up to 8 turns). Tools:web_search,fetch_url,calculator,code_exec,image_gen,generate_api_key,translate,send_email,list_calendar_events.type:'agent_key_gen' · 'agent_key_list' · 'agent_key_revoke'— mint, list, and revokefri_agent_API keys. Each key grants access to the Friday Agent API and lasts 1 year by default.- Clid Cloud native auth — Friday accepts
clidkey_...API keys,clid_live_...keys, Clid session JWTs, AND raw Clid worker session tokens (base64url 30-64 chars) directly. The worker callsGET /api/cloud/meon the Clid Cloud worker to validate, then derives a stable per-accountuid. - Clid Storage mirror — when authenticated via Clid, per-user data (minted agent keys, audit logs) is mirrored to Clid Storage instead of Firestore.
- Full API reference — see the new Friday Agent API Reference section below for complete endpoint specs, all 9 tools with request/response examples, auth methods, code samples in curl / JavaScript / Python, and the Clid Cloud Vortex Fade integration.
Friday Agent — Autonomous Tool-Calling
The Friday Agent is an autonomous, tool-using AI agent — exactly like Z.ai GLM, Claude Code, or ChatGPT with tools. It plans, calls tools, observes results, then continues until your request is fully satisfied. Up to 8 reasoning turns per request, with a 14,000-character tool-result budget.
Try it from the Clid Cloud dashboard
Sign in at cloud-6pp.pages.dev/dashboard.html#/vortex-fade, pick a project with the Vortex Fade module enabled, and start chatting. The agent streams live tokens, tool-call cards, and tool results as it works.
Gateway endpoints
Streaming (SSE)
Mint your own API key
Send any of these prompts to the agent and it will call its generate_api_key tool, returning a fresh fri_agent_... key in the chat:
- "please generate an api key for me"
- "generate an api key"
- "mint an api key labelled dev-laptop"
- "i need an api key"
Or call the type directly:
List & revoke keys
Available tools
web_search(query, max_results=5)— live web search via Tavilyfetch_url(url)— fetch + clean a web page (max ~8k chars)calculator(expression)— safe math eval (sqrt, sin, cos, log, …)code_exec(language='javascript', code)— sandboxed JS eval (5s timeout, no fs/network)image_gen(prompt, width=1024, height=1024, style='realistic')— Pollinations image gen (realistic / photo / art / anime / logo / cinematic / 3d / turbo)generate_api_key(label='')— mint afri_agent_key for the callertranslate(text, target_lang)— translate into any languagesend_email(to, subject, body)— send via connected Gmaillist_calendar_events(days=7)— list upcoming Google Calendar events
Vortex Fade — on Clid Cloud
The Friday Agent is also reachable through the Clid Cloud worker, which adds project-scoped access control + audit logging. These endpoints accept a Clid Cloud API key (clidkey_...) or Clid session JWT:
The Vortex Fade module must be enabled on the target project (it's listed in enabled_modules). Enable it from Clid Cloud → Modules → Vortex Fade → Enable.
v6 — Chat History via Clid Storage + Service Binding
Friday chat history now lives in Clid Storage for Clid-authenticated users. Legacy fri_ keys keep using the Firebase SDK directly — the migration is opt-in: a user switches to a Clid key when they're ready, and from that point their chat history lives on their Clid Cloud account.
v6 additions
- Per-user chat history routes —
/api/conversations*+/api/memory/profile. Backed by Clid Storage underfriday/<uid>/conversations.json,friday/<uid>/conv/<convId>.json,friday/<uid>/memory/profile.json. - Clid Cloud service binding — the Friday worker now calls the cloud worker via
env.CLOUD.fetch()(a Cloudflare service binding) instead offetch('https://cloud.zylink-corp.workers.dev/...'). This bypasses Cloudflare error 1042 ("Worker tried to call itself") which occurs when two workers on the same account call each other via HTTP. The service binding routes through Cloudflare's internal service mesh — no HTTP round-trip, sub-ms latency. - Dual key-prefix support — both
clidkey_...(OAuth API keys from Clid Auth) andclid_live_...(cloud-internal API keys fromPOST /api/cloud/keys) are accepted. Both validate againstGET /api/cloud/meon the cloud worker. - CORS fix —
Access-Control-Allow-Headersnow includesAuthorizationso browser-based clients (the migration tool, the chat UI) can sendAuthorization: Bearer clid_live_...without "Failed to fetch" errors.
Chat history routes
All routes require Authorization: Bearer <fridayKey> where fridayKey is a clidkey_... or clid_live_... key. The worker resolves your uid via validateFridayKey → validateClidToken → GET /api/cloud/me.
Clid auth migration guide
If you're an existing Friday user with chat history in Firebase, you can migrate it to Clid Storage in one click:
- Sign in to Friday chat (Firebase auth)
- Sign in to Clid Cloud dashboard (Clid auth)
- Mint a Clid API key at Clid Cloud → API Keys with
storage:read+storage:writescopes - Open the migration tool — it auto-detects your Clid key from localStorage
- Click "Dry run" to preview, then "Start migration"
After migration, set localStorage.setItem('friday_pub_key', 'clid_live_...') on the Friday chat page (or just visit the dashboard and it'll be set automatically). Your chat history will load from Clid Storage instead of Firebase.
Service binding config (for self-hosters)
If you're deploying Friday + Clid Cloud on your own Cloudflare account, add the service binding to the Friday worker's wrangler.toml:
The Friday worker's validateClidToken and clidStorageGet/Set/Delete functions prefer env.CLOUD.fetch() when available, falling back to fetch() if the binding isn't set. Without the binding, you'll see Cloudflare error 1042 on every cross-worker call.
Friday Agent API Reference
The Friday Agent is an autonomous, tool-using AI agent — exactly like Z.ai GLM, Claude Code, or ChatGPT with tools. It plans, calls tools, observes results, then continues until your request is fully satisfied. Up to 8 reasoning turns per request, with a 14,000-character tool-result budget per turn. This section documents every endpoint, every tool, every auth method, and ships copy-paste-ready code samples in curl, JavaScript, and Python.
Contents
- Authentication — 4 key formats accepted
- POST / — non-streaming chat
- POST /stream/agent — SSE streaming
- POST / — mint a fri_agent_ key (type: agent_key_gen)
- POST / — list your agent keys (type: agent_key_list)
- POST / — revoke an agent key (type: agent_key_revoke)
- All 9 tools — full reference
- SSE event reference
- Clid Cloud — Vortex Fade integration
- Code samples (curl / JavaScript / Python)
- Error reference
- Rate limits + quotas
Authentication — 4 key formats
Every endpoint requires a fridayKey in the request body. The worker auto-detects the key format and routes through the correct validator. All four formats resolve to the same stable per-account uid, so a user's fri_agent_ keys are grouped together regardless of which auth method they used to mint them.
| Format | Prefix | Source | Validator |
|---|---|---|---|
| Legacy Friday key | fri_... | Firestore + KEY_REGISTRY KV | Firebase lookup → KEY_REGISTRY |
| Clid Cloud OAuth key | clidkey_... | Clid Auth Worker (api_keys table) | GET /api/cloud/me |
| Clid Cloud internal key | clid_live_... / clid_test_... | Cloud dashboard API Keys page | GET /api/cloud/me |
| Clid session token | eyJ... (JWT) or raw base64url (30-64 chars) | Clid Auth Worker login flow | GET /api/cloud/me |
| Friday Agent key | fri_agent_... | Minted via type:'agent_key_gen' | KEY_REGISTRY KV only |
Recommendation: if you're building a backend integration, mint a fri_agent_ key (1-year expiry) and use it. If you're building a browser app on top of Clid, pass the user's clid_session from localStorage — the worker validates it transparently.
POST / — non-streaming chat
Sends a prompt to the Friday Agent. Returns the full agent trace after all turns complete. Up to 8 reasoning turns; ~30s timeout for the full loop. For long-running tasks (web search × 5, code execution), use the streaming endpoint instead.
Body fields:
type— must be"agent"fridayKey— any of the 5 key formatsprompt— the user's request (max 12,000 chars)history— optional array of prior{role, content}turns; the worker prepends these to the system contextuid— optional; if omitted, the worker derives it from the key
POST /stream/agent — SSE streaming
Same body as the non-streaming endpoint, but returns a text/event-stream response. Tokens, tool calls, and tool results are emitted as they happen — ideal for live UIs. The stream stays open until the agent's last turn completes or an error occurs.
SSE event reference
| Event | Data shape | When |
|---|---|---|
meta | { agent: true, max_turns: 8 } | First event — agent boot |
token | { t: "Let me " } | Each token of the agent's text reply |
message | { text: "Let me search the web for the latest pricing.", turn: 0 } | Full text for one reasoning turn |
tool_call | { name: "web_search", args: { query: "…" }, turn: 0 } | Agent invoked a tool |
tool_result | { name: "web_search", result: { … }, turn: 0 } | Tool returned its result |
done | { turns: 2 } | Agent finished — stream closes |
error | { message: "…", code: "TOOL_FAILED" } | Recoverable error — agent may continue |
fatal | { message: "INVALID_KEY" } | Unrecoverable — stream closes immediately |
Client-side tip: accumulate token events into a single text buffer per turn; when a message event arrives, that buffer is the final text for that turn. Render tool_call + tool_result as paired cards in your UI for transparency.
Mint a fri_agent_ key — type: agent_key_gen
Mints a new fri_agent_... key tied to the caller's identity. The key grants the same access as the parent key — it can call type:'agent', /stream/agent, and the chat-history routes. Expires in 1 year by default. The key is stored in KEY_REGISTRY KV (authoritative) and mirrored to Firestore or Clid Storage for portability.
Natural-language minting: you can also mint a key by asking the agent in chat — "please generate an api key for me" or "mint an api key labelled dev-laptop". The agent calls its generate_api_key tool and the new key appears in the chat reply.
List your agent keys — type: agent_key_list
Returns every non-expired agent key minted by the caller. Revoked keys are included with revoked: true for audit purposes. Each entry shows the masked key (first 14 chars), the full key (only if you stored it — the worker doesn't return the full key for already-minted keys), the label, mint time, and expiry.
Revoke an agent key — type: agent_key_revoke
Immediately revokes the specified fri_agent_ key. The KV entry is deleted, so subsequent requests using that key return 401 INVALID_KEY. Mirror entries in Firestore / Clid Storage are marked revoked (not deleted) for audit.
All 9 tools — full reference
The Friday Agent has access to 9 tools. The model picks which tool to call based on the prompt; you never invoke tools directly. Each tool's result is capped at 14,000 characters per turn to keep the agent's context window manageable.
Live web search via Tavily. Returns an answer string (Tavily's AI summary) plus a results array of { title, url, content } objects. Used for "what's the latest X", "find me a Y", current events, pricing, docs, etc.
Fetches a URL, extracts the main readable content (Readability-style), and returns up to 8,000 characters of cleaned text. Used for "read this page and tell me…", "summarize this article", and as a follow-up to web_search when the agent wants the full text of a result.
Safe math expression evaluator. Supports +, -, *, /, %, ^ (power), sqrt(), sin(), cos(), tan(), log(), ln(), pi, e, parentheses, and variable assignment. No import, no eval, no DOM access — purely mathematical. Used for any numerical computation rather than asking the model to "guess" the answer.
Sandboxed JavaScript execution. 5-second timeout, no filesystem access, no network access, no require/import. Returns stdout (from console.log), the result of the last expression, and any thrown error. Used for string manipulation, data transformation, parsing JSON, generating code samples, etc.
Generates an image via Pollinations AI. The result includes a image_url (HTTP URL) and the agent embeds it in its chat reply as  markdown. Supported styles: realistic, photo, art, anime, logo, cinematic, 3d, turbo. The Friday chat UI renders the image inline; programmatic callers can fetch the URL directly.
Mints a new fri_agent_ key for the calling user. Same effect as calling type:'agent_key_gen' directly, but the agent invokes this tool when the user asks "please generate an api key for me" in chat. The new key is returned in the tool result and also surfaced in the agent's chat reply with a copy button in the Friday UI.
Translates text (max 3,000 chars) into target_lang using the Pro ensemble. target_lang accepts full names ("Yoruba", "French", "Japanese") or ISO codes ("yo", "fr", "ja"). Returns the translation verbatim — no commentary, no pronunciation guide.
Sends an email via the caller's connected Gmail account (OAuth). Requires the user to have connected Gmail via Google Auth. Returns the message ID on success. The "to" address can be a comma-separated list for multiple recipients.
Lists upcoming Google Calendar events for the next days days (max 60). Requires connected Gmail. Returns each event's summary, start/end times, location (if any), and attendees.
Clid Cloud — Vortex Fade integration
The Friday Agent is also reachable through the Clid Cloud worker, which adds project-scoped access control, audit logging, and per-project key minting. These endpoints accept a Clid Cloud API key (clidkey_... or clid_live_...) or Clid session JWT. The target project must have the vortex-fade module enabled.
How it works under the hood: when you call the Cloud worker's /api/cloud/vortex/fade/agent endpoint, the Cloud worker:
- Authenticates your Clid key via
authenticate() - Looks up the project, verifies it belongs to your account and has the
vortex-fademodule enabled - Calls
getProjectApiKey()which either fetches a cachedclid_live_key from KV (1-hour TTL) or mints a fresh one for the project - Uses the
FRIDAYservice binding to callPOST https://friday.local/with{ type: 'agent', fridayKey: <project_key>, prompt, history } - Streams the SSE response back to the client transparently
- Audits the invocation on the project's audit log
Code samples
curl — non-streaming
curl — streaming (SSE)
JavaScript — browser
JavaScript — Node.js (with fri_agent_ key minting)
Python — requests
Python — Clid Cloud Vortex Fade (project-scoped)
Error reference
| HTTP | errorCode | Cause / fix |
|---|---|---|
| 400 | MISSING_KEY | No fridayKey in body. Add it. |
| 401 | INVALID_KEY | Key was rejected by every validator. Check spelling, expiry, or revoke status. |
| 401 | Clid auth 401 | Clid Cloud rejected the token. Re-mint via the dashboard. |
| 500 | UPSTREAM_ERROR | The model provider (Groq/Gemini/etc.) returned an error. The worker sanitizes the message — never exposes API keys. Retry with backoff. |
| 200 | ok:false, available:false, error:"Cloud video render not configured" | type:'video_render' requires JSON2VIDEO_API_KEY worker secret. Falls back to browser renderer. |
| 200 | ok:false, available:false, error:"Free video models are unavailable" | type:'imgen_animate' uses free HuggingFace Spaces — they go down sometimes. Try again later. |
| 200 | ok:false, error:"KV write failed" | Cloudflare KV transient error during key minting. Retry. |
| 200 | ok:false, error:"no identity — cannot mint key" | The fridayKey was valid but didn't resolve to a uid. Use a key with a known identity (fri_ or clid_*). |
| 403 | module_not_enabled | Clid Cloud only — the project doesn't have the vortex-fade module enabled. Enable it from the dashboard. |
| 403 | cross_project_forbidden | Clid Cloud only — the API key is project-scoped but tried to access another project's resources. |
| 429 | RATE_LIMITED | Too many requests. The worker enforces per-key rate limits; back off exponentially. |
Rate limits + quotas
- Per-key rate limit: 60 requests/minute, sliding window. Burst of 10 allowed.
- Per-key daily quota: 1,000 agent requests/day on the free tier. Friday Pro subscribers get 10,000/day. Admin emails are unlimited.
- Per-turn tool budget: 14,000 characters per tool result. Truncated results include a
truncated: trueflag. - Max turns per request: 8. The agent stops early if it produces a final answer before then.
- Concurrent streams: 3 per key. Additional streams return
429withRetry-After. - Image gen: 50 images/day per key. Pollinations enforces its own rate limit on top.
- Video render: bounded by your
json2videoAPI key quota — currently ~595 seconds of video output remaining on the worker's key.
Try it
Sign in at cloud-6pp.pages.dev/dashboard.html#/vortex-fade, pick a project with the Vortex Fade module enabled, and chat with the agent. Type "please generate an api key for me" to mint a fri_agent_ key right from chat — then use it in any of the code samples above.
Daily Briefs & Notifications
Friday can send up to four push notifications a day, each tied to a different "moment":
- ☀️ Morning brief (default 08:00) — calendar, top emails, Nigerian headlines, weather, one focus item
- ☕ Midday catch-up (11:00) — what changed since morning: new Slack mentions, new emails, pulse signals
- 🌇 Evening wrap-up (17:00) — what got done, what's open, tomorrow's first meeting, journal prompt
- 🌙 Night cap (23:00) — tomorrow's first meeting, weather, your three priorities
Each is independently enabled and time-shifted. Configure them at Settings → Daily Briefs.
- Warm — friendly assistant voice, uses your nickname
- Executive — terse, headlines only, no fluff
- Motivational — high-energy coach voice
- Newscast — third-person, crisp, factual
- Nigerian Pidgin — natural and lively ("How far this morning! Your day dey load…")
- Push notification — best for phone (after PWA install + push permission)
- Email — drafted in your connected Gmail account, addressed to yourself
- Both
- Chat-only — appears in your Friday inbox but doesn't push
Friday picks the right template per situation. All shipped in friday-templates.js:
morning_brief · midday_catchup · evening_wrap · night_cap— the 4 daily slotsmeeting_reminder— N minutes before each calendar eventurgent_email— when Pulse flags an email as urgent (with "Draft reply" action)payment_received— Paystack / Flutterwave / Monnify webhookinvoice_overdue— outstanding invoice past duegoal_check_in— daily nudge from friday-coachpulse_signal— generic Pulse-surfaced signal (custom actions per signal)job_done— async job completion ("✓ Done — Research X")birthday_nudge— from your Google Contactsinactivity_nudge— when you haven't opened Friday in N days
- Install Friday as a PWA (see Widget section below) — push only works on installed apps.
- Open Settings → Daily Briefs & Notifications
- Click Enable next to "Push notifications" — browser will ask permission
- Toggle the briefs you want; pick your local times; choose tone + delivery
- Save. Friday's scheduler runs every 15 minutes and fires briefs that fall within ±7 minutes of your configured local time. Idempotent — each brief fires at most once per day.
Widget & install
- Open
https://friday.zylinkcorp.com.ng/chat.htmlin Safari - Tap the Share button at the bottom (square with up-arrow)
- Scroll down → Add to Home Screen
- Tap Add. Friday icon appears on your home screen.
- Open it once to register the service worker — push notifications now work (iOS 16.4+)
True home-screen widgets (iOS 17 lock-screen-style widgets) require the Capacitor-wrapped native app from the App Store. The Add to Home Screen install gives you the full-screen app with all features.
- Open
https://friday.zylinkcorp.com.ng/chat.htmlin Chrome - Menu (⋮) → Install app (or "Add to Home screen")
- Confirm. Friday lands in your app drawer with the proper icon.
- Long-press the icon — you'll see the manifest shortcuts: Chat · Genius · Voice · Vision · Canvas · Pulse · Fade · Auto · Dev
- Share from any app → Friday appears in the share sheet
- Open chat.html in Chrome / Edge / Brave
- Address bar shows an install icon (⊕) on the right — click it
- Friday gets its own dock/start-menu entry and a clean standalone window
- Right-click the Friday icon in the dock → see the shortcut menu
The PWA exposes 9 shortcuts visible from the home-screen long-press / right-click menu:
| Chat | Jump straight into chat |
| 🧞 Genius | Auto-engages 5-brain consensus for hard questions |
| 🎤 Voice | Wake-word voice mode — say "hey Friday" |
| 📷 Vision | Live camera or screen-share intelligence |
| 🗂 Canvas | Infinite drag-drop workspace |
| 🔔 Pulse | Proactive context surfacing |
| ⚡ Fade | Live coding environment |
| 🤖 Automate | Workflows + triggers |
| Dev | API keys + gateway |
Once Friday is installed as a PWA:
- Android: any app → Share → Friday appears in the sheet → choose Friday → the shared content arrives as a chat bubble with "what would you like me to do?" follow-up
- iOS 17+: same flow via Share sheet
- Supported content types: text, URLs, images, PDFs, plain text files, CSV, JSON, Office documents
For App Store / Play Store distribution + true iOS lock-screen widgets, use the Capacitor mobile shell:
cd friday-mobilenpm installnpx cap add ios(Mac + Xcode) ornpx cap add android(Android Studio)npx cap open ios/open android— runs in simulator or device
See friday-mobile/README.md for the full publish-to-store walkthrough.
Security
All sensitive connector fields (access tokens, secrets, bot tokens, refresh tokens) are encrypted with AES-GCM before being written to Firestore. Per-user keys are derived with HKDF-SHA256 from a worker secret + the user's UID, so each user's credentials are independently protected.
Token exchange for Google and Spotify happens entirely server-side via the worker's oauth_exchange endpoint. Client secrets never touch the user's browser persistently. Refresh tokens are rotated automatically when expired.
All upstream provider keys live as Cloudflare Worker secrets. The browser never sees them — every model call is routed through the gateway with a scoped fri_ key.
Optional compliance_check endpoint scans content for PII / secrets / contract terms before they leave your control. Regex catches credit cards, SSNs, AWS keys, IBANs, private keys, Friday/Stripe keys; deep mode adds an LLM pass for contextual risks like trade secrets and confidential business info.
Upstream error messages are scrubbed of key= / token= fragments and capped before reaching the client, so a provider 401 never leaks a secret URL.
The worker honours an optional ALLOWED_ORIGINS environment variable to restrict CORS — set it to your production domain(s) to keep leaked keys from being usable from arbitrary origins.
Installing Friday as an App
Friday is a full Progressive Web App — installable on Android, iOS, and desktop.
An Install banner slides up from the bottom of the chat page. Tap Install → Friday is added to your home screen and opens full-screen.
Tap the Share button → Add to Home Screen.
Click the install icon in the address bar, or browser menu → Install Friday F.ai.
The service worker (sw.js) caches the app shell with a network-first strategy for HTML/JS (so updates land immediately) and a cache-first strategy for images/fonts. Push notifications are wired up; background sync ready for offline message drafts (rolling out).
Pricing
Full access to chat, all 4 AI modes, image generation, memory, Fade, Bot Builder, Zino, Apps Script integrations, and PWA install. Up to 3 API keys. Pro mode limited to 10 calls/day.
Unlimited Pro mode, full Google Workspace automations (Morning Brief, Meeting Agent, CRM Lite, Drive KB), priority queue, larger memory and history windows, all 9 live connectors with no per-day caps.
Custom deployments for oil companies, hospitals, law firms, agencies, and large teams. Includes dedicated worker instances, custom industry personas, team key management, SSO, audit logs, SLA, and onboarding. Contact admin@zylinkcorp.com.ng.
Privacy Policy
Last updated: May 2026.
What we collect. When you create an account: name, email, conversation history, and memory profile in Firebase Firestore. API usage logs (key, model, timestamp, prompt/reply length, grounding flag) in usage_logs. Bot conversations for bots you've published in bot_logs/{slug}/events.
Connector credentials. Tokens you supply for Slack, Notion, GitHub, HubSpot, Trello, Spotify, Shopify, Stripe, Google Workspace, Telegram, etc. are stored AES-GCM-encrypted at rest using a per-user key derived from a worker secret + your Firebase UID. The worker decrypts them only at the moment of executing an action you initiated.
Memory data. The memory system extracts facts and preferences from your conversations to personalise Friday. Stored under your account in Firestore; used only to improve your experience. You can clear it any time with the "clear my memory" command or request full deletion.
How we use it. Conversation history powers your own chat history and context injection. Usage logs power your Dashboard. Bot logs power your bot's analytics. We do not sell, share, or use your data for advertising.
Guest usage. Without signing in, nothing is persisted — everything is in-memory and cleared on refresh.
Third parties. Prompts are processed by Google (Gemini), Groq, and optionally Tavily. Images generated by Pollinations and uploaded to imgbb. Google Workspace actions hit Google APIs with your OAuth token. Please review their respective privacy policies. We send only prompt text + scoped tokens — no extra identifying information.
PII Detector. Friday's client-side intelligence layer warns you before sending content that contains common PII or secrets (emails, phone numbers, credit cards, NIN, BVN, API keys, private keys). You choose whether to proceed or redact.
Data deletion. Self-serve memory clear is available; full account deletion: contact admin@zylinkcorp.com.ng.
Terms of Service
Last updated: May 2026.
By using Friday F.ai, you agree to these terms. Friday F.ai is a product of Zylink Corp Group of Companies.
Acceptable use. You may use Friday for lawful purposes only. You must not: generate harmful, illegal, or misleading content; circumvent key validation or rate limits; scrape or harvest data at scale; reverse-engineer the gateway architecture; or use connectors to perform actions you do not have authority to perform in the connected accounts.
API keys. You are responsible for keeping your fri_ keys secure. Do not commit keys to public repositories. Zylink Corp reserves the right to revoke keys found in violation of these terms.
Connectors. You authorise Friday to act on the connected accounts you've linked. Connector credentials are stored encrypted; you are responsible for keeping the underlying tokens valid and revoking them at the provider when you no longer want Friday to act on your behalf.
Published bots. When you publish a bot via the Bot Builder, the rendered HTML is publicly served at /b/{slug}. You are responsible for the content of your bot — including its system prompt, knowledge base, and any third-party content you reference — and for ensuring it complies with applicable laws.
Service availability. Friday is provided "as-is". We do not guarantee uptime. The underlying AI models and third-party services (third-party AI providers) are outside our control.
Intellectual property. The Friday F.ai interface, branding, intelligence layer, and gateway architecture are property of Zylink Corp. AI-generated outputs are provided for your use — you are responsible for reviewing and using them appropriately.
Limitation of liability. Zylink Corp is not liable for any direct, indirect, or consequential damages arising from the use of Friday F.ai, including but not limited to decisions made based on AI outputs or actions taken by connectors on your authorised accounts.
Changelog
May 2026
March 2026
2025
2024