Connect your database, or upload a dump of it, so plans know its real structure. Upload reference
files, including PDF, Word, Excel and PowerPoint, and choose which ones each task uses. Run one task
across several repositories. And protect your account with two-factor sign-in.
Live database structure
Admins can connect a PostgreSQL, MySQL/MariaDB, Microsoft SQL Server / Azure SQL or MongoDB database to a repository under Repository → Settings → Live database. Plans then know your real tables or collections, columns, keys and indexes.
Dualzo reads the structure only, never your rows or documents. It needs a read-only login and refuses any login that can write.
A step-by-step guide on the form shows how to create a read-only login and make your database reachable.
Connecting needs two-factor sign-in and a fresh code. TLS is required, and private network addresses are refused.
For MongoDB, paste your connection string. Optional sampling learns field names and types from a few documents and discards the values. It's off by default.
For SQL Server, Azure SQL and Azure Synapse, use a SQL login with a password. The login only needs VIEW DEFINITION, which shows the structure and none of your rows.
The structure is read again every night, or whenever you click Refresh schema. If that keeps failing, admins get an email.
Passwords are encrypted, never shown again, never logged and never sent to the AI. Disconnecting deletes them.
Reference files
Admins can upload specs, schema dumps and data samples to a repository under Repository → Settings → Reference files. You're also offered this right after connecting a repository.
Upload text files (txt, md, csv, tsv, json, yaml, xml, sql and log, in UTF-8) up to 1 GB each, and PDF, Word, Excel and PowerPoint files up to 10 MB each. Dualzo reads the text inside them.
Each repository holds up to 1 GB of files, with no limit on how many. Pick many files at once and they upload three at a time.
Scanned PDFs, password-protected files and older .doc, .xls and .ppt files can't be read. The reason is shown next to the file.
Files upload straight from your browser to private, encrypted storage. Dualzo checks the whole file, hides secret-looking values, and never runs a file or serves it back.
When you create a task, tick the reference files it should use. The task reads the beginning of each file you tick.
The task page lists the reference files the task uses.
Database dumps
Upload a database dump as a reference file and Dualzo reads its structure from the whole file, up to 1 GB: tables or collections, columns or fields, keys and indexes.
Works with .sql dumps and scripts from PostgreSQL, MySQL/MariaDB, SQLite, SQL Server and Oracle, and with MongoDB's mongodump metadata, JSON or CSV files of documents, MongoDB Compass schema files and $jsonSchema validators.
Views are read too, with their column names.
The data rows are skipped and never stored. A file that held data is deleted once its structure is saved, and stops counting towards your storage.
Tasks get the structure with the tables most related to the change first, just like a live database connection.
Binary backups such as .dump, .bak, .dmp and .bson are refused, with a message saying which text file to upload instead.
Tasks across several repositories
One task can now change up to 5 connected repositories, for example an API and the frontend that calls it. Add the extra repositories on the New task form.
Dualzo plans the change across all of them and validates each repository with its own commands. A repository whose validation commands aren't confirmed yet can't be added.
Each repository gets its own pull request, and each pull request lists the others so you can review and merge them together.
The task page groups the changes by repository. The approval email and the executions list show which repository each part belongs to.
A task across several repositories always opens pull requests, even when a repository is set to commit directly. Scheduled tasks still use one repository.
Two-factor sign-in
Turn on two-factor sign-in under Settings → Security. Scan the QR code with an authenticator app such as Google Authenticator, 1Password, Authy or Microsoft Authenticator, or type in the setup key.
After that, signing in asks for the 6-digit code from your app. If you lose your phone, use one of your recovery codes. You can generate fresh ones at any time.
Until you turn it on, a reminder appears in the app. You can dismiss it for the session.
Better plans
Plans no longer include tasks that only run your tests, linting or build. Dualzo already runs your confirmed validation commands after every task.
For a repository with no test command, plans no longer add or rely on tests. Each acceptance criterion is something that can be checked by reading the changed code.
Text files you attach to a task (such as .txt, .md, .csv, .json, .yaml and .xml) are now given to the AI while it writes the code, not only while it plans. PDFs and images are still used for planning only.
Environment variables
Each variable in Repository → Settings now shows whether it's saved: Saved, Not saved while you have unsaved changes, or Needs a name when a value has no name. A message confirms each save.
Other improvements
Repository settings are laid out in two columns, so there's less to scroll.
The audit page's date filters open a calendar in Dualzo's own style, and the From date can't be set after the To date.
New pages on the website explain how Dualzo works: integrations, pricing, security, human approval, sandboxed validation, the audit trail and AI coding governance. A new Guides section covers turning GitHub issues into pull requests, adding human approval, and reviewing and validating AI-written code.
Version 1.2
Grok joins Claude, Codex and Gemini. You can choose how hard the AI thinks on each task,
and Dualzo suggests a model for each one. Plans now read GitHub issue comments and attachments,
and Discord joins the chat platforms.
Grok
xAI's Grok is now available as an AI model, alongside Claude, Codex and Gemini. Choose Grok Build 0.1, Grok 4.3 or Grok 4.7 for a task.
Grok can read the images and files you attach: PNG, JPEG, WebP, PDF, text, Markdown, CSV, JSON, YAML and XML.
Grok plans with read-only tools and can't run commands on Dualzo's servers. Your code runs only in the sandbox, the same as with every other model.
Reasoning effort
Choose how hard the AI thinks on each task, for example low, medium or high. Higher effort is better on hard tasks but uses more credits.
Each model offers only the levels its provider supports. A model with no setting runs at its own default.
You can change the effort along with the model before work starts.
Credit estimates take the effort level into account. Dualzo warns you if the model may use more credits than you have left.
Model suggestions
As you describe a task, Dualzo suggests a model for it: a good fit, a cheaper option, or another model worth a look. Use a suggestion with one click.
Suggestions are based on the task and on how models have done on your repository before. Before there's enough history, they're based on the task alone.
Dualzo warns you when a plan is high risk but runs on a lighter model.
Small, contained requests are planned with less context, so they use fewer credits.
GitHub issues
Plans for an issue now read its comments as well as its description. The task page and the approval email show how many comments were included.
Images and files attached to an issue or its comments are brought into the task, so the AI sees them while it plans.
If an issue attachment can't be read, the plan says so. The task page and the approval email show "Planned without some issue attachments".
Chat notifications
Discord joins Slack, Microsoft Teams and Google Chat, so approval requests can now arrive in a Discord channel.
Every chat channel now gets a message when work finishes, with a link to the pull request or the direct commit.
Chat messages and notifications now show the task number.
Approval links from email and chat now ask you to sign in first, so every decision is recorded against a real person. After you sign in, you land back on the same link.
Attachments
Images and files now upload straight from your browser to private storage, so they never pass through or sit on Dualzo's servers.
A problem with one file is shown next to that file and no longer clears when you add the next one.
Clearer messages when a file can't be read, or when you've reached the limit of 4 images or 3 files.
Fixes
Fixed long runs failing at the final push with "Invalid username or token". Dualzo now refreshes its GitHub access before every push.
Fewer planning failures: a plan the AI wraps in extra text or a code block is now accepted.
If the AI stops before finishing a task, the task is now marked failed. Before, it could pass with no changes written.
The task page no longer shows an old planning error after a later re-plan succeeded.
Fixed attachment and image uploads failing on some storage configurations.
Fixed sandbox validation failing to find the repository's files, which stopped lint and test commands from running.
When your repository's own lint, test, install or build command fails, the task page now shows which check failed and after how many attempts. Before, it showed a generic message blaming the AI provider.
Version 1.1
Commit approved work straight to a branch instead of opening a pull request, and attach
screenshots and files to a task so the AI can read them while it plans.
Direct commit
Each repository can now deliver work in one of two ways: open a pull request (the default), or commit directly to a branch you choose.
The branch must exist on GitHub when you save the setting. Switching back to pull requests clears it.
The approval email, the approvals inbox and chat messages say clearly when approving will commit directly, and to which branch.
If the target branch is ahead of your default branch, the approval request tells you by how many commits, because the plan was made from the default branch.
A direct commit happens only after validation passes, the same as a pull request.
Auto-approved tasks never commit directly. They open a pull request into the target branch instead, because nobody saw the direct-commit warning.
After a direct commit, Dualzo emails you and records it in the audit log. For tasks started from a GitHub issue, it also comments on the issue with a link to the commit.
If GitHub refuses the commit, the work stays on its own branch. You can take it over as a draft pull request or run it again.
Attachments
Attach up to 4 images (PNG, JPEG, GIF or WebP, up to 4 MB each) when you create a task. The AI looks at them while it writes the plan.
Attach up to 3 files (PDF, text, Markdown, CSV, JSON, YAML or XML, up to 10 MB each), such as specs, logs or sample data.
If the model you picked can't read a type of attachment, Dualzo tells you so you can switch models. It doesn't plan without them.
Open attached images, PDFs and text files in a preview on the task page. Text is shown as plain text and never run. Other file types download.
Attachments are kept for 365 days after a task finishes, and for as long as the task is still active.
Documentation
The documentation is now public and linked from the home page, so you can read it before you sign up.
Fixes
Fixed an error that could stop you from setting a new password after a password reset.
Credits spent on a run stopped by an AI provider error are now always refunded. Before, the refund could be skipped when a workspace's admins had email notifications turned off.
An AI provider's rate limit, quota, billing or low-balance errors are handled by the Dualzo team. Credits for the run are refunded, and you get an in-app notification instead of a failure email.
Fixed an error that could stop attachments from uploading.
Version 1.0
First release
The first production release of Dualzo. Connect a GitHub repository in any language and turn
issues or in-app tasks into reviewed plans. Once a person approves a plan, Dualzo runs it with
the AI model you pick, checks the result in a sandbox using your repository's own commands,
and opens a pull request. Every step is recorded.
Highlights
From GitHub issue to pull request, with a person approving the plan before any code is written.
Works with repositories in any language.
No pull request is opened while your own lint and test commands are failing.
Choose Claude, Codex or Gemini for each task.
Scheduled tasks, suggested tasks and automatic fixes for failing CI.
A complete audit trail for every step.
Tasks and planning
Start a task by adding a label to a GitHub issue (you choose the label for each repository), or create one in the app.
Two ways to start: review and approve the plan right away, or begin with a draft and refine it before planning.
Each plan lists ordered tasks with acceptance criteria, the files expected to change, the commands to run, rollback notes, and a risk level.
Dualzo works out the confidence score (0–100) and the effort level itself. The AI model does not score its own plan.
Pick Claude, Codex or Gemini for each task, and set a default model for each repository.
Starter templates for common work: performance, security and design.
Approval
Approve, Reject or Modify a plan by email or in the app. Approval links are signed, can be used only once, and expire.
Modify sends your instructions back to the planner and produces a new plan for approval.
An approvals inbox, and one approval for all of the AI's clarifying questions at once.
Approval requests and decisions can also be posted to Slack, Microsoft Teams or Google Chat.
Optional auto-approve for tasks you create in the app and for scheduled tasks.
Execution
Tasks run one at a time on their own branch, with a commit after each task. Only one execution runs on a repository at a time.
Pause a running execution and resume it later. It continues from the last finished task.
A live task view shows the agent's activity on one side and the code changes on the other.
A task that needs more capacity can be moved up to a higher effort level.
Validation sandbox
After each task, your repository's own install, lint, typecheck, test and build commands run in a throwaway container.
Network access is on only while dependencies install. The file system is read-only and resources are limited.
Encrypted environment variables per repository, for tests that need them.
If a check fails, the AI gets up to two attempts to fix it. If those fail, the task stops so a person can review it.
A pull request cannot be opened while validation is failing. This is enforced in code.
Pull requests and failure review
Each pull request comes with a description: a summary, the changes made in each task, validation results, a testing checklist, rollback steps and a link to the audit trail.
Dualzo tracks when a pull request is merged, closed or reopened.
When a task fails, a review page shows the plan, each task's status, the failing output and the full diff.
From there you can abandon it (the branch is deleted), edit the plan and run it again, or take over with a draft pull request marked as unvalidated.
Continuous AI
Scheduled tasks that run daily, weekly or monthly. You can pause, resume or delete them.
Suggested tasks based on the TODO and FIXME comments in your code (you turn this on per repository).
Automatic fix tasks when GitHub Actions fails on your default branch (you turn this on per repository).
Repository understanding
Works with any language. Built-in support for PHP, Node and TypeScript, Python, Java and other JVM languages, Go and Ruby, with a general mode for everything else.
Indexing only reads your code and never runs it. It re-checks only the files that changed, each time you push to your default branch.
Dualzo detects your validation commands and an admin confirms them before any task can run.
An AI-written summary of your repository's architecture, updated when your code changes.
Repository Knowledge: notes from your team that are included in every plan for that repository.
If a repository has no .gitignore, Dualzo offers to help you add one.
GitHub
Connect through a GitHub App and choose exactly which repositories Dualzo can see.
Connect several repositories and installations. Empty repositories can be given a first branch.
Every webhook is checked against its signature. Access tokens are short-lived and never written to logs.
Workspaces and team
Sign up with email and password (with email verification), or with Google or GitHub.
A workspace is created for you when you sign up, and you can switch between workspaces.
Invite teammates by email. Admins manage billing, members and repositories.
Each member chooses which email notifications they get. In-app notifications are kept for 7 days.
Every workspace's data is kept separate from every other workspace.
Audit trail
Every webhook, plan, approval, task, validation run and pull request is recorded in an audit log that can't be edited.
A workspace audit page with filters, plus a timeline for each execution.
Audit entries are kept for 90 days.
Plans and credits
One Team plan at $119/month with 5 seats included. AI model usage is included.
New workspaces get 300 free credits. No card and no trial clock.
Credits are charged based on what each run actually costs. You see an estimate before you approve and the actual amount after the run.
Payments are handled by Paddle, and invoices are available in billing settings.
Known limitations
Only GitHub is supported for now. GitLab and Bitbucket are not.
Repository understanding works the same way for every language. Deeper analysis for specific frameworks is planned.
A repository without a test command can run only in reduced validation mode, and every pull request it opens says so.
Ship AI-written code you can actually trust.
Team plan — $119/month, 5 seats included. AI model usage included.