File size: 40,444 Bytes
ef2127a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
# DG Agent CLI

`scripts/dg_agent.sh` is the unified entrypoint for the local agent stack. It
does not replace the open-source tools; it routes to the existing Aider,
AgentAPI, and OpenCode wrappers and provides one readiness check.

OSS wrapper map: `docs/oss_agent_wrappers.md`.

## Doctor

```bash
cd /root/diffusiongemma-agent
scripts/dg_agent.sh doctor
scripts/dg_agent.sh doctor --json
scripts/dg_agent.sh status
scripts/dg_agent.sh up
scripts/dg_agent.sh wrappers
scripts/dg_agent.sh wrappers --json
scripts/dg_agent.sh bootstrap
scripts/dg_agent.sh client-pack
scripts/dg_agent.sh client-init --repo /path/to/repo --client cursor
scripts/dg_agent.sh client-report --repo /path/to/repo --client cursor --live
scripts/dg_agent.sh agent-commands --repo /path/to/repo --target all
scripts/dg_agent.sh codex-profile --repo /path/to/repo --target all
scripts/dg_agent.sh agent-bridge --repo /path/to/repo --server opencode-acp
scripts/dg_agent.sh agent-bridge --repo /path/to/repo --server openhands-acp
scripts/dg_agent.sh openhands-mcp -- --repo /path/to/repo --reset
scripts/dg_agent.sh qwen-code -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh autogen -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh smolagents -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh langgraph -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh crewai -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh open-interpreter -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh llamaindex -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh haystack -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh workspace-init --repo /path/to/repo
scripts/dg_agent.sh repo-map --repo /path/to/repo --map-tokens 512
scripts/dg_agent.sh ast-grep --repo /path/to/repo --lang python --pattern 'return $X' --json
scripts/dg_agent.sh code-outline --repo /path/to/repo --lang python --json
scripts/dg_agent.sh agent --repo /path/to/repo --task "..." --mode auto
scripts/dg_agent.sh agent --repo /path/to/repo --task "Read file app.py" --mode read
scripts/dg_agent.sh agent --repo /path/to/repo --task "Fix app.py" --mode edit --file app.py
scripts/dg_agent.sh agent-runs list
scripts/dg_agent.sh agent-runs artifact transcript --latest
scripts/dg_agent.sh tool-loop --repo /path/to/repo --task "..." --out runlogs/tool-loop/latest.json
scripts/dg_agent.sh preflight --repo /path/to/repo
scripts/dg_agent.sh run --repo /path/to/repo --task "..." --file path --start
scripts/dg_agent.sh mcp --list-tools
scripts/dg_agent.sh serena-mcp --help-local
scripts/dg_agent.sh goose-mcp -- info -v
scripts/dg_agent.sh goose-acp -- --help
scripts/dg_agent.sh goose-serve -- --host 127.0.0.1 --port 3294
scripts/dg_agent.sh openhands-acp -- --help
scripts/dg_agent.sh openhands-mcp -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh qwen-code -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh autogen -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh smolagents -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh langgraph -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh crewai -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh open-interpreter -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh llamaindex -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh haystack -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh capabilities
scripts/dg_agent.sh capabilities --live
```

Checks:

- backend on `127.0.0.1:4100`
- safe agent gateway / Aider-compatible proxy on `127.0.0.1:8090`
- Aider install
- AgentAPI install and running state
- OpenCode and local Node install
- Goose install
- LiteLLM gateway install
- Serena semantic MCP install
- wrapper/smoke script presence

Bootstrap checks local OSS-wrapper installs and can reinstall missing wrappers:

```bash
scripts/dg_agent.sh bootstrap
scripts/dg_agent.sh bootstrap --json
scripts/dg_agent.sh bootstrap --install
scripts/dg_agent.sh bootstrap --external
scripts/dg_agent.sh bootstrap --only openhands,mini-swe-agent --install
scripts/dg_agent.sh bootstrap --smoke-static
```

By default, `bootstrap` audits the already recommended core wrappers. Pass
`--external` to include optional OpenHands/SWE-family CLI wrappers. External
installers are isolated under repo-local `.tools/` or `.venv-*` paths and are
not required for the default reliable `agent/session/task` path.

Client pack exports endpoint and launch profiles for external clients:

```bash
scripts/dg_agent.sh client-pack
scripts/dg_agent.sh client-pack --json
scripts/dg_agent.sh client-pack --env
scripts/dg_agent.sh client-pack --write
scripts/dg_agent.sh client-init --repo /path/to/repo --client cursor
scripts/dg_agent.sh client-smoke --repo /path/to/repo --client cursor --live
scripts/dg_agent.sh client-report --repo /path/to/repo --client cursor --live
scripts/dg_agent.sh agent-commands --repo /path/to/repo --target all
scripts/dg_agent.sh codex-profile --repo /path/to/repo --target all
scripts/dg_agent.sh agent-bridge --repo /path/to/repo --server opencode-acp
scripts/dg_agent.sh agent-bridge --repo /path/to/repo --server openhands-acp
scripts/dg_agent.sh mcp-client-config --repo /path/to/repo --client cursor
scripts/dg_agent.sh mcp-client-config --repo /path/to/repo --client cursor --with-serena
scripts/dg_agent.sh mcp-client-config --repo /path/to/repo --client cursor --with-oss-stack
scripts/dg_agent.sh agent-rules --repo /path/to/repo --target all
```

The safe gateway exposes OpenAI-compatible discovery endpoints:

