A Nintendo 3DS native SSH terminal client, tuned for use with Claude Code.
Connect your 3DS to a remote machine and run Claude Code directly from the handheld — full Japanese rendering, Nerd Font symbols, and a touch keyboard included.
- SSH connection via libssh2 + mbedTLS (xterm-256color PTY)
- Claude Code optimized — Nerd Font symbols, box-drawing characters, Braille spinners, and Unicode special characters all render correctly
- Japanese support — Hiragana, Katakana, and Kanji via Shinonome bitmap font (6,879 glyphs) with HackGen35 fallback
- Pixel-perfect fonts — Terminus for ASCII, HackGen35ConsoleNF + Apple Symbols for symbols, Shinonome for CJK
- Full UTF-8 — multi-byte sequences are preserved across SSH receive buffer boundaries
- Touch keyboard with Ctrl shortcut bar (^C, ^D, ^Z, ^A, ^L, ^R, ^U, ^W, PgUp, PgDn)
- Circle pad scrolling — analog stick scrolls the 500-line scrollback buffer
- 256-color + TrueColor SGR support
- Nintendo 3DS / 2DS (with Homebrew Launcher)
- devkitPro with devkitARM and 3DS libraries
- libssh2 built for 3DS (see
build-libssh2.sh)
# Install devkitPro and set environment variables
export DEVKITPRO=/opt/devkitpro
export DEVKITARM=/opt/devkitpro/devkitARM
# Build libssh2 (first time only)
bash build-libssh2.sh
# Generate font atlas (requires Python 3 + Pillow, Terminus TTF, HackGen35ConsoleNF)
python3 tools/gen_font.py
# Build
makeThe font generator expects these fonts in ~/Library/Fonts/:
- Terminus TTF —
TerminusTTF-4.49.3.ttf - HackGen35ConsoleNF —
HackGen35ConsoleNF-Regular.ttf - Shinonome BDF — clone to
/tmp/shinonome-font/from EasyRPG mirror or openlab.jp
- Copy
3dssh.3dsxto/3ds/3dssh/3dssh.3dsxon your SD card - Launch via Homebrew Launcher
- The app auto-connects using the credentials defined in
source/main.c
Edit
DEFAULT_HOST,DEFAULT_USER,DEFAULT_PASS,DEFAULT_PORTinsource/main.cbefore building.
| Input | Action |
|---|---|
| Circle pad up/down | Scroll terminal history |
| Touch keyboard | Text input |
^C, ^D, etc. |
Shortcut bar at top of keyboard |
| START | Reconnect |
Because why not. The 3DS screen (400×240 top) fits ~66×20 characters at 6×12px — tight but usable for Claude Code's TUI. This project started as a curiosity and turned into a fairly complete terminal emulator.
