Canopy-258M-R3 v3: Ultra-Accelerated Edge Browser Agent & MoE Flagship
Canopy-258M-R3 v3 is an ultra-efficient 258.56M parameter Recurrent Mixture-of-Experts (MoE) model optimized for high-speed edge computing, tool synthesis, and browser automation.
v3 introduces the Hybrid Input Protocol and Event-Driven DOM Synchronization, achieving a 2.02x speedup across real-world browser batteries and a 5.1x acceleration (500%+) on multi-step interactive forms.
What is New in v3
Hybrid Input Protocol (
ActionExecutor):- Automatically differentiates static form fields (passwords, emails, registration, multi-step wizards) from reactive stream targets (search autocompletes, live comboboxes, typeaheads).
- Static Form Inputs: Uses atomic CDP
fill()with standard DOMinputandchangeevent dispatch, dropping typing latency from >1,400 ms down to <40 ms (35x acceleration). - Interactive Streams: Automatically detects search/combobox targets and preserves natural Gaussian typing cadence ($\mu=35 ext{ms}$) so reactive debounce and AJAX handlers populate suggestions properly.
- Developer control supported via
BrowserAction(stream_input=True|False).
Snappy Cubic Bézier Motor Kinematics:
- Calibrated cubic Bézier trajectory duration (80 ms – 220 ms, 8–16 steps) with smoothstep ease-in/ease-out curves and sub-pixel micro-jitter.
- Preserves human motor telemetry to avoid synthetic robotic detection while eliminating sluggish travel lag.
Event-Driven Scroll Mutation Synchronization:
- Streamlined wheel step dispatch with immediate
scrollandresizewindow event notifications. - Instantly triggers
IntersectionObserverhandlers and dynamic infinite scroll listeners without stalling.
- Streamlined wheel step dispatch with immediate
Structured Data Scraping & Web Extraction Engine:
- First-class structured parsing for tables (2D row/column matrices), lists, and individual element attributes via
controller.scrape_table(),controller.scrape_element(), andcontroller.scrape_page().
- First-class structured parsing for tables (2D row/column matrices), lists, and individual element attributes via
Visual Step Logging & Audit Receipts:
- Step-by-step high-resolution PNG screenshot auditing with illuminated green bounding boxes on target marks, glowing red coordinate reticles, and top-left HUD step badges.
Performance Benchmarks: v2 vs v3 (7-Scenario Battery)
| Test Scenario | Modality | v2 Latency | v3 Latency | Latency Reduction | Speedup |
|---|---|---|---|---|---|
| 1. Dropdowns & Multi-Select | 3 Selects + 1 Button Click | 434.6 ms | 375.0 ms | -59.6 ms | 1.16x |
| 2. Modal Dialog Overlays | Open Modal + Email Entry + Save | 1,893.8 ms | 497.1 ms | -1,396.7 ms | 3.81x |
| 3. Paginated Data Tables | Next Page + Row Approve Action | 499.6 ms | 433.1 ms | -66.5 ms | 1.15x |
| 4. Infinite Scroll Hydration | Wheel Scroll + Checkpoint Ack | 1,484.0 ms | 984.1 ms | -499.9 ms | 1.51x |
| 5. Radio & Checkbox Toggles | Radio Sel + Webhook Check + Save | 935.7 ms | 749.9 ms | -185.8 ms | 1.25x |
| 6. Autocomplete & Typeahead | Stream Search + Suggestion Click | 715.6 ms | 465.6 ms | -250.0 ms | 1.54x |
| 7. Multi-Step Form Wizard | 2-Stage Multi-Field Flow + Finish | 2,381.4 ms | 433.3 ms | -1,948.1 ms | 5.50x (550%+) |
| Cumulative Battery Total | 7 Scenarios / 20 Actions | 8,344.6 ms | 3,938.1 ms | -4,406.5 ms | 2.12x FASTER |
Complex Chained Actions Benchmark (Multi-Stage Orchestration)
| Chained Complex Action Scenario | Total Actions | Execution Latency | Verdict |
|---|---|---|---|
| Chain 1: E-Commerce Multi-Stage Cart & Checkout | 12 actions across 3 stages | 1,774.4 ms | ✓ PASS |
| Chain 2: ETL Bulk Filter & Modal Dispatch | 7 actions | 1,313.8 ms | ✓ PASS |
| Chain 3: Spatial Grounding & Dynamic Extraction | 4 actions | 453.0 ms | ✓ PASS |
| Live Public Web Navigation (Hacker News) | Real Network | 577.7 ms | ✓ PASS |
| Speculative Action Chunking Speedup | Multi-Field Form | 1.50x Faster (224 ms vs 336 ms) | ✓ PASS |
Model Architecture Specifications
| Hyperparameter | Value | Description |
|---|---|---|
| Total Parameters | 258,555,654 | Exact standalone weights with tied embeddings |
| Active Parameters | ~112,000,000 | Active parameter compute per token |
| Recurrent Visited Layers | 18 effective layers | 3 Prelude + 6 Recurrent (visited 2x) + 3 Coda |
| MoE Routing | Top-2 of 8 Experts | Dense first 3 layers, MoE middle/coda layers |
| Tokenwise Thought Bus | 192 channels | Auxiliary persistent reasoning state across recurrent passes |
| Context Window | 2,048 tokens | RoPE position embeddings |
| Vocabulary Size | 49,152 | Byte-level BPE tokenizer (Cosmo-2) |
Quickstart: Python Inference & Web Automation
1. Model Loading
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "psikosen/canopy-258m-r3-v3"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto",
)
prompt = "<|im_start|>user\nWrite a Python function to extract all email addresses from a web page.<|im_end|>\n<|im_start|>assistant\n"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.2)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
2. Fast Browser Agent Execution (miniswardbower)
import asyncio
from miniswardbower.browser.controller import BrowserController
from miniswardbower.core.config import BrowserConfig
from miniswardbower.core.schemas import BrowserAction, BrowserActionType
async def run_agent():
controller = BrowserController(BrowserConfig(headless=True))
await controller.start()
try:
await controller.goto("https://news.ycombinator.com")
# 1. Scrape structured data
page_data = await controller.scrape_page()
print("Page Title:", page_data.get("title"))
# 2. Fast atomic fill
await controller.execute_action(
BrowserAction(op=BrowserActionType.TYPE, target="input[name='q']", text="LLM Edge", stream_input=False)
)
await controller.execute_action(
BrowserAction(op=BrowserActionType.PRESS, key="Enter")
)
finally:
await controller.stop()
asyncio.run(run_agent())
License
Released under the Apache 2.0 License.