The
<Nerve Center/>
for Agentic Coding
Connect your agents, memories, conversations, and artifacts in one shared workspace. Bring your existing subscriptions, collaborate with your team, and continue work from anywhere.
I’ll create planning artifacts rather than code: a compact product/technical spec and implementation tickets for the vintage camera app. I’m going to inspect the workspace briefly so the specs match the project shape instead of assuming a stack.
The workspace is currently empty aside from Git, so the specs can define the app shape cleanly without reconciling an existing framework. I’ll keep the artifacts implementation-ready but not overfit them to a stack beyond what’s useful for execution.
I’ve created the artifact folders. Next I’m writing the spec as three linked pieces: initiative brief, product flows, and technical plan, followed by five execution tickets with clear dependencies.
The artifacts are written. I’m doing a quick validation pass now to make sure the files landed where Traycer expects and the ticket set covers the full requested app flow.
Created the Traycer specs and tickets for the vintage camera web app.
Specs:
- Vintage Camera Brief
- Core Flows
- Technical Plan
Tickets:
- Scaffold Foundation
- Camera Capture and Upload
- Vintage Filter Engine
- Preview and Export
- Retro Minimal Polish
The workspace itself is still clean; these are Traycer planning artifacts outside the repo.
I’ll use traycer:execute now and work through the tickets in dependency order. First I’m reading the execution instructions and the artifacts so implementation stays aligned with the plan.
The specs point to a sequential chain: foundation, sources, filter engine, preview/export, polish. I’m checking the ticket details and agent guidance, then I’ll dispatch implementation work in controlled batches.
Execution is mostly sequential because each ticket depends on the previous one. I’ll start with the foundation ticket in its own child agent, then review before continuing to the source and rendering tickets.
The foundation ticket is with a child implementation agent. While it runs, I’m going to keep the main agent free for review and orchestration instead of editing the same files concurrently.
The child agent hit an interactive trust prompt for the workspace. I’m going to unblock it by confirming this is the intended empty project folder, then continue the ticket flow.
I’ve sent the unblock message to the child agent. I’ll check its transcript again shortly; if the harness remains stuck, I’ll take over the implementation directly rather than letting execution stall.
The child harness is still stuck at the trust prompt, so I’m taking over implementation in this agent to keep execution moving. I’ll keep the same ticket order and update the ticket artifacts as work completes.
I’ve put the Vite/React foundation and the canvas filter module in place. Now I’m wiring the actual app behavior: camera permission/capture, upload validation, preset controls, live canvas preview, reset, download, and cleanup.
The app behavior and styling are now implemented in code. I’m going to install dependencies and run the build next; TypeScript will likely catch any browser API typing issues before I mark tickets complete.
npm install failed due to a missing file inside npm’s local cache, not because of the project code. I’m going to verify/repair the cache and retry the install.
The global npm cache has root-owned files, so I won’t change ownership of the user’s home cache. I’ll use a project-local npm cache for this install and build instead.
Dependencies installed using the local cache. I’m running the production build now and will fix anything TypeScript or Vite surfaces.
The first build found expected scaffold gaps: React type packages were missing, and the generic canvas source dimensions helper needs to handle newer DOM source types. I’m patching those now.
Type declarations and the dimension helper are fixed. I’m reinstalling with the same project-local cache, then I’ll rerun the build.
The production build passes. I’m starting the dev server now so I can do a quick runtime check and leave you with a usable local URL.
The dev server is running on port 5174 because 5173 was already occupied. I’m checking the served HTML and npm audit details before closing out.
The server responds correctly, and production dependency audit is clean. The build left TypeScript build artifacts in the repo because of the initial TS project reference shape, so I’m tightening the config and ignoring generated directories before the final pass.
The TypeScript config now keeps generated build metadata out of the source tree. I’m removing the generated artifacts I created and rerunning the build once more against the cleaner setup.
I removed only generated artifacts from this implementation pass. Next is the clean build and status check.
The clean build passes. I noticed one product-level polish issue during review: the empty state still mounted a canvas, which could affect layout before an image exists. I’m tightening that preview rendering and canvas sizing now.
That preview issue is patched. I’m running the final build check and then I’ll update the ticket statuses in Traycer.
Build and server checks are good. I’m marking the five implementation tickets complete now and recording the small execution drift: I implemented directly because the child harness was blocked by an interactive trust prompt.
Tickets are marked complete and execution notes are recorded. I’m doing one last repository status check so the final summary accurately reflects what changed.
The source tree is cleanly scoped to the new app files. I’m checking the full audit once so I can distinguish runtime risk from dev-tool advisories.
The full audit flags Vite/esbuild dev-server advisories and says the fix is a Vite 8 upgrade. Since this is a greenfield app, I’m going to apply the dev-tool upgrade and rerun the build rather than leave known high-severity audit findings.
The Vite/tooling upgrade removed the audit findings. I’m running the final build one more time because that was a breaking-major upgrade according to npm.
Build and audit now pass cleanly on Vite 8. I’m restarting the dev server so the URL serves the final dependency set, not the earlier Vite process.
The original dev server process is still bound to 5174 and its stdin cannot be reused, so I’m stopping that process directly and starting a fresh one.
The fresh Vite 8 dev server is back on http://localhost:5174/. I’m doing the final status check now.
Implemented the vintage camera web app from the Traycer tickets.
What changed:
- Added a Vite 8 + React + TypeScript app.
- Built camera capture, upload, retake/clear, and stream cleanup.
- Added 8 canvas-rendered vintage filters with intensity, grain, vignette, warmth, contrast, and exposure controls.
- Added PNG download of the processed preview.
- Styled the app with a retro minimal responsive theme.
- Marked all five Traycer tickets complete and added execution notes.
Run/checks:
npm run buildpasses.npm auditreports0 vulnerabilities.- Dev server is running at
http://localhost:5174/.
Note: the child implementation agent was blocked by an interactive workspace trust prompt, so I completed implementation directly and recorded that in the execution notes.
I’ll use traycer:review and review this as a changeset, focusing on correctness, browser behavior, and alignment with the planned camera/upload/filter/export flows.
Because the app files are all new and untracked, git diff is empty. I’m reading the new source files directly and tracing the main flows against the Traycer specs.
I’ve found a few review candidates around first-render timing, camera cancellation, and fallback upload cleanup. I’m validating them against actual runtime behavior and package/config files before writing the review artifact.
The review is converged: I have two actionable correctness findings, both tied to real user flows rather than cosmetic cleanup. I’m writing the Traycer review artifact now.
Found 2 actionable issues and wrote the review artifact here:
Vintage Camera Changeset Review
Findings:
- High: filter intensity currently uses canvas draw opacity, so low intensity/Neutral makes the image transparent instead of blending back toward the original.
- Medium: a pending camera permission request can resolve after the user uploads or clears, then unexpectedly switch the app back to camera mode.
Verification during review:
npm run buildpassed.npm auditpassed.- Reviewed source directly because the app files are currently untracked, so
git diffis empty.
I’ll use traycer:execute for the review fix pass. The scope is narrow now: repair the filter intensity render path and add cancellation protection around pending camera requests.
I’m patching the rendering path so the canvas is always opaque original pixels first, then the filtered result is blended on top by intensity. At the same time I’m adding a camera request id guard so stale permission results are ignored and stopped.
The camera race guard is in place. I’m now patching the filter renderer so intensity behaves as a proper blend rather than alpha fading the whole output.
I spotted one edge case in the new race guard: abandoning a pending camera request should also clear the loading state immediately. I’m tightening that before running verification.
Both fixes are patched. I’m running the build and audit now, then I’ll record a concise fix note in Traycer.
Build and audit pass. Since the app files are still untracked, git diff cannot show the patch; I’m checking status and writing the fix note against the review findings.
The code-level checks are good; the previous dev server is no longer running, so I’ll restart it after recording the fix note.
The fix execution note is recorded. I’m restarting the dev server now and checking that it responds.
Fixed both review findings.
Changes made:
- Updated src/filters.ts so intensity now blends a filtered offscreen canvas over a fully opaque original image.
Neutral/zero intensity no longer creates transparency or darkened output. - Updated src/App.tsx with a camera request id guard. Stale camera permission results are ignored, stale streams are stopped, and upload/clear/source replacement cancel pending camera state cleanly.
- Added a fix note: Review Fix Execution
Verification:
npm run buildpassed.npm auditpassed.- Dev server is running at
http://localhost:5174/.
Scaffold the Vintage Camera App Foundation
Scope
Create the initial client-side app foundation for the vintage camera tool.
Included:
- Scaffold a Vite + React + TypeScript app, unless execution confirms a different user preference.
- Add baseline app shell, styling structure, and responsive layout primitives.
- Establish the main workspace layout: preview area, source actions, filter controls, and export area.
- Add retro minimal theme tokens for color, spacing, typography, borders, and focus states.
Out of scope:
- Fully functional camera capture.
- Full filter rendering engine.
- Production deployment.
Governing Specs
vintage-camera-appvintage-camera-app/core-flowsvintage-camera-app/technical-plan
Dependencies
None.
Verification
- App installs and starts locally.
- Main screen is the usable workspace, not a landing page.
- Layout remains coherent on mobile and desktop widths.
I’ll spin up separate Codex and Claude agents so they can independently inspect the app and extension, then I’ll coordinate their findings into a concise review. First I’m checking the workspace shape so I can give them precise review instructions.
The repo is a compact Vite app, so the review agents can inspect the whole surface without a separate worktree. I’m creating one Codex reviewer and one Claude reviewer against the same workspace, with instructions to focus on feature coverage and usability for both the web app and extension.
Both agents are created. I’m sending them separate review briefs now so their findings are independent rather than one echoing the other.
Use the traycer:review skill. Review the repository at /Users/alex/projects/vintage-camera from a product/usability perspective. Focus on the feature set and UX of both the web app…
Please conduct an independent feature and usability review of the repository at /Users/alex/projects/vintage-camera. Review both the web app and any browser extension surface/confi…
Claude went idle before replying, so I’ll recover what I can from its transcript and keep the Codex review running. I’ll also do a quick local pass myself so the final review is not blocked on one agent.
The idle Claude transcript only shows it received the task, with no review output. I’m checking the UI and build files directly now, then I’ll either use the Codex agent’s response if it arrives or summarize from my own pass.
There is no browser extension manifest or extension source in the repo; it’s only a Vite web app plus an existing dist. I’m doing one build/runtime check now to separate code-level risks from actual breakage.
The production build passes. I’m polling the Codex reviewer once more; if it has not produced findings, I’ll close with the local review and note the Claude idle failure transparently.
Codex is mid-review but has not returned a completed findings list yet; Claude still has no useful output. I’m sending one follow-up nudge on both open requests, then I’ll synthesize from any response plus my verified local findings.
Please finish the review now with prioritized findings. Keep it concise; include file/line references and note that no extension manifest/source exists if confirmed.
While they run, I have enough confirmed evidence for the main review: the extension request is currently unsupported by the repo, the web app builds, and the primary UX gaps are around camera switching, export expectations, and accessibility/status feedback.
Launched both review agents:
- Codex agent:
9b06c4d1-2f75-4e83-a1c6-d84f37205ea9 - Claude agent:
3f9a1b57-4c20-4ade-9d61-7b0e5a24cf83
Claude went idle without returning findings. Codex started the review and confirmed the same core context I verified locally: this repo is a Vite React web app, not a browser extension. I also ran a local review and npm run build, which passes.
Key Findings
-
No extension exists in the repo There is no
manifest.json, popup/background/content script, extension build target, or extension packaging script. The app only has Vite scripts in package.json and a plain React/Vite config in vite.config.ts.Recommendation: if an extension is required, add a real extension entrypoint, manifest, permissions, popup/options UX, and a separate packaging script.
-
Live camera mode can leave stale edit/export actions active If a user has an image loaded and then opens the camera,
sourceremains set while the UI shows the live video. BecausehasImageremains true, filters and Download stay enabled even though the visible preview is the camera feed. Download then exports the previous hidden canvas, not what the user sees. See App.tsx, App.tsx, and App.tsx.Recommendation: disable filter/export controls while
mode === "camera", or split “loaded image” from “active preview” state more explicitly.
-
Export silently resizes large images Rendering caps the longest side at
1800pxin filters.ts. That may surprise users expecting full-resolution downloads.Recommendation: show export size, offer full-size export, or label the current output as optimized.
-
Camera switching is discoverability-light The switch-camera control is icon-only and enabled even before a camera session exists in App.tsx. It has an accessible label, but visually it is not obvious.
Recommendation: show it only during live camera mode or add clearer visible affordance on mobile.
- Feature gaps for a photo editor The core workflow works: camera/upload, presets, sliders, neutral/reset, download. Missing expected usability features include before/after preview, undo history, crop/rotate, drag-and-drop/paste upload, format/quality choice, and visible output dimensions.
No files were changed. Verification: npm run build passes.
Codex reviewer finished after my summary. Its findings align with the local review, and it added a Traycer artifact here:
product-usability-review
Notable additions from the agent:
- Camera error handling is too broad: all failures become “permission blocked,” even for no device, insecure context, busy camera, or constraint failures.
- First-use discoverability is weak because all filters/sliders are disabled before adding a photo and there are no sample previews.
- Filter selection should use radio/radiogroup semantics instead of independent pressed buttons.
- There is no UX regression test coverage beyond
npm run build.
No code changes were made; npm run build passed.
Claude completed as well and created a second artifact:
feature-usability-review
Its review matches the main conclusion: there is no extension implementation. It also added a few useful product-level findings: no live filtered camera preview, Reset/Neutral ambiguity, likely slider jank on large images, non-installable PWA state, and front-camera preview not mirrored.
So the combined review set is now captured in two artifacts:
- product-usability-review
- feature-usability-review
No repository files were changed.
TRUSTED BY ENGINEERS AT

