[go: up one dir, main page]

Say it once. Hear back when it's done.

Ducter is a personal AI that runs on your own Mac or server. You tell one partner what you want. It hands the work to the AI agents you already use, on the plans you already pay for, and comes back when the work is done or a decision is yours to make.

v0.0.42 · macOS

Free and open source under Apache 2.0. Works with Claude Code, Codex, pi and DeepSeek Harness today, and more AI agents after that.

  • Mac
  • Linux server
  • iPhone and iPad
  • Android
Ducterjust finished something
Fix the flaky checkpoint test in ~/dev/hawdb, then tell me.
I'll find out why checkpoint_recovery flakes, and fix it on its own branch.
Fix CI· Done ›
14 min later

CI is fixed. checkpoint_recovery slept a fixed 50 ms for the flush, too short on a busy machine. It now waits for wal.wait_durable(seq).

412 tests passCI run #48219 · green1 file changed ›Fix CI ›
git push -u origin ducter/fix-ci

Silence means it's going fine.

Tasks run in the background. You hear back when one is done, or when it needs you to decide something. Every decision comes with a suggested default.

  • Go, Hold or Reply… Take the default, say "not yet", or answer in your own words.
  • Or don't answer at all. After 30 minutes it goes with the default, but only if that can be undone. Anything else waits for you.
  • Done comes with proof: what changed and how it checked.
On hand3 working · 1 waiting
Port the runner to OAR 0.96 ›30 min

OAR 0.96 changed the steer API; 3 calls in the runner need to follow. Change them now?

If you don't answer, I'll change them in 30 min. It can be undone.

Try it: press Change them
Changing them now
Port the runner to OAR 0.96Reading the changelog · Claude Code · cloud-1
Review this week's 3 open PRsRead 2; the third is waiting on CI · Codex · MacBook
Write the v0.4 release notesWaiting for the v0.4 CI run · cloud-1
Mem #8762 health checkPassed 3 times in a row; the issue can close · MacBook

Your computers. Your plans.

Ducter lives on your Mac or on a server you own, and its tasks run on your computers, signed in to your AI agents with your own accounts. A coding task works in its own copy of your project, on its own branch, so your checkout stays as you left it. There's no Ducter account to make and no Ducter server in between.

This Mac
cloud-1Working on 1 task
Mac miniAsleep · carries on when it wakes
iPhone
Browse the web, added to this Mac
Browse the web
Reach from outside, added to this Mac
Reach from outside
This Mac can browse the web now

You can also add

Use the computerTasks in a Mac's apps
Use a phoneIts own Android phone, on a Mac
Make callsThrough Tuwa or your own number

Browse the web

This Mac can look things up and read pages in Ducter's own Chrome window, apart from yours. Signing in, submitting forms and paying stay with you.

  • Each task says where it runs. Your partner picks the computer and the AI agent for what the task needs; tap the line to see why.
  • Lend it more computers. A server keeps working while your Mac sleeps; closing your laptop moves what can move to one that stays on.
  • It asks only when it matters: a sleeping computer, or more access, like your own Chrome.

One thumb is enough.

Your phone buzzes only when a decision is waiting for you, and never during your quiet hours. Answer it in one tap, or let the default happen and read about it in the morning.

Quiet hours are 23:00 to 08:00 until you change them. With two decisions waiting, Go on all defaults answers both.

Ducter

The rerun passes, but the branch is 23 commits behind main. Rebase before merging? Default: rebase, in 30 min.

Rebasing. I'll tell you if CI doesn't pass.

Wherever you are.