```text
http://127.0.0.1:8090/v1/model_card
http://127.0.0.1:8090/v1/capabilities
http://127.0.0.1:8090/v1/agent/routes
http://127.0.0.1:8090/v1/agent/session
http://127.0.0.1:8090/v1/agent/tool
http://127.0.0.1:8090/v1/agent/context
http://127.0.0.1:8090/v1/agent/rag
http://127.0.0.1:8090/v1/agent/sessions
http://127.0.0.1:8090/v1/agent/sessions/latest
http://127.0.0.1:8090/v1/agent/sessions/latest/diff
http://127.0.0.1:8090/v1/agent/sessions/latest/artifacts/{artifact}
http://127.0.0.1:8090/v1/agent/runs
http://127.0.0.1:8090/v1/agent/runs/latest
http://127.0.0.1:8090/v1/agent/runs/latest/artifacts/{artifact}
http://127.0.0.1:8090/v1/agent/tool_manifest
http://127.0.0.1:8090/.well-known/agent.json
```

Use these when an external OSS agent needs to discover the recommended local
route, model limits, tool-call delegation behavior, or MCP resources without
opening `.dg-agent` files directly. The tool manifest includes copy-ready
OpenAI Chat Completions and Responses API tool schemas for safe
`execute_command` delegation through `dg_agent.sh session`.
It also includes DG-specific OpenAI function tools for clients that can call
tools but cannot mount MCP:

```text
dg_repo_status
dg_git_diff
dg_list_files
dg_read_file
dg_search
dg_repo_pack
dg_repo_map
dg_ast_grep
dg_code_outline
dg_agent
dg_session
dg_context
dg_rag_context
dg_session_artifact
dg_agent_run_artifact
```

The repo tools are fixed read-only `git`/`rg`/file-read operations for clients
without MCP. The OSS repo tools delegate to Repomix, Aider repo-map, and
ast-grep/code-outline. `dg_agent` is the high-level HTTP facade over
`scripts/dg_agent.sh agent --mode auto/read/edit`. `dg_context` and
`dg_rag_context` are read-only; `dg_session` defaults to dry-run unless HTTP
execution is explicitly enabled; `dg_session_artifact` reads preserved session
outputs such as `final_diff`, `context_md`, `stdout`, and `stderr`;
`dg_agent_run_artifact` reads preserved high-level `agent` run reports and
tool-loop transcripts from `runlogs/dg-agent-runs/`.
`/v1/agent/tool` executes those DG-specific tool calls and returns a ready
`role=tool` response payload for the next OpenAI-compatible turn. It accepts
either `{name, arguments}` or a full OpenAI `tool_call` object. Arbitrary
`execute_command` shell execution is blocked there; use repo tools for
read-only navigation and `dg_session` for bounded repo changes.
`/v1/agent/session` returns a dry-run session command by default; real HTTP
execution requires `DG_AIDER_PROXY_ENABLE_AGENT_EXEC=1` and `execute=true`.
`/v1/agent/context` and `/v1/agent/rag` are read-only HTTP versions of
`dg_agent.sh context` and `dg_agent.sh rag --print-context`; use them when a
client has no MCP support but still needs bounded repo context before deciding
what to edit. The RAG endpoint is retrieve-only and does not call the model.
`/v1/agent/sessions*` is read-only and exposes preserved session artifacts for
HTTP-only clients that cannot mount the DG MCP resources. Artifact names match
the CLI names below, including `context_md`, `plan`, `task_report`,
`verify_report`, `final_diff`, `stdout`, and `stderr`.
`/v1/agent/runs*` is the matching read-only surface for high-level
`scripts/dg_agent.sh agent` runs. Artifact names include `agent_json`,
`transcript`, `stdout`, and `stderr`.
The same artifacts are available from the CLI through
`scripts/dg_agent.sh agent-runs list`, `agent-runs show --latest`, and
`agent-runs artifact transcript --latest`.
MCP clients get the same surface through `dg_agent_runs`,
`dg_agent_run_artifact`, `dg://agent-runs`, `dg://agent-runs/latest`, and
`dg://agent-runs/latest/transcript`.

Use `client-init` as the highest-level client bootstrap. It runs
`workspace-init`, installs the default DG+Repomix+Serena MCP bundle for the
chosen client, and writes the repo instruction files used by Claude/Cursor/VS
Code/Copilot-compatible agents.

Use `client-smoke` as a target-repo readiness gate before connecting an
external client. It can prepare the repo through `client-init`, then validates
hub files, MCP config, agent rules, key launchers, and optionally live endpoints
with `--live`.

Use `client-report` after `client-smoke` when an IDE, ACP server, or another
agent needs a portable handoff. It writes `.dg-agent/CLIENT_HANDOFF.md` and
`.dg-agent/client-handoff.json` with the ready commands, route map, MCP config,
latest capability snapshot, and live endpoint status when `--live` is set.

Use `agent-commands` to install a project command layer for existing clients.
It keeps generic snippets under `.dg-agent/commands/` and installs the Claude
Code project skill `.claude/skills/dg-local-agent/SKILL.md`.

Use `agent-bridge` when the client speaks ACP and needs a running agent server
instead of only MCP tools. It prepares the repo through `client-init`, then
prints or starts an upstream OpenCode ACP, Goose ACP, or OpenHands ACP server
over the same local model/tool bundle.

Every `workspace-init` also writes `.dg-agent/AGENT_HUB.md` and
`.dg-agent/agent-hub.json`. Open those first when connecting a new external
agent; they summarize the recommended route, endpoint, MCP bundle, ACP bridge,
and fallback order for the current repo.

