A small, self-contained T3 Code client for Nintendo DS hardware and modded Nintendo 3DS systems.
T3 Code DS lets you browse existing threads, read recent messages, and write replies using the touch keyboard. It talks directly to the T3 Code server running on your computer—there is no bridge and no T3 server running on the console.
The easiest option on a modded 3DS is the DSiWare CIA:
- Open the T3 Code DS download page on another device.
- In FBI, choose Remote Install → Scan QR Code.
- Scan the QR code and confirm the installation.
- Launch T3 Code DS from the HOME Menu.
You can also download the latest
t3code-ds.cia directly. The Pages site
always serves the build from the latest successful main workflow.
Alternatively, download t3code-ds.nds, copy it to the SD card, and launch it through
TWiLight Menu++ in DSi mode.
- A modded Nintendo 3DS, 2DS, DSi, or compatible DS homebrew environment
- DSi mode, strongly recommended for the additional memory and Wi-Fi support
- A saved, compatible wireless connection
- A T3 Code server reachable over your trusted local network
The DS client currently supports plain http:// LAN endpoints only. It does not support TLS, so
do not expose the T3 server port to the public internet.
- Open Settings → Connections.
- Under Manage Local Backend, enable Network access.
- Select the direct LAN endpoint, normally something like
http://192.168.1.20:3773. - Choose Create Link and keep the direct
http://.../pair#token=...link.
Run T3 on an address your console can reach:
npx t3@latest serve --host 0.0.0.0Binding to a specific private LAN or Tailnet address is preferable when practical.
Enter the direct server address and the one-time pairing token. A complete
http://.../pair#token=... URL can be entered in the first field instead.
The pairing credential is exchanged for a bearer session scoped to:
orchestration:read orchestration:operate
The resulting session is saved to sd:/t3ds/config.ini. The bearer is plaintext on the SD card;
use SELECT on the thread list to remove it and pair again, or revoke the client from T3 Code.
For long tokens, you can prepare the configuration file before launching:
server=http://192.168.1.20:3773
pairing_token=PASTE_THE_ONE_TIME_TOKEN_HERE- Direct OAuth pairing with a T3 Code environment
- Active thread list with running and pending indicators
- Recent user and assistant messages
- Replies composed with the DS touch keyboard
- Automatic polling while a thread is running
- Manual list and thread refresh
- Large-thread handling that discards payloads the DS UI does not display
- Scoped session storage on the console SD card
The HTTP routes and command payloads follow the same client flow as T3 Code Mobile. The mobile app uses a WebSocket subscription after loading its HTTP snapshot; this build polls the thread snapshot to keep the runtime small and dependable on DS hardware.
| Screen | Control | Action |
|---|---|---|
| Thread list | Up / Down | Move selection |
| Thread list | A | Open thread |
| Thread list | X | Refresh |
| Thread list | SELECT | Remove pairing and set up again |
| Thread | A | Write a reply |
| Thread | X | Refresh |
| Thread | Up / Down | Scroll one line |
| Thread | L / R | Scroll one page |
| Thread | B | Return to thread list |
| Anywhere | START | Exit |
| Touch keyboard | ENTER | Confirm or send |
| Touch keyboard | B | Cancel |
You need Docker, Git, Make, and a C compiler. The packaging script uses devkitPro's official
devkitARM image and builds the open-source make_cia utility from a pinned CTR Toolkit revision:
make test
ROM_VERSION=4 ./tools/build_cia.shThe outputs are:
t3code-ds.nds— homebrew ROMt3code-ds.dsi— DSi-enhanced SRLt3code-ds.cia— installable DSiWare package
The GitHub Actions workflow runs the host protocol/client tests, builds all three packages,
publishes downloadable artifacts, deploys the landing page, and attaches builds to v* tags.
For quick ROM-only builds:
make dockerTo serve a local FBI download page and QR code:
python3 tools/serve_rom.py --bind 0.0.0.0 --port 8000The DS interface intentionally retains a compact view of T3:
- Up to 64 active threads
- The newest 24 messages in an open thread
- Up to 1,535 bytes of text per retained message
- Thread HTTP responses up to 8 MiB
- Activity payloads, checkpoints, proposed plans, and attachment metadata are removed before JSON tokenization because this client does not display them
- Markdown is rendered as readable plain text; unsupported glyphs become
?
Approvals and structured user-input prompts must still be handled in desktop or mobile T3 Code. Creating projects and new threads is outside the current client.
include/ C headers
source/ DS client, HTTP, JSON, and T3 protocol code
tests/ Host-side protocol and isolated HTTP integration tests
site/ GitHub Pages landing page
tools/build_cia.sh Reproducible NDS, DSi SRL, and CIA packaging
tools/serve_rom.py Local download and QR server
.github/workflows/ CI, release artifacts, and Pages deployment
- T3 Code for the server and mobile client protocol
- devkitPro and libnds for the Nintendo DS toolchain
- CTR Toolkit for
make_cia - melonDS for emulator testing
T3 Code DS is an independent community project and is not affiliated with Nintendo.