Tayler Erbe · Personal Project · Aug 2026 to Present

Skyrule
Agentic AI & Local LLMs

Skyrule is a personal project I built outside my employment, designed to help people understand themselves and the relationships in their lives. Using astrology as its interpretive lens, it visualizes how those connections shift over time through calendar views and timelines. The engineering underpinning is a rule-based inference system, supported by a 15-agent AI team. Content is generated via a self-hosted LLM stack and is validated through automated checks, statistical testing, and final review by me.

Status
Active build · pre-beta · public launch planned Q1 2027
Role
Founder, product owner & technical lead
Timeline
Started Aug 14, 2026
01The Agent Organization 02Orchestration & Model Routing 03Local LLM Stack 04Provenance-First Knowledge 05Validator-Gated Generation 06Statistical Evaluation 07Quality, Security & Data 08Timeline & Next
15
AI agents with written charters
650+
Unattended jobs launched by the queue
1,375
Automated tests passing (Oct 12, 2026)
4,256
Verified, sourced rules lifted (Oct 6, 2026)

A company made of agents

I designed the Skyrule team as a 15-agent AI engineering organization, mirroring a real company with fourteen departments and a Principal Architect. These include the domain practice, relational science, editorial, product design, platform and data engineering, AI and performance engineering, QA and compliance, data science, brand and marketing, legal and trust, finance and operations, program management, the office of the founder, and security and IP protection.

Lanes enforced by tooling, not by instruction

I built a system where code ownership is defined in a machine-readable map and enforced by tooling, so agents cannot change files outside their scope. This turns least privilege from a request into an enforced control.

Decision continuity
I built an append-only log to record founder decisions verbatim. Agents reference this log before asking previously answered questions.
Session continuity
I built a mission file, open-threads register, handoff documents, and coordinator brief to ensure any new agent session could resume without loss.
Code review
I reviewed and integrated 29 pull requests from a cloud engineering agent. Before merging, I ran an isolated checkout with the full test suite and regression controls.

Work that runs while I sleep

I built an autonomous job queue and GPU scheduler in Python that runs on a 15-minute tick. It has separate lanes for CPU, local-model, and cloud-model jobs, and handles priorities, dependencies, start conditions, finish checks, and retry limits. It includes a usage-budget guard and will pause and resume automatically when a model usage limit is reached. Since early October 2026, it has launched 650+ unattended jobs, including overnight GPU extraction runs and parallel multi-agent research batches.

Agent City

I launched Agent City on 15 October 2026 as a pixel-art city that works as the operations console for my AI agents and side projects. By 18 October, I had rebuilt it as a 3D world that runs in the browser, written in plain JavaScript with three.js; the 2D city is still there as a second view. I built it because tasks were finishing across several projects, decisions were being made, and some work was waiting on other work. I wanted to see where each project stood, what had changed, and where I was needed. The 3D world is not a distraction. It's a place where I show up more often because I enjoy it, and that makes me more present for the work.

Agent City in 3D: an island town with seven labelled neighbourhoods
Agent City in 3D, 18 Oct 2026: the whole map

The world has 30 agents in seven neighbourhoods: a town center, a university campus, a creative quarter, an operations corner, a news and discovery district, a park and canyon, and a beach neighbourhood. The buildings are places I love, rebuilt in 3D: Geisel Library at UC San Diego, a Topanga Canyon retreat, a Cary park with a treehouse and slide, and a jazz kissaten café and record shop. There are 32 characters. I designed the concept art; they were turned into rigged, animated 3D models on my own GPU with open models and cleaned up in Blender by script.

The 32 Agent City characters standing in rows
The 32 characters, 3D models made on my own GPU from my concept art
Geisel Library rebuilt in 3D on the Agent City campus
Geisel Library on the campus
Built to be operated, not watched

Every animation maps to real state from the job queue: an agent is shown working only while its job is actually running. The town shows who is working, who needs me, what is scheduled, and what is offline. The place is not for show, it’s a control panel. I made a rule early on: the town must only reflect real system state. No fake motion, no busy-looking agents. That rule keeps the whole thing honest.

What works today

Offices you can walk into
Every agent has its own office. I can walk in, sit down, and chat with the agent about what it is working on.
Board rooms
I pick which agents join and brainstorm a topic with them live.
Choose the brain
For every conversation I choose the model: Claude Sonnet or Opus, or open models running locally on my own GPU through vLLM or Ollama. ChatGPT is wired in and waits only for a key.
The Desk
One page for the whole operation: today’s items that need me, a calendar with day, week and month views of finished jobs, running and queued jobs and my decisions, plus decisions, documents, projects, places and search.
Done log and chat log
The Done log keeps every finished job for good, newest first, with its report and the files it made: 1,031 finished jobs so far. The chat log keeps every conversation and board room.
The Kissaten DJ
A music agent behind the café counter that runs on a local model. I tell it my mood, it remembers my taste in a notebook it asks before saving to, and its suggestions appear as cards.
Overseer
It goes round every agent each hour: it flags failed, stuck or missed runs and asks each agent, on a local model, whether its last run did its job. It checks and never acts.
Private by default
It is reachable only over my private network, from my phone or laptop, over HTTPS; sign-in is checked against my private network identity; it never listens on the public internet.
Inside the GPU Keeper's office, with a chat with the agent open beside it
A chat with the GPU Keeper in its office, on a local model
Inside the jazz kissaten: the Kissaten DJ suggests records in a chat panel
The Kissaten DJ suggesting records in the café