The client pack includes OpenAI SDK, Aider, OpenCode, Goose, Continue,
Cline/Roo/Kilo, OpenHands, SWE-agent, mini-swe-agent, MCP stdio profiles,
Serena semantic MCP, and copy-ready MCP client configs for Claude Code, Claude
Desktop, Cursor, and VS Code. The OpenHands/SWE/MCP profiles are copied into `.dg-agent/` by
`workspace-init` as experimental heavy-agent entrypoints over the same local
LiteLLM gateway.

Use `agent-rules` to install client instruction files (`AGENTS.md`,
`CLAUDE.md`, GitHub Copilot, VS Code instructions, and Cursor rules) that tell
external clients to use DG MCP repo tools and bounded sessions instead of
pasting large repository context.

The Aider profile is exported as `.dg-agent/aider.dg-fast.conf.yml` with local
model settings/metadata copies, so upstream Aider can also be launched directly:

```bash
aider --config .dg-agent/aider.dg-fast.conf.yml path/to/file
```

External OSS-agent launchers:

```bash
scripts/dg_agent.sh openhands -- --repo /path/to/repo --task "..." --dry-run
scripts/dg_agent.sh openhands-acp -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh openhands-mcp -- --repo /path/to/repo --reset
scripts/dg_agent.sh qwen-code -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh autogen -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh smolagents -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh langgraph -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh crewai -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh open-interpreter -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh llamaindex -- --repo /path/to/repo --dry-run
scripts/dg_agent.sh swe-agent -- --repo /path/to/repo --task "..." --dry-run
scripts/dg_agent.sh mini-swe-agent -- --repo /path/to/repo --task "..." --dry-run
scripts/dg_agent.sh mini-swe-run --repo /path/to/repo --task "..." --dry-run --json
scripts/dg_agent.sh mini-swe-runs list
scripts/dg_agent.sh mini-swe-runs show --latest
scripts/dg_agent.sh mini-swe-runs artifact report --latest --path-only
scripts/dg_agent.sh goose-mcp -- info -v
scripts/dg_agent.sh goose-acp -- --help
scripts/dg_agent.sh goose-serve -- --help
```

These wrappers use installed upstream CLIs when present. Without the CLI they
print the exact local profile, model, endpoint, and command to run after
installation.

The MCP-enabled OpenCode profile mounts `dg_agent` and `repomix`. Serena is
available through the separate IDE MCP bundle because its cold start exceeds
OpenCode's MCP connection budget on this host.
The MCP-enabled Goose profile mounts `dg_agent` and `serena`.

`mini-swe-run` uses the upstream mini-SWE CLI but, in the default safe gateway
mode, the proxy adapts mini-SWE text actions into a delegated
`dg_agent.sh session` command. This avoids enabling unsafe generic generation
while preserving mini-SWE trajectory, stdout/stderr, command and JSON report
artifacts.

Workspace init writes repo-local `.dg-agent/` profiles:

```bash
scripts/dg_agent.sh workspace-init --repo /path/to/repo
scripts/dg_agent.sh workspace-init --repo /path/to/repo --force
```

For git repositories, `.dg-agent/` is added to the repo-local
`.git/info/exclude`. This keeps the launchers available in the workspace
without changing the project's tracked `.gitignore` or making normal agent
runs start from a dirty tree.

It also writes repo-local launchers:

```bash
.dg-agent/bin/run --task "..." --file path --start
.dg-agent/bin/agent --task "..." --file path
.dg-agent/bin/preflight --task "..." --file path
.dg-agent/bin/capabilities --latest
.dg-agent/bin/doctor
.dg-agent/bin/up
.dg-agent/bin/down
.dg-agent/bin/plan --task "..." --file path --auto-test
.dg-agent/bin/edit --task "..." --file path --auto-test
.dg-agent/bin/task --plan plan.json --rollback-on-failure
.dg-agent/bin/supervisor --task "..." --file path
.dg-agent/bin/web --port 3284
.dg-agent/bin/context --task "..."
.dg-agent/bin/repo-map --map-tokens 512
.dg-agent/bin/ast-grep --lang python --pattern 'return $X' --json
.dg-agent/bin/code-outline --lang python --json
.dg-agent/bin/client-init --client cursor
.dg-agent/bin/client-smoke --client cursor --live
.dg-agent/bin/client-report --client cursor --live
.dg-agent/bin/agent-commands --target all
.dg-agent/bin/codex-profile --target all
.dg-agent/bin/agent-bridge --server opencode-acp
.dg-agent/bin/agent-bridge --server openhands-acp
.dg-agent/bin/hub
.dg-agent/bin/verify --file path
.dg-agent/bin/sessions list
.dg-agent/bin/aider --help-local
.dg-agent/bin/openhands --help-local
.dg-agent/bin/openhands-acp --help-local
.dg-agent/bin/swe-agent --help-local
.dg-agent/bin/mini-swe-agent --help-local
.dg-agent/bin/mini-swe-run --task "..." --dry-run --json
.dg-agent/bin/mini-swe-runs list
.dg-agent/bin/mcp --list-tools
.dg-agent/bin/mcp-http --help-local
.dg-agent/bin/serena-mcp --help-local
.dg-agent/bin/goose-mcp --help-local
.dg-agent/bin/goose-acp --help
.dg-agent/bin/goose-serve --help
```

Preflight checks a target repo before a live agent run:

```bash
scripts/dg_agent.sh preflight --repo /path/to/repo
scripts/dg_agent.sh preflight --repo /path/to/repo --task "..." --file path --json
```

It reports whether the repo is `needs-setup`, `static-ready`, or `live-ready`.
`static-ready` means the wrapper/repo setup is valid but the backend model is
not loaded yet.

One-command run combines workspace init, preflight, optional service startup,
and the reliable agent path:

```bash
scripts/dg_agent.sh run --repo /path/to/repo --task "..." --file path
scripts/dg_agent.sh run --repo /path/to/repo --task "..." --file path --start
scripts/dg_agent.sh run --repo /path/to/repo --task "..." --file path --dry-run --json
```

`run` does not load the model unless `--start` is passed.

`agent` is the highest-level local facade:

```bash
scripts/dg_agent.sh agent --repo /path/to/repo --task "Find where add(a, b) is implemented" --mode auto
scripts/dg_agent.sh agent --repo /path/to/repo --task "Fix add(a, b)" --mode edit --file calc.py
```

`--mode auto` routes inspection tasks to the read-only OpenAI tool-loop and
edit tasks to the artifacted `session` runner. `--mode read` always uses
bounded repo tools and writes `runlogs/dg-agent-runs/*/agent.json` plus the
tool-loop transcript. `--mode edit` keeps the older session behavior:
context, plan, task runner, verification, rollback, and `session.json`.

`tool-loop` is the reference OpenAI-compatible tool-calling client. It fetches
DG tool schemas from `/v1/agent/tool_manifest`, calls Chat Completions through
LiteLLM, executes returned tool calls through `/v1/agent/tool`, appends
`role=tool` messages, and can save the full transcript:

```bash
scripts/dg_agent.sh tool-loop \
  --repo /path/to/repo \
  --task "Find the implementation of add(a, b)" \
  --out runlogs/tool-loop/latest.json
```

Use `--stop-after-tool` when the caller wants only the raw tool transcript.
Without it, the proxy turns the final `role=tool` payload into a deterministic
summary response. Use `--tool dg_read_file` or `--read-only` to constrain the
loop to repo inspection tools when connecting a cautious external agent.

The reliable edit path is intentionally layered. It tries the Aider-compatible
OSS wrapper first, then verifies syntax/tests, then applies small deterministic
repairs when the model call produced no usable diff but the task states an exact
code constraint. It also adds transient `.aider.dg-local/` metadata to the
target repo's local `.git/info/exclude`, so repeated runs do not start from a
dirty tree. Session reports mark repaired model attempts as
`aider-with-deterministic-repair`.

Capability probes run a small end-to-end audit of the wrapper stack:

```bash
scripts/dg_agent.sh capabilities
scripts/dg_agent.sh capabilities --json
scripts/dg_agent.sh capabilities --live --json
scripts/dg_agent.sh capabilities --latest
scripts/dg_agent.sh capabilities --latest --path-only
```

Without `--live`, this checks repo-local workspace bootstrapping, every
repo-local `.dg-agent/bin/*` launcher, the installed OSS wrapper matrix,
OpenHands/SWE-family profile launchers, the proxy adapter, and exact replace
repair without loading the model. With `--live`, it also runs a real GPU-backed
Aider edit where malformed model output is repaired by the proxy and then
applied as an Aider diff.

Capability reports are saved under:

```text
runlogs/dg-agent-capabilities/latest.json
runlogs/dg-agent-capabilities/YYYYMMDD-HHMMSS-{static,live}.json
```

Use `--no-save` to skip writing these files for a one-off probe.

Short stack commands:

- `status`: check backend, proxy and LiteLLM
- `up`: ensure backend, proxy and LiteLLM are running
- `down`: stop backend, proxy and LiteLLM

## Smoke

```bash
scripts/dg_agent.sh smoke
scripts/dg_agent.sh smoke --suite context
scripts/dg_agent.sh smoke --suite auto-test
scripts/dg_agent.sh smoke --suite verify
scripts/dg_agent.sh smoke --suite session
scripts/dg_agent.sh smoke --suite sessions
scripts/dg_agent.sh smoke --suite session-artifacts
scripts/dg_agent.sh smoke --suite agent
scripts/dg_agent.sh smoke --suite capabilities
scripts/dg_agent.sh smoke --suite proxy-adapter
scripts/dg_agent.sh smoke --suite supervisor
scripts/dg_agent.sh smoke --suite wrappers
scripts/dg_agent.sh smoke --suite bootstrap
scripts/dg_agent.sh smoke --suite client-pack
scripts/dg_agent.sh smoke --suite workspace-init
scripts/dg_agent.sh smoke --suite client-init
scripts/dg_agent.sh smoke --suite client-smoke
scripts/dg_agent.sh smoke --suite client-report
scripts/dg_agent.sh smoke --suite agent-commands
scripts/dg_agent.sh smoke --suite codex-profile
scripts/dg_agent.sh smoke --suite ide-clients
scripts/dg_agent.sh smoke --suite agent-bridge
scripts/dg_agent.sh smoke --suite external-agents
scripts/dg_agent.sh smoke --suite mini-swe-runner
scripts/dg_agent.sh smoke --suite preflight
scripts/dg_agent.sh smoke --suite run
scripts/dg_agent.sh smoke --suite task
scripts/dg_agent.sh smoke --suite goose
scripts/dg_agent.sh smoke --suite goose-mcp
scripts/dg_agent.sh smoke --suite goose-acp
scripts/dg_agent.sh smoke --suite openhands-acp
scripts/dg_agent.sh smoke --suite openhands-mcp
scripts/dg_agent.sh smoke --suite qwen-code
scripts/dg_agent.sh smoke --suite autogen
scripts/dg_agent.sh smoke --suite smolagents
scripts/dg_agent.sh smoke --suite langgraph
scripts/dg_agent.sh smoke --suite crewai
scripts/dg_agent.sh smoke --suite open-interpreter
scripts/dg_agent.sh smoke --suite llamaindex
scripts/dg_agent.sh smoke --suite haystack
scripts/dg_agent.sh smoke --suite litellm
scripts/dg_agent.sh smoke --suite gateway-clients
scripts/dg_agent.sh smoke --suite openai-sdk
scripts/dg_agent.sh smoke --suite mcp
scripts/dg_agent.sh smoke --suite mcp-http
scripts/dg_agent.sh smoke --suite serena-mcp
scripts/dg_agent.sh smoke --suite watchdog
scripts/dg_agent.sh smoke --suite stack-control
scripts/dg_agent.sh smoke --suite agentapi --suite opencode-provider
```

