Local project ownership is Dyad's clearest advantage
Dyad packages prompt-driven app building as a Mac and Windows desktop application. Projects stay on the local machine, and users supply their own AI keys. That changes the ownership model compared with a hosted builder: files are accessible outside the tool, the model provider can be changed, and leaving Dyad does not require exporting a project from somebody else's workspace.
Local does not mean self-contained. A remote model still receives whatever context Dyad sends under the provider's terms, and publishing or database integrations reach external services. The practical privacy gain is control over the project and provider choice, not an automatic promise that code never leaves the computer. A buyer should map each enabled integration before putting client code into a session.
The 2,167 MB install is heavier than the download pitch
Our commit b1e9d26 checkout contained 3,116 files, about 522,948 lines of source, and occupied 30.3 MB. Installing its source dependencies took 85 seconds, added 1,585 npm packages, and consumed 2,167 MB. The build then succeeded in 143 seconds. That is workable for contributors, though it is a substantial dependency tree for a desktop tool.
End users get a simpler route: the README points to downloadable Mac and Windows builds and says no sign-up is required. Development is more involved. The contributing guide identifies Dyad as an Electron app, requires a userData directory for its SQLite database, and documents npm scripts for startup, database migrations, pre-commit hooks, unit tests, builds, and end-to-end tests.
What happened when we ran it
Our Vitest command failed after 333 seconds. It reported 6,332 passed, 9 failed, and 9 skipped out of 6,350. The tail also reported 64 failed test files and 562 passed files. A large majority passed, but the command still returned exit code 1, which is the result a pull request or release job has to handle.
The visible failures were in src/__tests__/proxy_server_csp.test.ts, covering how the proxy preserves an application's Content-Security-Policy. Several cases ended with connect ECONNREFUSED against temporary 127.0.0.1 ports. The supplied log does not establish why the connections were refused, so we cannot blame container networking, a race, or a missing service. We can say the suite did not complete cleanly in the stated sandbox.
Npm audit found 80 known vulnerabilities in the installed packages: 7 critical, 54 high, 14 moderate, and 5 low. That count does not prove that every advisory is reachable from a packaged desktop build. It does make triage necessary. With 1,585 packages and an Electron application handling model keys, project files, local processes, and network calls, dismissing the audit as development-only would be careless without tracing each path.
Automatic edits need a fail-closed answer
Issue 4383 asks whether Dyad can automatically apply a complete action tag after the underlying model stream later ends because of a token limit, provider error, content filter, abort, or unknown state. The report requests testing through the actual auto-apply path and says accumulated multi-stream responses also need coverage. It does not claim the bug is confirmed; it defines a security-sensitive question that remains open.
That distinction matters for buyers. AI output can look syntactically complete even when generation ended abnormally. Until the behavior is resolved, keep auto-approval off for valuable repositories or put generated changes behind Git review and application tests. Release v1.12.0 added pre-commit hooks before agent checkpoints and work on agent delegation safety, which is useful movement, but it does not answer the separate auto-apply question by itself.
Provider and Windows bugs can stop the desktop flow
One open report shows a provider switch ending in an API error because a call ID exceeded the receiving service's 64-character limit. The issue asks for a better error message rather than documenting a general provider outage. Still, it is a reminder that provider interchangeability has protocol edges. Test the exact model gateway, fallback, and conversation history you expect to use.
Windows has current rough spots too. Issue 4359 reports more than 10 localhost requests per second, followed by a frozen interface even when the machine was offline. Two other August reports describe a Squirrel auto-update 404. Individual reports need reproduction, but a team deployment should validate installation, updates, sleep and resume, offline startup, and proxy behavior on the Windows image it manages.
The repository has two license zones
The README says code outside src/pro is Apache-2.0 and code inside that directory uses the Functional Source License 1.1 with an Apache-2.0 future license. Contributors to src/pro agree to that license. This split is easy to miss if someone sees the open-source label and assumes one permissive license covers the complete desktop product.
The project was pushed on August 26, 2026, two days after v1.12.0. GitHub listed 21,318 stars and 283 combined open issues and pull requests. Same-week releases and active triage indicate strong maintenance, while the issue volume fits a fast-moving product. Dyad is worth a local trial. Its failed tests, audit findings, safety question, and license boundary argue for a trial with controls, not immediate standardization.

