dcoder-terminal · Windows · macOS · Linux

Seus agentes já sabem programar. Falta alguém no comando da operação.

O dcoder-terminal abre cada agente de código num terminal real, lado a lado, e um quadro durável decide quem trabalha, quem espera e quem depende de quem. Você traz as assinaturas que já paga — a gente nunca revende um token, e o seu repositório nunca chega até nós.

dcoder-terminal 0.8.5 — quatro agentes, um quadro, um repositório
  • 14 CLIs de agente num quadro só — Claude Code, Codex, Copilot e mais onze
  • 0 tokens revendidos: sua chave, seu provedor, sua fatura, seu limite
  • 72h de trabalho sem internet antes de a licença precisar se reportar

Não substitui o seu agente. Roda o que você já usa.

  • Claude Code
  • Codex
  • Copilot CLI
  • Cursor Agent
  • opencode
  • agy
  • Qwen
  • Kimi
  • Grok
  • MiniMax
  • mimo
  • deepclaude
  • dcoder-agent
  • any shell

Nove destes vêm com preset guiado — modelo, esforço e modo de permissão mapeados flag a flag. O resto roda por um comando que você escreve uma vez.

A operação

Não é um enxame. É uma fila que sobrevive a um reboot.

Enxame improvisa: os agentes negociam, se spawnam entre si, e depois ninguém sabe dizer por que aquilo rodou. Aqui é o contrário. As dependências são declaradas, a ordem é determinística e o quadro inteiro é markdown no seu disco. Feche o app no meio, reinicie a máquina, volte — o card está exatamente onde você deixou. É isso que transforma “deixa rodando de madrugada” numa promessa, e não numa aposta.

01

A grade

PTYs de verdade em colunas redimensionáveis — não é simulação de shell. Arraste um painel pela grade e o processo não morre: os painéis são posicionados por transform e nunca remontados. Mouse, cores e TUIs inteiras funcionam, porque o que está rodando é a CLI de verdade.

spec-142 · migração
trabalhando
spec-143 · endpoint
precisa de você
spec-141 · testes
concluído
02

O quadro

backlog → queue → doing → review → done ou failed, como pastas de markdown com front-matter dentro do seu projeto. Um processo só escreve nele, então dois agentes nunca corrompem o mesmo card. Versione para o time ver o quadro, ou ponha no gitignore — o app funciona igual nos dois casos.

.ddesktop/
  prds/prd-7.md
  queue/spec-144.md
  doing/spec-142.md
03

O scheduler

Card com dependências resolvidas, preset existente e vez chegada vira worker: um terminal dedicado àquele card e a mais nada, com o briefing injetado no start. Até oito ao mesmo tempo. Bloqueado espera; concluído libera o próximo.

◇ spec-142  → executando
⏸ spec-144  bloqueado por 142
? spec-143  precisa de você
Da conversa ao card

O documento que originou o trabalho viaja junto com ele.

Spec-driven no sentido literal: o PRD é escrito primeiro, os cards saem dele, e cada worker recebe o documento de origem injetado no próprio prompt — não um resumo que você lembrou de colar.

  1. 01

    Discuta com o piloto

    Você debate a demanda em linguagem natural com um agente-piloto, dentro do app. Quando a ideia fecha, ele grava um PRD no workspace — o documento de origem que todo card vai herdar.

    ❯ ddx prd new --title "Reembolso"
    {"ok":true,"id":"prd-7"}
  2. 02

    O PRD vira cards ligados

    O piloto quebra o PRD em cards com preset, tipo de agente e dependências já preenchidos. Nada dispara: os cards nascem no backlog, sob o seu olho, até você promover.

    ❯ ddx new --title "POST /refunds" \
        --preset codex-sandbox \
        --depends-on spec-142
    {"ok":true,"id":"spec-143"}
  3. 03

    A frota sobe sozinha

    O scheduler despacha. O worker se reporta por uma CLI que já está no PATH dele — avisa que está trabalhando, que terminou, ou que precisa de uma decisão que só você pode tomar. Não é heurística lendo a tela: é o worker falando com o quadro.

    ❯ ddx working
    ❯ ddx waiting "aplico a migration antes?"
    ❯ ddx done
  4. 04

    Um segundo agente confere antes de fechar

    Com o revisor ligado, o card concluído não vai direto para o feito: para na coluna review, onde outro agente audita o resultado contra os critérios de aceite e aprova — ou devolve para a fila com a reprovação escrita no próprio card, e o contador de rodadas subindo.

    ◉ revisor · rodada 2
    ✗ reprovado
      falta teste para valor negativo
    → devolvido para a fila