Suites:

- `context`: context pack and generated task-runner plan
- `auto-test`: automatic verification command inference
- `verify`: standalone verification command runner
- `session`: full context->plan->task->verify artifacted run
- `sessions`: session history listing and inspection
- `session-artifacts`: direct retrieval of preserved session artifacts
- `agent`: recommended local coding-agent mode
- `capabilities`: compact capability harness for workspace launchers, installed OSS wrappers, external-agent profiles, proxy, and live-ready paths
- `proxy-adapter`: file-listing normalization and exact repair fallback in the Aider proxy
- `supervisor`: rg + Aider/model + verification + deterministic repair fallback
- `wrappers`: installed OSS-wrapper matrix and recommended routing
- `bootstrap`: audit/install wrapper control path without loading the model
- `client-pack`: OpenAI-compatible client/IDE/agent profile export
- `workspace-init`: repo-local `.dg-agent/` client pack and quickstart files
- `client-init`: one-shot workspace + MCP bundle + client rules bootstrap
- `client-smoke`: target-repo readiness gate for external IDE/agent clients
- `client-report`: portable Markdown/JSON handoff for external clients
- `agent-commands`: repo-local command kit and Claude Code project skill
- `codex-profile`: project-local Codex CLI config for the DG safe proxy
- `ide-clients`: Continue/Cline/Roo/Kilo/OpenAI-compatible repo-local profile snippets
- `agent-bridge`: one-shot ACP bridge over OpenCode/Goose/OpenHands OSS agent servers
- `external-agents`: OpenHands/SWE/mini-SWE local profile wrappers and launchers
- `mini-swe-runner`: artifacted mini-SWE runner dry-run contract
- `preflight`: target-repo readiness check before agent execution
- `run`: one-command workspace-init -> preflight -> optional start -> agent
- `edit`: natural-language `dg_agent.sh edit`
- `task`: multi-step task runner
- `agentapi`: AgentAPI over Aider
- `goose`: Goose over the local OpenAI-compatible proxy
- `litellm`: LiteLLM gateway over the local OpenAI-compatible proxy
- `gateway-clients`: checked-in IDE/OpenAI-compatible client profiles
- `openai-sdk`: real Python OpenAI SDK chat completion through LiteLLM
- `mcp`: MCP stdio server initialize, tools/list, and `dg_context` tool call
- `watchdog`: backend/proxy/LiteLLM watchdog status and ensure
- `stack-control`: one-command `status`, `up` and `ensure` aliases
- `opencode-provider`: OpenCode provider discovery
- `opencode-run`: minimal OpenCode run fallback

## Agent Mode

Use `run` as the default local coding-agent entrypoint:

```bash
scripts/dg_agent.sh run \
  --repo /path/to/repo \
  --task "Fix hello.py so greet('Ada') returns exactly hello, Ada!" \
  --file hello.py \
  --start
```

Use `agent` directly when workspace/preflight/service startup are already
handled:

```bash
scripts/dg_agent.sh agent \
  --repo /path/to/repo \
  --task "Fix hello.py so greet('Ada') returns exactly hello, Ada!" \
  --file hello.py
```

`agent` is a conservative profile over the artifacted `session` path. It
builds a compact repo context pack, generates a task-runner plan, enables
auto-test inference, verifies after the edit, rolls back failed task-runner
edits, uses deterministic repair fallbacks for exact small Python edits, and
preserves all artifacts under `runlogs/dg-agent-sessions/`.

Useful options:

- `--file path`: repeatable file hints for small-context work
- `--test-cmd "..."`: explicit verification from the target repo
- `--max-files N`: default `3`, for bounded repo-RAG context
- `--no-auto-test`: disable inferred verification
- `--no-rollback`: keep failed edits for inspection
- `--out-dir /path`: write session artifacts outside the default runlog

Smoke:

```bash
scripts/dg_agent.sh smoke --suite agent
```

## Reliable Edits

Run the full artifacted agent session:

```bash
scripts/dg_agent.sh session \
  --repo /path/to/repo \
  --task "Fix hello.py so greet('Ada') returns exactly hello, Ada!" \
  --file hello.py \
  --auto-test \
  --rollback-on-failure
```

The session writes a directory under `runlogs/dg-agent-sessions/` by default:

- `context.md`
- `context.json`
- `plan.json`
- `task-report.json`
- `verify.json`
- `before.status.txt`
- `after.status.txt`
- `before.diff`
- `final.diff`
- `session.json`

List and inspect prior sessions:

```bash
scripts/dg_agent.sh sessions list
scripts/dg_agent.sh sessions show --latest
scripts/dg_agent.sh sessions show /path/to/session-or-session.json
scripts/dg_agent.sh sessions list --json
```

Print the latest session diff or a specific preserved artifact:

```bash
scripts/dg_agent.sh sessions diff --latest
scripts/dg_agent.sh sessions diff 1
scripts/dg_agent.sh sessions artifact context_md --latest
scripts/dg_agent.sh sessions artifact plan --latest --path-only
scripts/dg_agent.sh sessions artifact stdout --latest --path-only
```

The same preserved artifacts are available through the safe gateway:

```text
GET http://127.0.0.1:8090/v1/agent/sessions
GET http://127.0.0.1:8090/v1/agent/sessions/latest
GET http://127.0.0.1:8090/v1/agent/sessions/latest/diff
GET http://127.0.0.1:8090/v1/agent/sessions/latest/artifacts/context_md
GET http://127.0.0.1:8090/v1/agent/sessions/{session_id}/artifacts/final_diff
```

Useful artifact names:

- `context_md`
- `context_json`
- `plan`
- `task_report`
- `verify_report`
- `before_diff`
- `final_diff`
- `task_stdout`
- `task_stderr`

Build a compact repo context pack without calling the model:

```bash
scripts/dg_agent.sh context \
  --repo /path/to/repo \
  --task "Find where health response is built" \
  --max-files 3 \
  --out /tmp/dg-context.md
```

Generate a task-runner plan from a normal task:

```bash
scripts/dg_agent.sh plan \
  --repo /path/to/repo \
  --task "Add uptime_ms to the health response" \
  --file server.py \
  --auto-test \
  --out /tmp/dg-plan.json
```

Natural-language one-step edit without writing a JSON plan:

```bash
scripts/dg_agent.sh edit \
  --repo /path/to/repo \
  --task "Fix hello.py so greet('Ada') returns exactly hello, Ada!" \
  --file hello.py \
  --auto-test \
  --rollback-on-failure
```

This creates a temporary task-runner plan and delegates to
`scripts/run_task_runner.sh`.

`--auto-test` currently infers conservative commands such as:

- `python3 -m py_compile file.py`
- `bash -n file.sh`
- `python3 -m json.tool file.json >/dev/null`
- `go test ./...`
- `cargo test`
- `npm test -- --runInBand`
- `python3 -m pytest -q`

Run the same verification layer directly:

```bash
scripts/dg_agent.sh verify \
  --repo /path/to/repo \
  --file server.py \
  --report /tmp/dg-verify.json
```

or with an explicit command:

```bash
scripts/dg_agent.sh verify \
  --repo /path/to/repo \
  --test-cmd "python3 -m pytest -q" \
  --json
```

Explicit multi-step plan:

```bash
scripts/dg_agent.sh task \
  --repo /path/to/repo \
  --plan /path/to/plan.json \
  --report /tmp/dg-task-report.json \
  --rollback-on-failure
```

This delegates to `scripts/run_task_runner.sh`.

## Web/API Agent

```bash
scripts/dg_agent.sh web --repo /path/to/repo --port 3284
```

Open:

```text
http://127.0.0.1:3284/chat
```

This delegates to AgentAPI over Aider.

## OpenCode

```bash
scripts/dg_agent.sh opencode-agent -- /path/to/repo
scripts/dg_agent.sh opencode -- /path/to/repo
scripts/dg_agent.sh opencode-mcp -- /path/to/repo
scripts/dg_agent.sh opencode-acp -- --cwd /path/to/repo --hostname 127.0.0.1 --port 3295
scripts/dg_agent.sh agent-bridge --repo /path/to/repo --server opencode-acp --start
```

For the primary bounded terminal workflow on Windows, use
`scripts/dg_agent.sh opencode-agent -- /path/to/repo` or
`scripts/run_opencode_agent_windows.ps1` from the target repository. It keeps
only OpenCode's Bash tool and routes it through the verified DG read/session
delegate. Generic OpenCode/MCP/ACP remain separate OSS integration paths.

OpenCode is available as an experimental TUI, MCP-enabled TUI, and ACP server.
The current local package includes the Windows OpenCode payload for PowerShell
usage and `opencode-linux-x64` for WSL MCP process spawning. Provider/run, ACP,
and live MCP smokes pass; `opencode mcp list` verifies `dg_agent`, `repomix`,
and `serena` as connected.
For reliable edits, prefer `dg_agent.sh task`.

## Goose Experiment

```bash
scripts/dg_agent.sh goose -- run \
  --no-profile \
  --max-turns 1 \
  --text "Reply exactly OK."
```

Goose is available as an experimental ready-made OSS agent shell over the same
local OpenAI-compatible proxy. It brings sessions, MCP/extensions, review, and
TUI commands, but the current local DG profile is not reliable enough at native
tool-calling to replace the Aider/task-runner path. Keep `--max-turns` and an
external `timeout` around non-interactive `goose run` experiments.

`scripts/dg_agent.sh goose-mcp -- ...` runs Goose with an isolated Goose HOME
and mounts both the local DG MCP SDK server and upstream Serena semantic/LSP
MCP as stdio extensions.
`scripts/dg_agent.sh goose-acp` exposes that same profile as a stdio ACP agent
server; `scripts/dg_agent.sh goose-serve -- --port 3294` exposes Goose's
HTTP/WebSocket ACP server.