Bring your own
Subscription
Use the coding agents you already pay for. Traycer runs Claude Code, Codex, OpenCode, and Cursor side by side in one workspace.
Agent-2-Agent
communication
Agents can talk to each other like they have walkie-talkies: ask questions, request reviews, and hand off work across separate chats.


Shared Context, Any Model
Every Task has its own shared filesystem, artifacts, history, and working context. Switch models mid-chat without losing the thread.
Built-In Skills
Traycer ships with reusable workflows for planning, debugging, reviewing, debating, documenting, and breaking work into tickets.


Multiplayer workspaces
Humans and agents work in one shared space. Teammates can inspect tasks, comment on artifacts, and steer work without rebuilding context.
Driving productivity at scale
550K
tasks created
240K
Installs on Open VSX
40K
Installs in VSCode
What developers are saying
Hear from more than 100K users who have transformed their workflows with Traycer.
"Traycer has a level of understanding and functionality that enables deeper technical applications, something other tools just don't deliver. As a non-technical founder, I appreciate how Traycer tackles exact issues, from directory management to setting up external services making it a game changer for my startup."
Alan Knudson, Founder of BatteryBuilds
"Traycer's User Interface is top notch. Then the plan generation to let you know what it intends to do, which I can correct before it writes the code. I deployed a search feature with filters in my react app with Traycer without writing a single line of code myself and everything just worked seamlessly in first try."
Chinedu, Fullstack Software Engineer
"I've spent multiple years assessing the latest Generative AI companies and building solutions alongside them. Traycer has been one of the most well received tools by our complex application design teams, and I personally use it religiously"
Jeremy Alston, Founder of Agents-Space.com
"I have been using multiple tools till now. Claude code, Augment code, Cursor, Windsurf, Cline, Codex CLI, and a few more other tools! For the complex tasks, Traycer is the best tool currently in the market. The multi agent mode is great at making the plan and understanding the context better. Kudos to you and your team!"
Sathwikkuncham, Senior Engineer
"Traycer delivers a practical solution for AI-driven coding challenges by breaking down high-level intents into manageable tasks and implementing structured guardrails for quality control. Traycer is the difference between just getting something to work and implementing a deployment to work robustly."
Christoph, CEO of Athlea
"I can say with 100 percent certainty that we would not be here right now without Traycer. On go live day we rebuilt our database, webhooks and APIs and switched payment processors entirely. It would have been impossible to get this much code done this fast without it. Traycer Epic Mode is how we did it in just 6 days, work that took us 5 months the first time."
Zachary Sura, Founder at IQON
"Traycer has unlocked a new level of productivity for me, the ability to have multiple agents plan and execute tasks asynchronously makes me feel more like an Orchestra Conductor than Engineer - what a time to be alive"
Janyk Theron, Head of Engineering
Choose the perfect plan
for yourself
Whether you're just starting or looking to increase your productivity, Traycer has a plan that fits your needs.
FreeFor individuals
$0Free forever
Bring your own coding agent.
DownloadIncludes:
- Works with any coding agent (Claude Code, Codex, Cursor, Opencode, ...)
- AI planning & task tracking
- Unlimited agent sessions
- Remote hosts
- Mobile app
- No token metering
- No inference credits required
- Agent to agent communication
SyncFor teams
$16/user/month
Billed yearly
Everything in Free, for your whole team
Get SyncIncludes:
- All Free features plus
- Cloud Sync
- Device switch
- Team collaboration
Optional, pay as you go
- Traycer Credits - Run models through Traycer, billed pay as you go
- Cloud sandboxes - Additional cost
Got questions?
We've got answers.
Find answers to common questions about Traycer and its capabilities.
Running models through Traycer is paid with Traycer Credits, billed by use, and cloud sandboxes cost extra. Nothing else is metered on Free. More detail can be found here:https://docs.traycer.ai/account/pricing