O worker não corrige a própria prova: quem executa um card tem promote, spawn e cancel recusados no nível do protocolo, por mais que peça com jeitinho.

Mãos livres

Ditar em qualquer janela. Conversar com o quadro.

Os dois são embarcados no app — não é plugin nem aba de navegador. Rodam sobre a API de voz da OpenAI com a sua chave, e o custo aparece na tela enquanto você fala.

Ditado global

Fale, revise, insira

Um atalho global abre o HUD em cima de qualquer janela: toque para alternar, segure para falar. A transcrição cai num campo editável e quem insere é você — no terminal em foco, no cursor do editor, ou em qualquer outro aplicativo do Windows. Quebras de linha viram espaço, para que um paste no terminal nunca execute um comando sozinho. Ele nunca aperta Enter por você.

“cria um teste pro reembolso parcial acima do valor pago”

REVISÃO · 6,2s · US$ 0,0004 · Enter insere

Modo conversa

Ele lê os painéis e age no app

Sessão de voz em tempo real com dezessete ferramentas ligadas na interface: lê um painel, promove um card, tenta de novo um que falhou, troca de workspace, e até lê a interface e clica. Tudo que é destrutivo passa por uma confirmação com token de uso único. Suspende sozinha depois do silêncio, para não queimar minuto à toa.

you o que o spec-143 tá esperando?

dcoder ele pergunta se pode aplicar a migration em staging. Autorizo?

you autoriza, e promove o 144 depois

dcoder ✓ respondido · ✓ spec-144 promovido para a fila

Na mesma janela

O que você sairia da janela para ir fazer.

Não são reimplementações por esporte — cada uma existe porque sair da janela no meio da corrida é como se perde o fio do que quatro agentes estão fazendo.

Git, inclusive as partes que ninguém faz

Um painel completo em janela própria, por repositório — e ele acha todos os repositórios da pasta, então um monorepo com serviços aparece sozinho.

  • Worktrees com UI de verdade: criar a partir de branch nova ou existente, prune de registros órfãos, aviso de trabalho não commitado
  • Editor de merge de três colunas para conflitos, com delete-vs-modify e os outros casos chatos nomeados em português claro
  • Stage por hunk, e ele recusa hunk obsoleto — “o arquivo mudou desde que este diff foi carregado”, em vez de aplicar pela metade
  • Mensagem de commit escrita por IA com segredos redigidos: .env e chaves privadas ficam fora do prompt, e sk-…, AKIA… e ghp_… viram [redigido]
  • Force-push com lease contando quantos commits do remoto seriam descartados antes de você confirmar

Arquivos, editor e skills

Janelas destacáveis, cada uma com o seu próprio projeto e a própria memória de quais abas você tinha aberto ali.

  • Monaco embutido, com quick open fuzzy e busca de texto no projeto que respeita o .gitignore e pula binários
  • Mandar a seleção atual direto para o agente em foco
  • Arraste um arquivo até um painel e o caminho dele cai no prompt daquele agente
  • Uma estante de skills que não rouba o foco do teclado — você arrasta a skill enquanto o cursor continua piscando no terminal, e soltar escreve a instrução sem submeter se havia rascunho

Cards que rodam sozinhos

Cadência contínua ou uma expressão cron de cinco campos de verdade, com um comando de parada que decide a hora de encerrar.

  • Um arquivo de memória carregado entre as iterações, para que a rodada nove saiba o que a rodada um achou
  • Exit 0 no comando de parada encerra o loop; um teto de iterações e um timeout encerram de qualquer jeito
  • “Caçar o teste flaky até ele parar de falhar” é um card, não um script que você fica vigiando

