-
-
Meet Maya: a persistent WebMCP personal OS where goals, history and agent actions stay grounded, inspectable and user-controlled.
-
Goals & Projects: six life areas become structured WebMCP state, clear goals, durable context and agent-ready actions.
-
Progress & Patterns: longitudinal memory surfaces evidence-backed trends, counterevidence and what should change next.
-
Morning Brief: D1 history + Vectorize retrieval turn yesterday’s evidence into today’s ranked, explainable priorities.
-
Journal & Reflection: structured daily memory captures outcomes, failures and adaptations so the agent learns over time.
-
Consult the Council: Workers AI combines personal history with verified advisor texts, preserving citations and disagreement.
-
Library & Advisors: user-appointed, source-bounded advisors keep AI guidance grounded in verified public-domain evidence.
-
Transparency & Analytics: every WebMCP call exposes inputs, evidence, confidence and state effects—no hidden mutation.
Inspiration
Useful advice needs more than just relying on ones own thinking. A useful system that is a companion in ones daily life needs to remember what happend with your goals and how you pursued them and understand your feelings and life as it evolves toward achieving what you aspire to in different areas of your life.
Consilium is a system that I have been working on for quite a while before this challenge. I started to develop it to help me understand my life and my decisions better by using advice I used to apply, or try to apply from books that inspired me. For this challenge, I wanted to show how a browser agent can work with my system through the exciting new technology, WebMCP, without of course, it replacing my role or taking over decisions or becoming some kind of to-do planner.
What it does
I didnt want to show any of my private thoughts or details for this challenge, so I created the demo using a fictional demo person called Maya. She is a freelancer like me (actually, I am a teacher moonlighting as a developer), and she is balancing work, family responsibilities and limited energy, drawing loosely on pressures I know from my own life and from trying to build my business at night and teaching during the day. Her goals, her progress, the journal and evening reflection run across six connected areas: physical, mental, spiritual, social, financial and vocational. In my original system I associate areas with different advisors. For this demo, I kept the council to three authors that are in the public-domain. Each advisor, or council member, is represented by a book author whose work I want to keep applying over time. In the past, I would have read a book once and then slowly lost the benefit or didn't know how to apply most effectively in my life.
The browser agent can read the current goals, look at the history of my goals and recognise patterns, and consult my, or in this demo, Maya's appointed council. My actual system vectorises book passages so that relevant parts can be retrieved when I consult that advisor. I chose Marcus Aurelius (Meditations), Epictetus and Sun Tzu (Art of War) for this demo, but I have Stephen Covey, Musashi, Carl Jung and others in my actual council. I used a small selection of public-domain books so I could provide inspectable book excerpts and locations (I ran into issues before where AI would hallucinate advice etc. So, I make it literally show me where it's getting the advice from). Personal records and book passages used for advice are retrieved separately and resolved against canonical D1 records, but on my actual system I am using Postgres to store everything.
Advice given isnt something that automatically changes my plans and goals etc. For the demo, the agent stages an action and then the person reviews the text. A separate commit turns the approved action into a tracked "Today" goal. An evening reflection is in the form of my journaling habit and records readiness, six plain-English answers and a status for every active goal I have today. Missed goals require an explanation and adaptation of the progress and influence how the advice unfolds over time, so if I miss something or just don't have time or can't be bothered, the system carries that forward and adjusts priorities etc.
The WebMCP Component
The human interface and browser agent operate on the same session records. Typed tools expose context, history, patterns, appointments, goals, progress through the goals, the journal, evening reflection, morning brief, consultation, inspection and proposals.
Twelve tools are registered for this demo. There is a 13th one, commit_proposed_action. It is available only while the session has a pending proposal. Its availability is not consent. I need the browser agent to obtain human approval, then the server separately checks ownership, proposal state and one-use commitment.
How I built it
The page registers tools with document.modelContext.registerTool, JSON schemas and annotations. I setup a Cloudflare Worker that serves the interface and API (Totally impressed by these Cloudflare workers, actually the whole suite is really amazing). D1 owns application records, source text and audit state. Workers AI produces BGE query embeddings, Vectorize retrieves filtered candidates, on my home system I use ChromaDB for this part and the server resolves their IDs back to canonical records.
Each council consultation attempts one bounded Workers AI structured response. If that output fails validation, the system labels and then uses the deterministic fallback instead. Validation checks its shape, council member/advisor-owned evidence references and quoted source phrases. Reflection synthesis and morning-brief generation are transformations of recorded evidence, not extra model deliberation. The browser agent is separate from the application's Workers AI inference.
Challenges and current limitations
Getting a useful recommendation is not enough. I found it really challenging to keep where it came from, its uncertainty, session ownership and the approval boundary visible at all times. My latest rehearsal rejected malformed model output and displayed a labelled fallback and thats not presented as successful fresh AI reasoning. The demo and the video must preserve the actual result mode.
The source packs are super small for the demo, which kind of breaks my heart, because i really wanted to show the coolness of being able to "plug in" a book and then have advice grounded in that author's actual writing, but I kept it small for this demo, after all, its about the WebMCP, not my existing system.
Exact quote identity does not prove that every interpretation is correct. This is not a system operating on complete-book understanding, and therefore isnt a hallucination-free system. I ran into heaps of problems with AI generated advice inventing or misattributing sources. That is why I started storing the source passages separately and making the system resolve retrieved IDs back to the original text. But again, I really wanted to represent my system and its use of WebMCP as clearly as possible here for you to see. Believe me though, it's super cool.
What I learned
The useful boundary is between understanding, proposing and applying. Memory was a big thing for this system and being able to use all the information I collected about myself in my reflections and progress challenges matters because outcomes and counterexamples affect the next plan of attack when working towards goal achievement, rather than just filling a history panel with data that isnt being used to make my journey better.
Pre-existing work and demo data
The original Consilium system, the visuals and workflows have been in development by me for quite some time. The Cloudflare adaptation and WebMCP edition have their own public history. The repository's PREEXISTING.md shows reused work and the challenge-specific changes. This demo uses fictional personal records and public-domain excerpts, not the original private journals or full vector library (it's around 23,000 vectors). Its frozen fictional timeline is disclosed in the interface.
Try it
I hope you can give the live application a go in a WebMCP-capable browser. You dont need an account for the demo. Ask the browser agent to read the goals and history, then explain one pattern with both supporting evidence and a counterexample, without changing anything. Inspect a council result's actual generation mode, trace and exact excerpts. Request the proposal and approve its text only if you want it committed. The repository's DEMO.md supplies more testing instructions.
Built With
- cloudflare-d1
- cloudflare-workers
- css
- html
- javascript
- typescript
- vectorize
- webmcp
- workers-ai
Log in or sign up for Devpost to join the conversation.