Ducter lives on one computer, your Mac or a server. Every other screen opens the same conversation: start a task at your desk, answer its question from your phone, read the result on your iPad.

  • Mac

    The desktop app, for Apple silicon. Ducter can live here and run tasks here, with its own Chrome window for the web and, once you say so, in your Mac's apps.

    ReadyDownload

  • A Linux server

    x64 or arm64, at home or in the cloud. Your partner keeps working while your Mac sleeps, and your Mac can still do tasks for it.

    ReadySet one up

  • iPhone and iPad

    One app for both. On an iPad held across, On hand stands beside the conversation, and with a keyboard ⌘N starts a task.

    Public betaJoin on TestFlight

  • Android

    The Ducter app, straight from GitHub; it updates itself. Open a foldable like a book and the conversation and On hand meet at the fold.

    ReadyDownload the app

A phone or iPad needs an address it can reach from outside: Ducter on a server with your own domain, or a Mac at home set up From outside with your domain on Cloudflare. Connect your phone

It doesn't start from zero.

What your partner needs to know is often somewhere else: your mail, your calendar, last week's sessions with other AI tools. It reads them without your passwords.

  • One memory for all your AIs. Nowledge Mem keeps what you've decided, from every AI tool you connect. Your partner reads and adds to it, and says Noted when it does. Optional and free to download.
  • Your mail, calendar and chat. One tap with OOMOL's oo, or an address and key from OpenConnector. Reading is fine; anything that sends waits for your Go.
  • Your AI agents, reaching each other. With Nowledge Bridge, a Claude Code session in your terminal can hand your partner a job, with your OK. Coming soon.
Rebase, never merge commits. Remember that for every repo.
Will do. From now on I'll rebase before merging, in every repo.
Noted · Rebase before merging, every repo
9 days later
Get the docs branch in ~/dev/hawdb ready to merge.
It's rebased onto main, the way you like, and CI is green. It's ready for you to merge.

It looks out for you, quietly.

Say yes once when you add your accounts, and your partner keeps an eye on your mail, calendar, GitHub and chat. It speaks up only when something needs you: one morning message with at most three things, and on a quiet day, nothing at all. The first time, it looks back over the last two weeks and picks out what needs you.

  • Each one comes with a next step. Open the renewal page, look for somewhere to stay. Go does it, Hold leaves it, and How I know shows the mails behind it.
  • Right away only when it can't wait: someone who asked you again, or has waited three working days, or a promise due today. Never in your quiet hours unless you asked for that kind.
  • It never sends, replies, pays or deletes on its own, and it doesn't tell you how much it read. Tap Useful, or Don't tell me this kind, and it learns.
08:00
Morning.

ducter.dev expires on Nov 16, and it isn't renewed yet.

How I know ›

You land in Tokyo on Nov 21, and nothing is booked for that night.

How I know ›

It runs errands, with your OK.

Booking, buying, calling, working in your Mac's apps: every step that spends money, sends something or reaches a person shows you exactly what will happen, and waits for you.

  • It calls for you. A restaurant, a clinic, a shop, in its voice or yours, through Tuwa or from your own Android phone. You see who, what it may say and the likely cost, then tap Call. Needs a Tuwa account, or your own phone with a small cable kit and a live-voice API key.
  • It fills in without seeing. Save a sign-in, a card or your travel details once. Your partner fills them in on the right site; every payment asks you first. A task that needs a key asks you with a card, never in the chat.
  • You can take a turn. Watch its browser from your phone or iPad. Tap My turn to sign in or check a page yourself, then Hand it back.

It asks before anything reaches other people.

A task doesn't stop you for every command. Emails, posts, PR comments, payments, calls and pushes to shared branches wait for your Go, and every one is written down. A few things it never does at all.

  • It never merges into main.A finished task offers Merge into main or Open draft PR, and waits for you.
  • It never sees your passwords.It fills a saved one only on its own site, or you sign in yourself with My turn.
  • It never pays on its own.Every payment shows the shop, the amount and the card, and waits for your OK and the security code.
Sent out todayMonday
  1. git push -u origin ducter/fix-ciRan: its own branch
  2. gh pr create --draft "Fix flaky checkpoint_recovery"Asked you; you said Go
  3. git push origin mainWaits for you, always
  4. email: load-test numbers → a HawDB contributorAsks you first
  5. sign in to github.comFilled in; it never saw it
  6. pay: renew a domain, $10.44Waits for your OK
  7. call: a table for two, Friday 19:00Asks you first