As partes que só se notam quando faltam

  • Vários workspaces, cada um com grade, quadro, cor de acento e memória de projeto próprios
  • Perfis de instância: rodar o release estável e um build de desenvolvimento lado a lado, isolados
  • Agente que precisa de você levanta notificação do sistema — o app tira a sequência de escape do stream e transforma em estado
  • Custo por modelo, em dólar, com tabela de tarifas editável que reprecifica o histórico quando você muda
  • Três idiomas, 1.434 chaves cada, paridade garantida por linter — e o idioma escolhido é repassado aos agentes
A conta

A gente orquestra. A gente nunca revende os seus tokens.

Esta é a parte que nenhum concorrente copia, porque a margem deles depende de a inferência passar por eles. A nossa não passa por nós de jeito nenhum.

Ferramentas que vendem crédito
  • Uma franquia mensal que não acumula
  • O preço do provedor mais uma margem que você não vê
  • Acabou no meio da semana? Compre recarga
  • O agent loop de um fornecedor só, é pegar ou largar
  • Quando o mercado de modelos virar, você espera por eles
dcoder-terminal
  • Seu plano Claude Max, Codex ou Copilot, usado direto
  • Preço de tabela do provedor, sem intermediário
  • Os seus limites, que você já conhece
  • Claude Code e Codex no mesmo repositório, no mesmo quadro
  • Apareceu CLI nova que presta? Aponte um preset hoje

E você vê a conta enquanto ela acontece

Tokens de entrada, saída e cache acumulados por modelo por sessão — o dado primário é o token, o dólar é derivado de uma tabela de tarifas que você edita. Mude uma tarifa e ele reprecifica o histórico sem reprocessar um transcript sequer.

sonnet-4.5 1,84M US$ 3,02
gpt-5.5 0,42M US$ 1,15
opus-5 0,19M US$ 2,44
O que sai da sua máquina

O seu código não sai. Isto aqui é exatamente o que sai.

A licença é a única coisa que fala com a gente. Ela é um assento flutuante: o servidor empresta um assento para a sua máquina, o app renova enquanto você trabalha, e fechar o app devolve o assento ao pool. É por isso que a sua licença te acompanha do desktop para o notebook sem você registrar nada.

Esta é a requisição inteira, a cada dez minutos. Nada além disto é enviado, nunca:

  • device_token um valor aleatório de 256 bits, guardado aqui só como hash
  • fingerprint hash do identificador da máquina, para que uma pasta de config copiada não rode duas vezes
  • device_name o nome que você deu a esta máquina
  • app_version qual build está perguntando
  • seat qual assento do pool você está ocupando

POST /v1/session/heartbeat

  • Seu código-fonte, diffs, prompts ou saída dos agentes
  • Nome de repositório, caminho de arquivo ou nome de branch
  • Quais agentes você roda, ou com que frequência
  • Qualquer coisa sobre o que você está construindo

E quando a internet cai

O app segue trabalhando por até 72 horas com o último ticket. A regra por baixo é que silêncio é tolerado e recusa é obedecida: se a gente está inalcançável, você continua; mas se a gente responder “não” — pool cheio, assinatura vencida —, o app avisa e para, e não vai fingir que não ouviu.

Preços

Um plano. Tudo dentro. Cobrado por assento, não pelo seu uso.

O app é a assinatura; token nunca passa pela nossa mão. É a menor linha da sua conta de IA, e a única que não cresce quando você abre mais um terminal.

Preço de fundador
US$ 290US$ 149/ por ano

dois meses por nossa conta, e o mesmo travamento

Travado enquanto você mantiver a assinatura — ele não sobe para US$ 29 por baixo de você.

Cobrado na sua moeda local, com impostos incluídos. Cancele quando quiser — a licença vale até o fim do período que você pagou.