OpenHands is also available as an ACP stdio server:

```bash
scripts/dg_agent.sh openhands-acp -- --help
scripts/dg_agent.sh agent-bridge --repo /path/to/repo --server openhands-acp --start
```

This route uses `openhands acp --override-with-envs` under the hood because the
standalone `openhands-acp` entrypoint is not reliable in the current package.

OpenHands can also consume the repo-local MCP stack directly through its own
MCP config:

```bash
scripts/dg_agent.sh openhands-mcp -- --repo /path/to/repo --reset
.dg-agent/bin/openhands-mcp --reset
```

This writes `.dg-agent/openhands-persistence/mcp.json` with
`diffusiongemma-local-agent`, `repomix`, and `serena`.

Qwen Code is available on this Windows host as a bounded terminal inspection
experiment. The unified entrypoint prefers the WSL runner with DG, Repomix, and
Serena MCP mounted; the native Windows launcher remains a read-only fallback on
the safe GPU gateway. Edit requests stay on the Aider/session path:

```bash
scripts/dg_agent.sh qwen-code -- --repo /path/to/repo --dry-run
.dg-agent/bin/qwen-code --dry-run
python scripts/dg_agent.py qwen-code -- --repo . --dry-run -- --help
```

Use an explicit file path in the prompt, for example
`--prompt "Read src/app.py. Summarize the request flow."`. See
`docs/qwen_code_local.md` for the current runner and verified behavior.

AutoGen AgentChat is available as a Python framework route:

```bash
scripts/dg_agent.sh autogen -- --repo /path/to/repo --dry-run
.dg-agent/bin/autogen --dry-run
```

It uses `autogen-agentchat`, `autogen-ext[openai]`, and
`configs/client_profiles/autogen.dg.json`.

Hugging Face smolagents is available as another Python framework route:

```bash
scripts/dg_agent.sh smolagents -- --repo /path/to/repo --dry-run
.dg-agent/bin/smolagents --dry-run
```

It uses `smolagents[toolkit]`, `openai`, and
`configs/client_profiles/smolagents.dg.json`.

LangGraph/LangChain is available as another Python graph-agent framework route:

```bash
scripts/dg_agent.sh langgraph -- --repo /path/to/repo --dry-run
.dg-agent/bin/langgraph --dry-run
```

It uses `langgraph`, `langchain`, `langchain-openai`, and
`configs/client_profiles/langgraph.dg.json`. The working local route uses WSL
Python 3.14 plus Linux cp314 wheels in `.wheelhouse/langgraph-wsl-cp314`; the
Windows venv is not used for imports because Windows App Control blocks
`pydantic_core`.

CrewAI is available as another Python multi-agent framework route:

```bash
scripts/dg_agent.sh crewai -- --repo /path/to/repo --dry-run
.dg-agent/bin/crewai --dry-run
```

It uses `crewai.Agent`, `Task`, `Crew`, `LLM`, and
`configs/client_profiles/crewai.dg.json`.

Open Interpreter is available as an OSS code-execution shell route:

```bash
scripts/dg_agent.sh open-interpreter -- --repo /path/to/repo --dry-run
.dg-agent/bin/open-interpreter --dry-run
```

It uses `open-interpreter` with `auto_run=false`, `safe_mode=ask`, and
`configs/client_profiles/open-interpreter.dg.json`.

LlamaIndex is available as a RAG/agent workflow framework route:

```bash
scripts/dg_agent.sh llamaindex -- --repo /path/to/repo --dry-run
.dg-agent/bin/llamaindex --dry-run
```

It uses `OpenAILike` plus `AgentWorkflow.from_tools_or_functions`, which
selects `ReActAgent` for the current non-function-calling model profile.

Haystack is available as a BM25 RAG pipeline over repository files:

```bash
scripts/dg_agent.sh haystack -- --repo /path/to/repo --dry-run
.dg-agent/bin/haystack --dry-run
```

It uses `haystack-ai` with `InMemoryDocumentStore`,
`InMemoryBM25Retriever`, and `OpenAIChatGenerator`.

Docs: `docs/goose_local.md`, `docs/qwen_code_local.md`, `docs/autogen_local.md`, `docs/smolagents_local.md`, `docs/langgraph_local.md`, `docs/crewai_local.md`, `docs/open_interpreter_local.md`, `docs/llamaindex_local.md`, `docs/haystack_local.md`.

## LiteLLM Gateway

```bash
scripts/dg_agent.sh litellm
```

Then point OpenAI-compatible clients at:

```text
base_url: http://127.0.0.1:4100/v1
api_key: dummy
model: diffusiongemma-local
```

This is the preferred compatibility endpoint for external IDE clients and
agent shells. It routes to the local Aider-compatible proxy and keeps a stable
model alias in `configs/litellm.dg.yaml`.

In safe mode, generic chat still avoids raw backend generation. If a client
sends a command-like OpenAI `tools` schema, the proxy returns a `tool_calls`
response that delegates to `dg_agent.sh session --rollback-on-failure`.
The same delegate is available through non-streaming `POST /v1/responses` as a
Responses API `function_call` output item.

Docs: `docs/litellm_gateway.md`.

Client profiles for Continue, Cline/Roo/Kilo style OpenAI-compatible clients,
and OpenAI SDK scripts are in `configs/client_profiles/`.

## RAG Context