A self-hosted inference workstation

I built a self-hosted inference workstation using an RTX 5090 32 GB, Ryzen 9 9950X, and 64 GB RAM to run vLLM in WSL. It serves AWQ and FP8 quantized models through OpenAI-compatible endpoints and can hot-switch between two models with automatic restore.

MeasureResultNote
Regeneration throughput14,200 to 15,100 / GPU-hrPieces of content per GPU-hour, measured
Grading throughput576 → 1,411 / GPU-hrRaised by tuning concurrency from 6 to 24 workers
Context window4,096 → 16,384 tokensSized with KV-cache arithmetic and a benchmark before adopting

This is the same discipline as my vLLM throughput work at the University of Illinois, applied to my own hardware: measure first, then change one thing.

Every number traces to a source

I built Skyrule with a deterministic Python chart engine underneath, exposed through a versioned FastAPI layer. The engine must reproduce 279 reference spans exactly for regression control. Above it runs a sourced-rule pipeline over a 76-title licensed corpus. The process starts with whole-chapter extraction, followed by independent verification from a second model, then a verbatim-quote gate, page re-checks, quarantine, and staged release into a rule store.

I built Skyrule to trace every number in the product to a rule, a page, and an engine event. On October 6, 2026, I released 4,256 verified rules for use.

The model proposes; code checks every claim

The system begins by analyzing the input to determine what it supports. A local model then generates claims one at a time, and code verifies each before the model writes a sentence. After the model writes, code checks again. I review everything before it is released.

I iterated the validator through seven versions from my own reviews, adding checks for truncated claims, unsupported causal leaps, attributing a trait to the wrong person, and claims the inputs do not establish. Every new check is tested before use three ways:

TestResultWhat it shows
Named defects8 of 8 caughtThe validator catches the failures I identified in review
Previously accepted claimsfalse-alarm rate reportedA stricter check does not silently reject good output
Mutation testing21 of 21 caughtDeliberately broken inputs are detected

A pilot on the 32B model showed that an over-literal check was rejecting acceptable text. I adjusted both the prompt and the check, which improved plan acceptance from 6 of 31 to 14 of 31. Usable output increased from about 690 to about 1,280 pieces per GPU-hour.

Grading 2.6 million pieces honestly

Grading the 2.6-million-piece library three times over was measured at about 5,600 GPU-hours and was not feasible. I designed a grading strategy that replaces this with statistical lot acceptance sampling using exact binomial plans with stated producer and consumer risk. It adds code checks on every piece and brief-level grading before expansion and includes a plan for a distilled grader.

I set each performance bar before testing and report results as a point estimate and Wilson 95% lower bound. For example, a precision gate passed at 84 of 96 (87.5%). An independent model labels claims in each batch, and its agreement with my verdicts is measured. Those labels then become a regression set for the validator.

Quality, security and data protection

Quality governance
I built a register of quality bars, each with proof set before measuring. The quality function can block with a written reason. A weekly review follows, and re-runnable evidence is required for every "done" claim.
Security & IP
I built a dedicated security and IP-protection function into Skyrule with the authority to block any merge or release that weakens a control. A weekly security review is part of the routine.
Privacy by design
Users' personal chart data is never sent to a cloud model and never appears in code, tests, logs or commits; fabricated fixtures only. Consent is the gate for storing anyone else's data
Rights
I maintain rights records and built a quote-permitted gate. The licensed book text remains outside the repository.
Engineering practice
I maintain 1,375 automated tests passing on the integration branch as of October 12, 2026, including known-bad controls that must fail. A release gate blocks any unapproved input changes.

Where it stands

Aug 14, 2026
Repository started: chart engine, test suite and versioned API
Aug to Sep 2026
Charters, handoff protocol and the multi-agent organization stood up; local-model role map measured
Sep 27, 2026
vLLM generation engine running with quantized models
Oct 1 to 2, 2026
Inference workstation commissioned; ownership-enforced agent scopes in place
Oct 3 to 6, 2026
Relationship model specified; rule pipeline run end to end; 4,256 verified rules released; precision gate passed
Oct 10, 2026
Brief-first generator built and piloted
Oct 11 to 12, 2026
Security and quality-governance functions stood up; validator v7; 1,375 tests passing

Next: The plan is to regenerate the library on the new generator, validate the automated grader to an 85% agreement bar measured at the Wilson 95% lower bound, and build consent-gated accounts with deletion and export. An invited beta of about ten people will open, followed by a pre-registered calibration study to fit the provisional weights to real outcomes. A public launch is planned for Q1 2027.

Personal ProjectClaude Code SubagentsvLLMQwen3-32B AWQFP8 / AWQ QuantizationPythonFastAPIpytestAcceptance SamplingWilson IntervalsMutation TestingRTX 5090
← Back to Portfolio