Tudo, desde o primeiro dia:
  • Terminais reais em grade, qualquer CLI interativa
  • 14 CLIs de agente, nove com preset guiado
  • Quadro durável com dependências declaradas
  • O scheduler despachando até oito workers
  • PRDs, specs e o agente-piloto
  • Gate de revisão por IA nos cards concluídos
  • Cards em loop, contínuo ou cron
  • Ditado global e modo conversa
  • Painel Git, gerenciador de arquivos, editor e estante de skills
  • Custo por modelo, ao vivo, em dólar
  • Todos os repositórios abertos ao mesmo tempo, cada um com o seu quadro
  • Windows, macOS e Linux

Mais de uma pessoa? Uma licença comporta quantos assentos simultâneos você comprar — me escreva que eu configuro.

Perguntas

O que costumam perguntar antes de assinar

A assinatura inclui os tokens dos modelos?

Não, e é de propósito. Você usa as suas chaves — Anthropic, OpenAI, OpenRouter, quem preferir — e paga o preço de tabela do provedor, sem ninguém no meio. A gente orquestra e mostra, em dólar, quanto cada modelo consumiu.

Meu código sai da minha máquina?

Para nós, não. O quadro é uma pasta dentro do seu projeto, os painéis são processos na sua máquina, e a única requisição que a gente recebe é a verificação de licença — cinco campos, a cada dez minutos, listados por extenso mais acima nesta página. O que sai é exatamente o que o agente que você já escolheu mandaria hoje, para o provedor que você configurou.

Preciso estar online?

Para começar, sim: o app pega um assento emprestado ao abrir. Depois disso ele segue trabalhando por até 72 horas sem falar com a gente. A distinção que importa: silêncio é tolerado, recusa não. Se a gente está inalcançável, você continua; se a gente responder que a assinatura venceu ou que o pool está cheio, o app avisa e para.

Dois agentes no mesmo repositório não se atropelam?

Podem, se você mandar. O app sequencia o que você declarou: um card com --depends-on só sai da fila quando o anterior fecha, e é assim que duas tarefas que tocam o mesmo arquivo não caem no mesmo minuto. O que ele não faz é mexer em git por você — não cria branch, não faz merge, não resolve conflito pelas suas costas. Se você quer isolamento de verdade, aponte cada preset para um git worktree diferente; o quadro continua sendo um só.

Como o app sabe que um agente terminou ou travou?

Porque ele avisa. Cada terminal recebe uma CLI pequena no PATH, e o briefing injetado no start ensina o agente a marcar o próprio card: trabalhando, esperando com uma pergunta, concluído. Não é heurística adivinhando pelo texto da tela — é o worker falando com o quadro.

Isso suja o meu repositório?

O estado vive numa pasta .ddesktop/ dentro do projeto: markdown e JSON legíveis, sem banco e sem formato proprietário. Você decide se versiona, para o time ver o quadro, ou se põe no gitignore. Funciona igual dos dois jeitos.

Ele instala ou substitui os meus agentes?

Nenhum dos dois. Ele roda as CLIs que já estão na sua máquina e já autenticadas. Se você digita claude num terminal e funciona, funciona aqui. O que ele instala é a própria ferramenta de quadro na config de cada agente, no escopo mais estreito, sem sobrescrever o que você tinha.

O que acontece se eu cancelar?

A licença vale até o fim do período que você pagou; depois disso o app deixa de abrir. O que está em disco continua seu — quadro, PRDs e notas são markdown, legíveis com ou sem o app.

Dá para usar em mais de uma máquina?

Dá. O assento é emprestado enquanto o app está aberto e devolvido quando você fecha, então o desktop de casa e o notebook do trabalho dividem uma licença — você só não roda os dois no mesmo instante com um assento só. Cadastrar máquina é de graça e ilimitado; o que o assento conta é uso simultâneo.

O ditado e o modo conversa usam qual serviço?

O da OpenAI, com a sua chave, guardada no cofre de credenciais do sistema operacional em vez de um arquivo de texto. O app mostra o custo estimado enquanto você fala.

Seus agentes estão prontos. Falta dar um chão para eles trabalharem.

Aponte para um repositório, descreva a demanda e assista o primeiro card rodar sem você despachar terminal.