βββββββββββ ββββββββββ βββββββ ββββ βββ
ββββββββββββ ββββββββββββββββββββββββββ βββ
βββββ βββββββ βββββββββββ βββββββββ βββ
βββββ βββββ βββββββββββ βββββββββββββ
ββββββββ βββ βββ βββββββββββββββ ββββββ
ββββββββ βββ βββ βββ βββββββ βββ βββββ
A multi-agent AI assistant for Android β built on a swarm of specialist models
that analyze, execute, and synthesize in parallel.
| 6 Teams Domain-specialist squads for every query type |
24 Agents Individual experts, each with a strict constitutional directive |
8 Providers OpenAI Β· Anthropic Β· Gemini Β· Groq Β· Mistral Β· DeepSeek Β· GLM Β· OpenRouter |
1 Answer All specialist outputs fused into one high-quality synthesized response |
One question. Four agents. Zero compromise.
- What is Zyron?
- π What Makes Zyron Different
- β‘ See It In Action
- Screenshots
- π¨ Agent Library
- Core Architecture
- Backend + Local Fallback Logic
- All 6 Teams β All 24 Agents
- Technologies Used
- Feature Overview
- Supported AI Providers
- Tech Stack
- Project Structure
- Getting Started
- Configuration
- Agent Personas
- Android Permissions
- Security
- Built with OpenAI Codex
- License
- Author
Zyron is a production-grade Android AI assistant that replaces a single chatbot with a coordinated swarm of four specialist agents running in parallel. Every query is routed to a team of domain experts β an analyst, an executor, a validator, and a synthesizer β whose outputs are fused into a single, high-quality response.
Unlike standard AI apps where one model does everything, Zyron assigns each agent a strict role and a constitutional directive. They compete, cross-examine each other's work, and only the synthesized result reaches the user.
| Feature | Zyron | Standard AI App |
|---|---|---|
| Parallel agents | β 3 specialists run simultaneously, not sequentially | β Single model, one pass |
| Team specialization | β 6 domain-tuned teams (code, science, finance, history, creative, general) | |
| Local fallback | β Silent JS engine kicks in if cloud backend is unreachable | β App fails or shows error on network issues |
| Voice mode | β Full-duplex Live Talk with interrupt detection and sentence-level TTS | |
| On-device memory | β SQLite-backed conversation history + user memory facts injected into prompts | β No cross-session memory |
| BYOK security model | β Keys in Android Keystore, single read gateway, optional biometric lock | β Keys in plaintext or server-side only |
User Query
β
βΌ
ββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββ¬β
ββ Query Analyzer ββ
ββ Classifies: type Β· complexity Β· coordination ββ
ββ Routes to: team blend or active team pipeline ββ
ββ΄ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββ΄β
β
βββββββββββββββββββββΌββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββ βββββββββββ ββββββββββββ
β Agent 1 β β Agent 2 β β Agent 3 β
β β β β β β
β(Analyst β β(Executorβ β(Validatorβ
β /ADR) β β /Impl) β β /QA/Red) β
ββββββ¬βββββ ββββββ¬βββββ ββββββ¬ββββββ
β β β
βββββββββββββββββββββΌββββββββββββββββββββββ
β
ββ¬βββββββββ΄ββββββββββ¬β
ββSpecialist outputsββ
ββ΄βββββββββ¬ββββββββββ΄β
β
βββββββ΄βββββββ
β Agent 4 β
β Writer β
β(Synthesizerβ
β /Output) β
βββββββ¬βββββββ
β
βΌ
Final Response
The pipeline runs three phases:
- Analysis β
queryAnalyzer.jsclassifies intent, detects coding/STEM/creative signals, and selects COMPACT vs. FULL coordination mode - Specialist execution β Agents 1β3 run in parallel with individual SSE streaming, circuit-breakers, and automatic fallback chains
- Synthesis β Agent 4 (Writer) receives a structured brief from Agents 1β3 and produces the final fused response, filtered by a quality judge and semantic deduplication
Zyron uses a dual-engine architecture β a Railway-hosted Python FastAPI backend as the primary orchestrator, with a fully self-contained local JS engine as a silent fallback. The user never sees the switch happen.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β backendBridge.js β
β β
β 1. POST /orchestrate β Railway backend (30 s timeout) β
β β β
β βββ β
200 OK β remap agents to active team β
β β β return fused response β
β β β
β βββ β Timeout β Network error β Non-200 β
β β β
β βΌ β
β Local runAgentsOrchestrator() β silent fallback β
β Full SSE streaming, circuit-breakers, dedup β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Python FastAPI on Railway (
https://zyron-production-7af1.up.railway.app) POST /orchestrateβ accepts{ query, agentConfigs, team, persona, userProfile, searchResults, documentContext }- Runs three specialist agents in parallel via
LangGraphthen synthesizes via the writer agent - Returns structured
{ text, agents[], tokenUsage, meta }JSON POST /extract-documentβ accepts a base64-encoded file (PDF, DOCX, TXT) and returns extracted plain text for prompt injection- Web search β
web_search.pyfires a Tavily β Serper fallback search before the pipeline executes;key_factsfrom raw results (up to 5) are injected into every specialist prompt; returnsNonesilently when both providers fail
- Timeout is 30 seconds. If the backend doesn't respond in time, the local engine starts immediately β no error is ever shown to the user
- If the user pressed Stop while waiting, the abort propagates cleanly across both paths
- Progress bar animation starts on the frontend while the backend call is in-flight: agents animate from 0 % β 78 % (exponential approach, Ο = 28 s), then jump to 100 % on response
- Agent names, icons, and accent colors are always remapped to the active team after a backend response β the backend drives logic, the frontend owns visual identity
Every team has 4 agents (Roles: Analyst Β· Executor Β· Validator Β· Synthesizer) with individual PNG icons, distinct accent colors, and specialist directives.
| Team | Specialty | Best For |
|---|---|---|
| π§ Mega Minds (Default) | Deep research & knowledge synthesis | Complex questions, concepts, analysis, and learning |
| π» Coders | Software engineering & debugging | Features, refactors, algorithms, and code review |
| π‘ Creative Thinkers | Creative strategy & original writing | Copywriting, storytelling, campaigns, and content |
| π¬ Scientists | STEM calculations & scientific reasoning | Physics, chemistry, mathematics, statistics, engineering |
| π Historians | Historical analysis & geopolitical context | Events, eras, biographies, and historical narrative |
| π Financers | Financial analysis & investment insight | Personal finance, corporate strategy, auditing |
Deep, clear answers to complex questions
Thoughtful knowledge and research team for concepts, analysis, and learning.
Clear, complete software construction
Practical coding team for features, refactors, algorithms, and debugging.
Creative strategy and original writing
Creative team that thinks before it writes β strategy, drafting, editing, delivery.
Clear scientific explanations and calculations
Practical STEM team for physics, chemistry, mathematics, statistics, and engineering.
Clear, engaging historical answers
Knowledgeable history team for events, eras, biographies, and geopolitical context.
Expert financial insight across every domain
Master finance team for personal, corporate, and business finance.
A full-stack overview of every layer Zyron is built on β from the on-device UI to the cloud orchestration backend.
| Technology | Version | Integration |
|---|---|---|
| Python | 3.11 | Backend runtime on Railway |
| FastAPI | 0.111 | REST API server β /health + /orchestrate endpoints |
| LangGraph | latest | Multi-agent pipeline graph β three parallel specialist nodes + writer synthesis node |
| LangChain | latest | LLM abstraction layer used inside LangGraph nodes for prompt building and provider calls |
| Pydantic | v2 | Request / response model validation (models.py) |
| Docker | β | Containerised backend β consistent builds and local dev environment |
| Railway | β | Cloud deployment platform β auto-deploy from main branch |
| Uvicorn | β | ASGI server for FastAPI |
| Technology | Version | Integration |
|---|---|---|
| React Native | 0.81.5 | Core UI framework β all screens, navigation, animations |
| Expo SDK | 54 | Build toolchain, native module access, OTA updates |
| expo-secure-store | β | Android Keystore-backed encrypted API key storage |
| expo-sqlite | β | On-device SQLite database for conversation + memory persistence |
| expo-speech | β | Text-to-speech output for Live Talk voice responses |
| expo-speech-recognition | β | Real-time STT β mic dictation and Live Talk input |
| expo-local-authentication | β | Biometric / PIN gate for API Config Lock |
| expo-blur | β | Settings modal blur backgrounds |
| expo-linear-gradient | β | Agent glow accent effects |
| expo-clipboard | β | Copy-to-clipboard on code blocks |
| expo-web-browser | β | GitHub OAuth redirect handler |
| react-native-webview | β | KaTeX LaTeX rendering sandbox |
| react-native-svg | β | SVG team icons, decorative elements, Live Talk neural animation |
| react-native-keyboard-controller | β | Cross-platform keyboard layout tracking |
| react-native-safe-area-context | β | Edge-to-edge safe area insets |
| @react-native-async-storage | β | User profile, team selection, custom agents + teams |
| @react-native-community/netinfo | β | Offline detection |
| Provider | Models Used | Role |
|---|---|---|
| OpenRouter | nvidia/nemotron-3-super-120b-a12b:free + 100+ |
Default free-tier agent socket |
| OpenAI | gpt-4o-mini, gpt-4o, o-series |
General reasoning and synthesis |
| Anthropic | claude-3-5-haiku-latest, claude-3-5-sonnet |
High-quality analysis and writing |
| Google Gemini | gemini-2.5-flash, gemini-pro |
STEM, multimodal |
| Groq | llama-3.3-70b-versatile |
Ultra-low-latency inference for Live Talk |
| Mistral | mistral-small-latest |
Writer / synthesis agent default |
| DeepSeek | deepseek-chat, deepseek-reasoner |
Extended chain-of-thought reasoning |
| GLM / Zhipu | glm-4-flash, glm-4-air |
Low-cost high-speed inference |
| Technology | Integration |
|---|---|
SQLite (expo-sqlite) |
Full conversation history, session index, user memory facts β all stored on-device |
| AsyncStorage | Non-sensitive user preferences β active team, profile settings, custom agents, custom teams |
Android Keystore (EncryptedSharedPreferences) |
All API keys β hardware-backed encryption, never stored in JS bundle or AsyncStorage |
| Technology | Integration |
|---|---|
| KaTeX 0.17 | LaTeX formula typesetting β inline ($...$) and display ($$...$$) math rendered in a sandboxed WebView |
| react-native-webview | WebView host for KaTeX rendering |
| mathParser.utils.js | Custom parser that detects and splits LaTeX and chemical formulae out of raw LLM text before rendering |
| SyntaxCode component | Syntax-highlighted code blocks with language auto-detection and copy-to-clipboard |
- Parallel execution β Agents 1β3 fire simultaneously, not sequentially
- Team Blending β cross-team specialist borrowing per query without changing the active session team (e.g. pull Mega Minds' Scholar into a Coders session)
- Coordination modes β
NONE(direct),COMPACT(brief sharing),FULL(structured specialist briefs with shared context) - Model tier routing β cheap vs. expensive model selection based on query complexity
- Team switching suggestions β the router detects when a different team would produce better results
Zyron can be talked to directly β no typing required. Live Talk opens a full-screen voice conversation interface powered by a neural-network node-web animation that pulses in sync with microphone activity.
Pipeline:
Mic Input (STT) β Transcript β LLM Call (Agent 1 config) β TTS Output
β β
βββββββββ Interrupt detection (new voice kills TTS) βββββββββββββ
- Speech-to-text via
expo-speech-recognitionβ real-time partial results, silence detection - Continuous mic β hardware never closes between turns (no click sound); a 1.5 s silence timer triggers the LLM call
- Text-to-speech via
expo-speechβ response is spoken sentence-by-sentence as tokens arrive, minimising latency - Interrupt β if the user speaks while Zyron is talking, TTS stops immediately and the new input is processed
- Auto-close β if no speech is detected for 20 s after Zyron finishes speaking, the session closes silently
- All providers supported β uses Agent 1's configured key/model (OpenAI, Anthropic, Gemini, Groq, Mistral, DeepSeek, GLM, OpenRouter)
- Conversation saved β each turn is written to the active chat session in the background
- Visual phases:
idleβlisteningβthinkingβspeakingβ back tolistening
The input bar now includes a microphone button alongside the text field. Tap it to dictate your message instead of typing β the transcript populates the input bar, and you can edit it before sending.
- Lazy-loads
expo-speech-recognitionwith a try/catch guard β gracefully disabled in Expo Go or stripped builds where the native module is not linked - Requests
RECORD_AUDIOpermission on first use - Live partial results update the input field in real time as you speak
- Tap the mic button again (or tap Stop) to end dictation early
- Server-Sent Events (SSE) for all supporting providers β tokens stream live to screen
- Per-agent streaming state β each agent has its own progress bar and status label (Thinking / Building / Stress-testing / Documenting / etc.)
- Graceful abort β stop mid-generation, cancels cleanly across all active sockets
Zyron enriches every query with live web results before the agent pipeline runs β no manual "search mode" toggle required.
Pipeline:
User query
β
βΌ
Web Search (Tavily β Serper fallback, 3 s timeout)
β key_facts[] + sources[]
βΌ
Injected into all specialist agent prompts
β
βΌ
LangGraph multi-agent pipeline runs with grounded context
- Dual-provider fallback β Tavily is the primary search provider; if it fails or is unconfigured, Serper is tried automatically
- Silent degradation β if both providers return nothing, agents proceed using their own knowledge without any error shown
- Grounded facts β up to 5 distilled
key_factsextracted from raw search content (Tavily's auto-answer is intentionally ignored for accuracy) are injected into every specialist prompt - Source attribution β
title,url, andsnippetfor each result are available alongside the facts - Session-level caching β duplicate queries within the same session reuse the cached result; cache is cleared on new chat
- 3-second hard timeout per provider β web search never blocks the pipeline for more than ~6 s total
- Both engines supported β runs on the Railway backend (
web_search.py) and on the local JS fallback engine (src/agents/search/)
- Circuit breaker β per-provider failure tracking; tripped circuits skip that socket for the current session
- Fallback chains β automatic failover to the next provider on timeout or error
- Sanitized error messages β no raw API keys or stack traces ever surface in the UI
Create fully custom agent personas and custom teams β no coding required.
Custom Agents (free):
- Give the agent a name, description, and pick an icon from the 24-icon library (all built-in agent portraits available)
- Configure personality traits (Critical Thinker, Systems Architect, Researcher, Innovator, Strategist, Mentor)
- Set tone (Professional, Technical, Friendly, Formal, Direct, Creative) and communication style (Concise, Detailed, Structured, Educational, Executive)
- Tune five strength sliders: Reasoning, Creativity, Analytical, Coding, Teaching (0β100)
metadataGenerator.jsauto-generatescontributionLensandspecialistDirectivefrom the form- Agents are stored in
AsyncStorageand available immediately across all sessions - Edit, duplicate, or delete any saved custom agent
Custom Teams (premium):
- Fill all four role slots (Agent 1β4) with agents from the custom agent library
- Choose a team name, tagline, description, and one of 8 SVG team icons (Shield, Network, Atom, Lightning, Compass, DNA, Brain, Rocket)
- Saved teams are merged with built-in teams at runtime via
customTeamRegistry.jsβ they behave identically to built-in teams: full orchestration, streaming, synthesis, and team routing work with no changes
Registry merge logic (customTeamRegistry.js):
getAllTeams() β [...BUILTIN_TEAMS, ...customTeams]Custom teams are bootstrapped async at app start then cached. All existing consumers (Agent Library, team router, runtime) call getAllTeams() with no conditional logic.
- SQLite persistence β full conversation history with session index and message pagination
- User memory β contextual facts extracted from conversations and injected into future prompts
- Android Keystore-backed storage β API keys stored in
EncryptedSharedPreferencesviaexpo-secure-store; never inAsyncStorageor any JS bundle string - Single read gateway β
keyGuard.jsis the only permitted key-read path; keys are read at call-time and never stored in module-level variables - Optional API Config Lock β a password gate that locks all API settings behind biometric or PIN authentication
- No telemetry β all telemetry is session-local, never transmitted
- Quality judge β LLM + heuristic scorer evaluates output against domain-specific required/prohibited criteria (coding, STEM, analytical, writing, creative, general)
- Semantic deduplication β removes redundant content across agent outputs before synthesis
- Agent personas β five Writer synthesis modes: Balanced, Creative, Precise, Educator, Executive
- LaTeX rendering β
KaTeXviaWebViewfor inline and display math formulas - Syntax-highlighted code blocks β dedicated
SyntaxCodecomponent with language detection and copy-to-clipboard - Chemical formula detection β
mathParser.utils.jshandles inline chemical notation alongside LaTeX
- Timeline grouping β conversations bucketed into Today / Yesterday / Older
- Session sidebar β slide-out drawer with conversation history, search, and new-chat creation
- Smart welcome greeting β time-aware greeting (Night Owl / Early Bird / Golden Hour / etc.) with the user's first name
Zyron can read and reason over documents and images β attach a file or image alongside your query and the agent swarm will analyze the content directly.
Document Processing:
- PDF parsing β extract and analyze text content from PDF documents; the full extracted text is passed as context to the active agent team
- Plain-text files β
.txt,.md,.csv,.json,.xmland other text-based formats are read directly into the prompt context - Code files β source files (
.js,.py,.ts,.jsx,.tsx, etc.) are passed to the Coders team with syntax-aware handling - Chunked context β large documents are chunked intelligently to fit within model context windows; key excerpts are surface-ranked before injection
- Multi-document sessions β attach multiple documents in a single session; the agent team cross-references them in synthesis
Image Analysis:
- Multimodal vision input β images are passed directly to vision-capable models (GPT-4o, Gemini 2.5 Flash, Claude 3.5 Sonnet) for analysis
- Supported formats β PNG, JPG, JPEG, WEBP, GIF (static)
- Use cases β diagram explanation, chart reading, screenshot debugging, handwritten note transcription, UI/UX critique, scientific image interpretation
- Auto provider routing β if the active agent's configured model does not support vision, Zyron automatically routes the image query to the best available vision-capable provider without user action
- Image + text combined β mix a written query with an attached image; the agents analyze both together and synthesize a unified response
Supported pipeline:
User attaches file / image
β
βΌ
fileProcessor.js ββββ PDF β text extraction (pdf-parse)
imageHandler.js ββββ Image β base64 encode β multimodal payload
β
βΌ
Injected into agent prompt context (alongside user query)
β
βΌ
Agent swarm runs normally β all streaming, circuit-breakers,
synthesis, and quality judge apply as usual
- Profile panel β display name, role, preferred tone, language, coding style, detail level
- Agent Library β accordion panel showing all six teams with per-team agent roster and expand-to-inspect detail
- Agents Workshop β custom agent and custom team builder (described above)
- API Config panel β per-provider key entry, model selection, key status verification, share-key-across-agents toggle
- Privacy panel β privacy mode, profile context injection toggle
- Reset panel β wipe conversation history, clear API keys, full factory reset
Zyron connects to eight AI providers. Each agent socket is independently configurable.
| Provider | Default Model | Notes |
|---|---|---|
| OpenRouter | nvidia/nemotron-3-super-120b-a12b:free |
Free-tier NVIDIA, Cohere, and 100+ models |
| OpenAI | gpt-4o-mini |
GPT-4o, o-series reasoning models |
| Anthropic | claude-3-5-haiku-latest |
Claude 3.5 Sonnet/Haiku |
| Mistral | mistral-small-latest |
Writer agent default |
| Google Gemini | gemini-2.5-flash |
Flash and Pro variants |
| DeepSeek | deepseek-chat |
deepseek-reasoner for extended CoT |
| Groq | llama-3.3-70b-versatile |
Ultra-low-latency inference |
| GLM / Zhipu | glm-4-flash |
GLM-4 Flash, Air, Plus |
All providers support free model tiers where available. Keys are stored per-agent and can be shared across agents via the share-key setting.
React Native 0.81.5 + Expo SDK 54
βββ expo-secure-store Android Keystore-backed key storage
βββ expo-sqlite On-device conversation + memory persistence
βββ expo-speech TTS β Live Talk voice output
βββ expo-speech-recognition STT β Mic input + Live Talk voice input
βββ expo-local-authentication Biometric/PIN API lock gate
βββ expo-blur Settings modal blur backgrounds
βββ expo-linear-gradient Agent glow effects
βββ expo-clipboard Code block copy-to-clipboard
βββ expo-web-browser GitHub OAuth redirect handler
βββ react-native-webview KaTeX LaTeX rendering
βββ react-native-svg SVG icons, decorative elements, team icons
βββ react-native-keyboard-controller Cross-platform keyboard layout tracking
βββ react-native-safe-area-context Edge-to-edge safe area handling
βββ @react-native-async-storage User profile, team selection, custom teams/agents
βββ @react-native-community/netinfo Offline detection
βββ katex 0.17 LaTeX math typesetting
Backend: Python 3.11 Β· FastAPI Β· LangGraph Β· Railway deployment
Build toolchain: EAS Build with development / preview / production-APK / production-AAB profiles.
Zyron/
βββ App.js React root β SplashScreen + MainApp
βββ index.js Expo entry point + global error handler
βββ app.config.js Active Expo config (merges .env secrets)
βββ eas.json EAS Build profiles
β
βββ assets/
β βββ agent-icons/ 24 agent portrait PNGs (6 teams Γ 4 agents)
β β βββ financers/ accountant Β· adviser Β· auditor Β· investor
β β βββ coders/ designer Β· programmer Β· debugger Β· executor
β β βββ scientists/ theorist Β· experimenter Β· modeler Β· reporter
β β βββ mega-minds/ scholar Β· analyst Β· synthesizer Β· editor
β β βββ historians/ archivist Β· contextualist Β· cartographer Β· biographer
β β βββ creative/ strategist Β· creator Β· curator Β· narrator
β βββ icons/ Favicon + web icons
β βββ images/ In-app logo assets
β βββ splash/ Android adaptive icon + splash screen
β
βββ backend/ β Python FastAPI backend (Railway)
β βββ main.py FastAPI app β /health + /orchestrate + /extract-document endpoints
β βββ models.py Pydantic request/response models
β βββ orchestrator.py Backwards-compat shim β re-exports from orchestrator/ package
β βββ orchestrator/ LangGraph pipeline package (_state, _utils, _nodes, _graph, _pipeline)
β βββ web_search.py Web search β Tavily β Serper fallback; injects key_facts into agent prompts
β βββ document_extractor.py Base64 file β plain text (PDF via pdfminer.six, DOCX via python-docx, TXT)
β βββ query_analyzer.py Query classification
β βββ prompt_builder.py Backwards-compat shim β prompt_builder/ package
β βββ prompt_builder/ Prompt construction package (_specialist, _writer, _templates, _style, _user_profile)
β βββ providers.py Provider HTTP clients
β βββ requirements.txt
β
βββ plugins/
β βββ withAndroidWindowBackground.js Prevents white flash on cold launch
β
βββ src/
βββ agents/ β Core AI swarm engine
β βββ backendBridge.js Primary entry point β backend first, local fallback
β βββ orchestrator.js Local pipeline runner (fallback engine)
β βββ analysis/ Query classifier
β βββ api/ Provider HTTP clients + circuit-breaker + fallback
β βββ memory/ SQLite on-device memory store
β βββ offline/ On-device offline inference fallback
β βββ progress/ Per-agent progress state tracker
β βββ prompts/ Prompt builder + domain templates
β βββ registry/ Agent registry + team metadata + persona instructions
β βββ router/ Team router + model tier selector
β βββ search/ Web search β Tavily β Serper fallback (webSearch.js, searchProviders.js, searchResultFormatter.js)
β βββ security/ keyGuard β single key-read gateway
β βββ streaming/ SSE stream manager
β βββ synthesis/ Synthesizer + quality judge + semantic dedup
β βββ teams/ 6 built-in team definitions + teamRuntime + teamBlend
β βββ telemetry/ Session-local latency/token/error metrics
β βββ tools/ Tool registry + sandboxed JS code executor
β βββ workshop/ Custom agent/team storage + registry + metadata generator
β
βββ components/
β βββ agent/ AgentPanel, AgentBadge, AgentCoordinationTab, AgentIcon
β βββ chat/ ChatBubble, ChatMessageList, SyntaxCode, MarkdownText
β βββ input/ InputBar β mic button, Live Talk button, agent-strip dots
β βββ layout/ Header (glow/offline), SidebarDrawer
β βββ math/ MathFormula (KaTeX via WebView)
β βββ modals/ NeuralNetLiveTalk, ConfirmDialog, SetupGuideModal
β βββ shared/ Icons (SVG), PasswordField, WelcomeLogo
β βββ workshop/ AgentBuilderPanel, TeamBuilderPanel, CustomAgentsLibrary
β
βββ config/
β βββ appConfig.js Agent defaults, provider models, user profile schema
β βββ colors.config.js Design token palette (agent accent colors, glows)
β βββ apiLock.config.js SecureStore key constants for API lock
β βββ agentPersona.config.js Writer synthesis persona options
β βββ agentIconOptions.js Centralised 24-icon asset catalogue (for custom agents)
β
βββ database/
β βββ db.init.js SQLite schema + all message CRUD operations
β
βββ hooks/
β βββ useAgentExecution.hook.js Send/stop/regenerate, agent state updates
β βββ useAgentSockets.hook.js Key load/save/verify, team selection, engine toggle
β βββ useConversations.hook.js Session index, message pagination, new/delete chat
β βββ useLiveTalk.hook.js Live Talk pipeline β STT β LLM β TTS + interrupt
β βββ useSettings.hook.js Settings modal, password manager, API lock, profile
β βββ useToast.hook.js In-app toast: show/dismiss, swipe-to-dismiss
β
βββ screens/
β βββ chat/MainApp.screen.jsx Composition root β wires all hooks and components
β βββ splash/SplashScreen.screen.jsx Animated custom splash
β βββ settings/
β βββ SettingsModal.screen.jsx
β βββ panels/ Profile, AgentLibrary, AgentsWorkshop, ApiConfig, Privacy, About, Reset
β βββ auth/ ApiLockGate, PasswordManager, RemoveLockBanner
β βββ rows/ AgentSocketRow
β
βββ styles/
β βββ app.styles.js Master stylesheet
β βββ *.styles.js Layout, feedback, welcome, sidebar, settings, profile, socket, auth
β
βββ utils/
βββ agentLogic.utils.js Backward-compatible facade for agents public API
βββ mathParser.utils.js LaTeX / chemical formula detection and splitting
βββ responseGenerator.utils.js Legacy direct API caller
βββ responsive.utils.js Dimension-based scale/spacing/fontScale helpers
- Node.js 18+
- Expo CLI (
npm install -g expo-cli) - EAS CLI (
npm install -g eas-cli) for builds - At least one API key from any supported provider
git clone https://github.com/NomanRafique01/zyron.git
cd zyron
npm install# Start Metro bundler
npx expo start
# Run on connected Android device / emulator
npx expo run:android# Preview APK (internal distribution)
eas build --profile preview --platform android
# Production APK
eas build --profile production-apk --platform android
# Production AAB (Play Store)
eas build --profile production --platform androidAPI keys are entered directly in the app's Settings β API Config panel after launch. Keys are stored in Android Keystore-backed encrypted storage β never in source code or config files.
For .env-based secrets (used at build time only via app.config.js):
cp .env.example .env # if provided
# or create manually β see app.config.js for expected variables
β οΈ Security note: This is a client-only app. SeeSECURITY.mdfor key storage architecture, spend-cap guidance for every provider, and the recommended Cloudflare Worker proxy for production deployments.
The Writer agent (Agent 4) supports five synthesis personas, selectable in Settings:
| Persona | Behavior |
|---|---|
| Balanced | Professional synthesis of all specialist outputs |
| Creative | Unconventional angles, vivid language, memorable framing |
| Precise | Strict correctness, concrete numbers, numbered steps, zero filler |
| Educator | Progressive concept building, analogies, Key Takeaway at close |
| Executive | Lead with conclusion, max 3 paragraphs, one-line Action/Decision |
| Permission | Purpose |
|---|---|
INTERNET |
API calls to all AI providers |
VIBRATE |
Haptic feedback on send / toast |
RECORD_AUDIO |
Mic input dictation + Live Talk STT |
USE_BIOMETRIC |
Biometric gate for API Config Lock |
USE_FINGERPRINT |
Fingerprint unlock for API Config Lock |
Minimum SDK: 21 (Android 5.0) Target SDK: 34 (Android 14)
API keys live on the device. The app's security model is built around three principles:
- Encrypted storage β Android Keystore-backed
EncryptedSharedPreferencesviaexpo-secure-store - Single read path β
keyGuard.jsis the only file that reads keys; no key is ever assigned to a module-level variable or logged - Spend caps β the most important protection is a hard monthly spend limit on every provider dashboard (see
SECURITY.md)
For production deployments requiring keys to leave the device entirely, SECURITY.md describes a ~50-line stateless Cloudflare Worker / Vercel Edge Function proxy that eliminates on-device key storage.
OpenAI Codex was the AI coding assistant used throughout the entire development lifecycle of Zyron β from architecture decisions and backend design all the way to UI polish and documentation.
| Area | What Codex handled |
|---|---|
| UI logic & planning | Component hierarchy, state-management patterns, hook extraction strategy, and overall screen flow |
| Dynamic & responsive UI | Animated coordination panels, adaptive layouts, keyboard-avoidance logic, and gesture-driven interactions |
| Feature implementation | MainApp.screen.jsx, agent pipeline screens, settings panels, and chat-flow components |
| Code review & refinement | Code quality passes, refactor suggestions, and pattern enforcement throughout iteration |
| Debugging | Race conditions in the agent pipeline, RAF-batching issues, animation driver conflicts, storage-migration edge cases |
| Architecture decisions | Agent-orchestration design, LangGraph pipeline structure, circuit-breaker fallback chains |
| Backend design | FastAPI / LangGraph orchestration layer, document-extraction endpoint, Railway deployment |
| Deployment | EAS build profiles, Play Store AAB configuration, Railway production, environment-variable strategy |
| Documentation | Writing and maintaining this README, SECURITY.md, CHANGELOG.md, STRUCTURE.md, and all in-code JSDoc |
| Git & version control | Commit message authoring, branch strategy, release tagging, and changelog generation |
MIT β see LICENSE.md
Noman Rafique nomanrafique.official01@gmail.com
Six specialist teams. Eight AI providers. One coherent answer.
Zyron β Think in swarms.