Open anything. Any time.

Most days you stay in the conversation. When you want a closer look, On hand shows every task at a glance. Open one to read what it did, step by step, and the diff of every file it changed, and write to it while it works. Or just reply to its result in the conversation, and it carries on. On an iPad or a foldable, On hand can take the whole screen.

ConversationOn handFix CI · #1592
Done· started 14 min ago

The flaky checkpoint test is fixed.

Rebased; all 412 tests pass and CI is green. The cause was a fixed 50 ms sleep in the test, now a wait for durability.

20 local rerunsCI run #48219 · green1 file changed ›
git push -u origin ducter/fix-ci

What it did

  1. What Ducter asked forFind out why HawDB #1592's CI fails, and fix it.
  2. › Ran 3 commands
  3. All three failures are in checkpoint_recovery: it sleeps a fixed 50 ms for the flush.
  4. › Edited 1 file
  5. Progress saved · Confirmed flaky; wait for durability
  6. Told Ducter · needs you to decideThe rerun passes. But the branch is 23 commits behind main: rebase before merging?
  7. › Ran 3 commands

Changes 1 file +3 −3

▾ crates/storage/tests/checkpoint_recovery.rs +3 −3
    let wal = Wal::open(&dir, WalOptions::fsync_each())?;    let seq = wal.append(b"hello")?;-   std::thread::sleep(Duration::from_millis(50));+   // wait for the flusher instead of a fixed sleep+   wal.wait_durable(seq)?;    crash_and_reopen(&dir)?;    assert_eq!(recovered.last_seq(), seq);
Details ›
Talk to this task

Yours to read and run.

Open source

Apache 2.0. Every prompt Ducter writes and every line of code that touches your work is in the source.

Self-hosted

Your Mac, or a Linux server you own. Your conversation and tasks stay in one folder there that only your account can read.

No lock-in

Ducter works through each AI agent's own app, signed in as you, on your existing plan. Use whichever one you have, and switch for any task.

Built on the agents you have

For people who already run several AI agents at once: what Ducter does so they hold up as one partner.

  • One adapter, four agents. Claude Code, Codex, pi and DeepSeek Harness, started through OAR in clean sessions that still carry your own skills and settings.
  • Small windows on purpose. Your partner and its tasks work in about 200K tokens. A long conversation stays coherent through short digests and recall, not by replaying everything.
  • The facts about each agent, in one place. Context windows, compaction points and versions are checked against the real programs, and ducter doctor warns when yours is outside what was checked.
  • Each agent's own browser first. Ducter's own Chrome is the fallback, on your Mac or your server. In a Mac's apps, Ducter's own app tools check every click before it happens, and never open a password manager, a bank or System Settings.
  • Keys stay out of the conversation. A task that needs one asks on a card; it's kept encrypted on the computer Ducter lives on and handed only to the command that uses it. A key you paste is taken out of what a task is told, and hidden everywhere Ducter shows one.
  • Budgets are tests. Every prompt and tool list has a size limit that fails the build, and updates are rehearsed end to end on a Linux VM before a release.
Get Ducter

You need Claude Code, Codex, pi or DeepSeek Harness installed and signed in on the computer that does the work. Ducter checks everything else and tells you the one thing to fix, if there is one.

Paste this into Terminal. It downloads the signed app, checks it, puts it in Applications and opens it:

$ curl -fsSL https://ducter.ai/install.sh | sh

Ducter checks your Mac, then opens the conversation. Closing the window doesn't stop it. It needs a Mac with Apple silicon.

Or download the .dmg and drag Ducter to Applications, or build it from the source. On iPhone and iPad: join the beta.

Say it once.

Then get on with your day. Ducter tells you when it's done.

The launch film · 56 s · also in Chinese and square