Canoryn is an agent workspace — chat sessions that run like a coding agent (tool cards, evidence, consent) with a project workbench beside the turn, plus Build with chat on a live canvas of browsers and terminals. Voice is just another way in. The reusable work stays visible as a .cryn file you own.
Chat like a coding agent
Durable sessions with a real tool loop — you see steps, files, and shell evidence as it works, and approve what needs consent.
Chat builds the workflow
Describe a workflow beside the canvas. Nodes appear while you watch — edit one step without rebuilding everything.
Reopen it exactly as you left it
Live browsers and terminals on the canvas. Double-click a .cryn from Finder and the board comes back.
Build with chat
“Build a workflow that briefs me every weekday at 9am.”
Trigger
Weekdays · 9:00 AM
Your model
Brief from calendar
Action
Speak the brief
Most AI apps hide the work behind a spinner. Canoryn shows it — in agent chat (tool cards, evidence, consent) and on the Architect canvas (nodes, live pages, terminals). Voice is another way in; the reusable work stays on the canvas.
Build with chat
Describe what to build or change in chat docked beside the canvas. Canoryn edits the workflow — it doesn’t just run a one-off reply.
Live browsers and terminals on the canvas
Browser nodes that behave like a browser. Terminals agents can read. Point at a page element, watch it change, capture a region for vision.
Play to test, Enable to ship
Draft freely with Play. Enable when schedules, CLI, or external agents should run the same workflow.
Portable .cryn files
Every board is a file you own — save, version, double-click from Finder, and the session comes back.
Same chrome as the app: sidebar toggle and chat title on the top bar; File / Review / Terminal / Browser tabs across the workbench header. Review-first — not a second IDE.
Keep menu label visible when narrow
Today
cedar
Keep menu label visible when narrow
Just now
Stage review hunks before commit
42m
Wire project folder into prompt dock
2h
cedar-notes
Draft workbench walkthrough
Yesterday
Previous 7 days
cedar-site
Landing mock for desk layout
Mon
Alex Rivera
Community License
Canoryn
Cause. ViewThatFits drops to the icon-only branch under ~140pt. Fix: always render the label with lineLimit(1) + truncationMode(.middle).Allow file.apply_patch?
file.apply_patch
ModelMenu.swift
− HStack { Image(systemName: "cpu") }
+ Text(label).lineLimit(1)
+ .truncationMode(.middle)
Do anything
Cedar
Features
Blueprint
Desk
PromptDock.swiftM
PromptContextBar.swift
ModelMenu.swiftM
Side
SideTabs.swiftM
SideChrome.swift
IconGlyph.swift
App
DeskApp.swift
Info.plist
1import SwiftUI23/// Session-scoped model menu. Never mutates global provider tiers.4struct ModelMenu: View {5 let sessionID: UUID6 let isTurnRunning: Bool7 let onError: (String) -> Void89 @EnvironmentObject private var store: DeskStore10 @Environment(DeskSettings.self) private var settings1112 private var session: DeskSession? {13 store.sessions.first { $0.id == sessionID }14 }1516 private var label: String {17 guard let session, let model = session.pinnedModel else { return "Auto" }18 guard profiles.contains(where: { $0.id == session.pinnedProfileID }) else {19 return "Unavailable · \(model)"20 }21 return model22 }2324 var body: some View {25 Menu {26 Button { updatePin(profileID: nil, model: nil) } label: {27 selectionLabel("Auto (recommended)", selected: session?.pinnedModel == nil)28 }29 Divider()30 ForEach(profiles) { profile in31 Menu(profile.name) {32 ForEach(models(for: profile), id: \.self) { model in33 Button { updatePin(profileID: profile.id, model: model) } label: {34 selectionLabel(model, selected: session?.pinnedProfileID == profile.id35 && session?.pinnedModel == model)36 }37 }38 }39 }40 } label: {41 // Always show truncated label — never collapse to icon-only.42 HStack(spacing: 4) {43 Text(label)44 .font(.system(size: 11, design: .monospaced))45 .lineLimit(1)46 .truncationMode(.middle)47 Image(systemName: "chevron.down")48 .font(.system(size: 8))49 }50 .foregroundStyle(.secondary)51 .padding(.horizontal, 8)52 .padding(.vertical, 4)53 .background(Color.primary.opacity(0.04))54 .clipShape(RoundedRectangle(cornerRadius: 6))55 }56 .menuStyle(.borderlessButton)57 .frame(maxWidth: 160)58 .disabled(isTurnRunning)59 .help(helpText)60 }6162 private func updatePin(profileID: UUID?, model: String?) {63 Task {64 do {65 try await store.setPinnedModel(profileID: profileID, model: model, sessionID: sessionID)66 } catch {67 onError(error.localizedDescription)68 }69 }70 }71}Native macOS window · 14″ proportions (1512×982)
Session projects
Attach folders to a chat. The agent and the work panel share that tree.
Typed work panel
File, Review, Terminal, Browser — preview tabs, pin, switch without killing shells.
Review beside the turn
Lazy diffs, stage or discard, commit — without leaving Chat.
Ask about a selection
Select lines → draft a path:line citation into the composer.
Same live surfaces
Terminal and browser use the same controllers as the Architect canvas.
Project-scoped consent
In-project reads by default; writes and shell ask. Unclassified fails closed.
Deep dive in the docs: Chat workbench · Review workbench.
See the shape of Canoryn: author on the canvas, run with your models, act on the Mac with consent.
Click to play interactive demo workflow
Describe the workflow — nodes appear on the canvas while you watch.
Calendar, media, system speak, and more — with consent, not a black box.
Speak to Canoryn when you want — the reusable work lives on the canvas.
Build with chat authors the workflow. The Chat workbench keeps a project open beside the turn. Your models power the steps. macOS actions ask before irreversible work. Voice is optional.
Trigger
Weekday 9am
AI Inference
Llama 3.2 (Local)
Action
Run OS Command
Context from your Mac, models you choose, and actions that ask before they do something irreversible — the same accountable loop in agent chat and on the Architect canvas.
Canoryn understands the active window, senses application boundaries, and captures workflow context in real time—all processed directly on your machine.
Your search history, past commands, and personalized preferences are saved locally on your Mac. Canoryn remembers how you work and adapts to your routines using a secure, local database that never leaves your machine.
Canoryn breaks down complex tasks into a logical sequence of steps. It plans the workflow, executes each step securely, and double-checks the results to guarantee a successful outcome.
You are always in complete command. Canoryn never acts autonomously, reads your clipboard, or captures your screen without your explicit consent. Customize all safety boundaries in the Settings Hub.
Use Build with chat to design the workflow. Run it with Play. Enable it when you want schedules, CLI, or other agents on the same workflow — with honest depth per app, not fake “fully integrated” claims.
Attach a session project, let file cards land as preview tabs, stage or discard in Review, then keep talking — without leaving Chat.
Several live Browser Nodes — real pages you scroll and click — arranged how you like. Reopen the saved workflow tomorrow and the session is back.
Build with chat designs the workflow — schedule trigger, calendar context, speak a short brief — then you Enable it to run on its own.
Three levels of support — so you know what's a real integration versus open / assist.
Dedicated actions — more than launch.
Real WebKit pages in Browser Nodes — scroll, click, profiles, extract.
Launch apps, open URLs, or drive UI when you grant Accessibility.
Keys in Keychain
Provider API keys stay in the macOS Keychain. Sensitive actions still go through consent — Enable publishes a workflow; it doesn't silently bypass your gates.
Canoryn doesn't lock you into a cloud subscription. Plug in an API key for cloud speed, or point it to a local model for complete privacy. The app is as powerful as the model you connect.
Use your own API keys from any provider. We never see or store them.
Run Ollama or MLX models entirely on your Mac. Nothing leaves your machine.
Connect to OpenAI, Anthropic, or Gemini for instant responses.
An upcoming release will ship ready-made workflow blueprints you can import into the visual editor, tweak, and run locally. Here's a taste of what's on the way.
Sets Do Not Disturb, closes distracting apps, and silences notifications until your focus timer ends.
Extracts dates from clipboard notes and registers them to Apple Calendar.
Searches local folders, extracts text, and summarizes contents with local Ollama.
.cryn JSON file.Canoryn is built as a local-first macOS app. Your data stays on your Mac unless you choose a cloud provider. The beta is free while we finish testing and improve reliability.
Distributed directly. Launch easily via right-click to bypass macOS Gatekeeper verification.
Core workflows run on your machine with explicit permissions and clear controls.
Connect your own model providers when needed instead of locking into one managed stack.
Canoryn by Procode AI Labs
Public beta, no sign-up wall, direct DMG download. You can review ourPrivacy PolicyandTermsbefore installing.
Free beta. No sign-up. Download the DMG, open Build with chat and describe the first workflow.