```bash
scripts/dg_agent.sh rag --repo /repo --task "..." --print-context
scripts/dg_agent.sh rag --repo /repo --task "..." --max-context-chars 650 --max-files 3 --max-tokens 128
scripts/dg_agent.sh repo-pack --repo /repo --include "src/**" --style markdown --stdout
```

This wraps `scripts/rag_code_agent.py`, the read-only `rg` retrieval layer for
small-context use. Use `--print-context` when an outer agent should inspect the
selected file map and snippets before planning edits.

`repo-pack` wraps upstream Repomix through local `npx --yes repomix`. Use tight
`--include` filters, `--compress`, and `--token-budget` when the client needs a
packed artifact rather than ranked snippets.

For MCP-capable clients, `configs/client_profiles/mcp-client-snippets.json`
also includes optional native Repomix MCP server snippets using
`scripts/run_repomix_mcp.sh`. The wrapper pins the local Node path before
launching upstream `repomix --mcp`, which is more reliable from IDE-launched MCP
processes than calling `npx` directly.

Docs: `docs/rag_agent.md`.

## MCP Server

```bash
scripts/dg_agent.sh mcp --list-tools
scripts/dg_agent.sh mcp
scripts/dg_agent.sh mcp-http -- --host 127.0.0.1 --port 8765
scripts/dg_agent.sh serena-mcp --help-local
```

The MCP server is a local stdio bridge for clients that can launch MCP tools.
The default implementation uses the official `modelcontextprotocol/python-sdk`
`FastMCP` server; `--legacy` keeps the dependency-free JSON-RPC fallback for
debugging. It exposes reliable DG wrapper commands as tools instead of asking
the model to invent tool calls:

`mcp-http` exposes the same tools over the official streamable HTTP transport at
`http://127.0.0.1:8765/mcp` for clients that cannot spawn stdio servers.

`serena-mcp` is an optional upstream semantic/LSP MCP server. Its active WSL
runtime is currently available; `client-init` includes it only after the live
`serena-mcp --check-installed` probe succeeds. The core DG MCP server remains
available independently.

- `dg_repo_status`
- `dg_list_files`
- `dg_search`
- `dg_read_file`
- `dg_git_diff`
- `dg_task_note`
- `dg_task_notes`
- `dg_status`
- `dg_context`
- `dg_rag_context`
- `dg_rag_answer`
- `dg_repo_pack`
- `dg_preflight`
- `dg_plan`
- `dg_task`
- `dg_session`
- `dg_verify`
- `dg_capabilities`
- `dg_client_smoke`
- `dg_client_report`
- `dg_sessions`
- `dg_session_artifact`

It also exposes resources `dg://client-pack`, `dg://status`, `dg://usage`,
`dg://sessions`, `dg://sessions/latest`, `dg://sessions/latest/diff`,
`dg://capabilities/latest`, `dg://client-handoff`, and
`dg://client-handoff/markdown`; repo-local handoff resources
`dg://agent-hub`, `dg://agent-hub/markdown`, `dg://command-kit`,
`dg://command-kit/markdown`, `dg://ide-clients`,
`dg://ide-clients/markdown`, `dg://codex-profile`, and
`dg://codex-profile/config`; and prompts `dg_agent_session`, `dg_agent_context`,
`dg_agent_continue_latest` for MCP clients that support prompt/resource
discovery.

Use `dg_client_report` first when an MCP client needs a portable repo handoff,
then read `dg://client-handoff` or `dg://client-handoff/markdown`.
For a broader bootstrap, read `dg://agent-hub/markdown`, then use the command,
IDE, or Codex resources matching the external client.
Use `dg_rag_context` for compact repository-scale retrieval without model
generation, or `dg_repo_pack` for bounded Repomix packed context. Use `dg_session` for one-shot bounded edits. Use `dg_preflight`,
`dg_context`, `dg_plan`, and `dg_task` when an MCP client should inspect or
persist a task plan before execution.

Use `configs/client_profiles/mcp-server.json` or the workspace-local
`.dg-agent/mcp-server.json` profile in MCP-capable clients. Copy-ready client
templates are exported as `.dg-agent/claude-code.mcp.json`,
`.dg-agent/claude-desktop-mcp.json`, `.dg-agent/cursor.mcp.json`,
`.dg-agent/vscode.mcp.json`, and `.dg-agent/mcp-client-snippets.json`.

Use `scripts/dg_agent.sh mcp-client-config --repo /path/to/repo --client cursor`
or `.dg-agent/bin/mcp-client-config --client cursor` to merge the local server
entry into project client configs without removing unrelated MCP servers. Add
`--with-repomix` to install the optional native Repomix MCP server in the same
config. Add `--with-serena` to install the optional native Serena MCP server;
the flags can be combined. Use `--with-oss-stack` for the recommended full
bundle: DG workflow tools, Repomix repository packing, and Serena semantic/LSP
tools.

Docs: `docs/mcp_server.md`.

Docs: `docs/ide_client_profiles.md`.

## Watchdog

```bash
scripts/dg_agent.sh status
scripts/dg_agent.sh up
scripts/dg_agent.sh watchdog -- status
scripts/dg_agent.sh watchdog -- ensure
scripts/dg_agent.sh watchdog -- watch --interval 30 --restart
```

Docs: `docs/stack_watchdog.md`.

## Windows

```powershell
powershell -ExecutionPolicy Bypass -File \\wsl.localhost\Ubuntu-24.04\root\diffusiongemma-agent\scripts\dg_agent_windows.ps1 doctor
```