Averra AI
An agentic AI platform for finishing work, from question to result. A person asks in plain language, and the platform finds the evidence in registered databases, imported documents, the open web or its own wiki.
- Developer / Owner
- Personal project
- September 2026
- Web, Android, iOS, desktop
- Kotlin and Spring Boot services, Next.js and React, Kotlin Multiplatform, Rust and WebAssembly, PostgreSQL with pgvector
- In development
Walkthrough
What it does
- An answer from data
- Discovers the databases it may read from a registry, reads their schemas and writes its own SQL. A parser checks every statement before it runs.
- An answer from documents
- Searches an imported corpus by meaning and wording together, can rerank the candidates, and cites what it used. PDFs are converted to Markdown on import.
- An answer from the open web
- Searches through a search instance of its own and quotes what came back.
- A file, not a reply
- Writes and runs code in a sandbox, then publishes a PDF, slide deck, spreadsheet, Word document, dashboard, diagram, 3D scene or video.
- Tasks, projects and a schedule
- Plans tasks with dependencies, busy time and reminders, gives every task one owning project, estimates the chance a task completes, and proposes changes that a person approves before they apply.
- Something repeatable
- Runs it as a flow: a typed graph of nodes, versioned, scheduled and notifying its author. The agent can draft a flow for a person to review.
- Memory that a person controls
- Extracts dated notes from conversations, flags notes that conflict, and asks the person to confirm or reject them in a weekly review. It keeps up to 5,000 notes and, at that limit, replaces the weakest with stronger evidence. An exported WakaTime history can be imported so coding time informs task estimates.
- Suggestions that explain themselves
- Offers follow-ups on a page of their own, grounded in notes the person has validated, and says why a suggestion was made and why one closed.
- A place to keep what it knows
- Keeps wiki pages with history and backlinks that people write, shared or personal, and answers from them.
- Reaching other systems
- Connects to MCP servers and OpenAPI services as reviewed tools, exposes its own MCP server with tools, prompts and a reader’s files and wiki pages as resources under the same permissions, and holds a linked Telegram conversation with voice messages.
- A browser a person can watch
- Drives a per-person Chromium that the person can watch live and take over. It is still in development.
Scale
- 142
- 41
- 514
- 170
- 73
- Indonesian and English
Counted from the repository: tools from the tool manifest, node types from the executors, operations from the OpenAPI snapshots, tables from the replayed migrations and pages from the web application.
Clients
- Web application
- Chat with dictation and resumable streaming, a library of files, wiki, workflow editor, task calendar, projects, memory and an admin console. A model editor offers sculpting, texture painting and rigging for 3D meshes, and a Rust module compiled to WebAssembly handles its mesh operations.
- Mobile and desktop application
- A Kotlin Multiplatform and Compose app for Android, iOS and desktop with more than twenty feature areas, native camera and audio, and a token refresh that follows the web client. Interface copy is generated from the web message files, so both clients say the same thing. Bringing it to parity with the web application is ongoing work.
My contribution
I develop and operate Averra AI as a personal project. The work spans four backend services (platform, agent, code runner and browser), the web frontend, the Kotlin Multiplatform app for Android, iOS and desktop, a Rust and WebAssembly module for the model editor, the build tooling that generates mobile models from the API, and the checks and documents that keep these parts consistent.
System context
Reader
Conversations, files, workflows and wiki.
Operator
Configuration and administration.
Averra AI
Answers, files, flows and wiki pages.
Model and media engines
Configured model roles and integrations.
Registered databases
Permission-gated, read-only queries.
MCP and OpenAPI systems
Reviewed tools and approved writes.
Public web
Search through an instance of its own.
Telegram Bot API
Optional linked private conversation.
Decisions in the design
- Domain neutral by construction
- Data sources, prompts, skills, node types and flows are rows that are edited through the API while the platform runs. There is no keyword table, no per-domain branch and no compiled-in business rule.
- Flows as typed graphs
- A flow is a directed graph of typed nodes, stored as data, versioned and run by a topological scheduler. Ports carry a closed set of types, and an edge is accepted only when the source type widens into the target type. Publishing any version doubles as a rollback. A flow with no language-model node is deterministic.
- Ownership and permission checks
- Registered databases are read only and permission gated. A workflow belongs to its owner, and anyone else receives a not found response. A skill the agent writes for itself stays disabled until a person enables it.
- Code runs in a cage
- Generated code runs in a separate service with a cleared environment, a time limit, a confined workspace and, in Kubernetes, no outbound network. The browser service resolves each host once and accepts public addresses only, so a rebinding trick cannot reach the internal network.
- Search tuned by measurement
- Retrieval combines vector and full-text search in Indonesian and English, and every ranking change is judged against a labelled set before it ships. The sets are small, so the results are a baseline and not a claim of accuracy.
How it is built
- Contracts between parts
- Service APIs are OpenAPI snapshots checked for breaking changes. gRPC schemas, the agent tool manifest, the flow graph schema and data ownership per table are checked too, and mobile models are generated from the same OpenAPI files.
- Automated architecture checks
- More than ninety audit checks cover database conventions, Kotlin boundaries, TypeScript rules and parity between web, mobile and the API. A coverage gate of 80 percent applies to the backend, the web client and the mobile modules.
- Measured retrieval
- An evaluation harness reports recall, reciprocal rank, nDCG and whether the system declines unanswerable questions, with separate development and held-out sets. It showed that the approximate vector index missed most of the exact neighbors at its default setting, so search now sets the scan depth per query.
- Design before code
- Changes move through research, a proposal, a design review and a decision record. The repository holds more than two hundred research notes and dozens of decision records.
Tradeoffs and limits
Keeping behavior in data rather than code makes the platform flexible without a release, but every rule then needs validation at save time and at run time. Typed ports catch wiring mistakes early at the cost of more explicit conversions between node outputs.
The mobile app has no offline mode. The 3D, workflow and memory graph editors stay on the web, and the web view that is meant to open them in the app does not load them yet. A gap audit of the web and mobile clients lists 261 differences, 51 of them reader features that are missing or not wired. The remote browser is not released.
Get in touch
Averra AI is in active development. Contact me to discuss the project or similar work.