Atlas

Large Language Model (LLM) AI Remote Terminal

THE HARDWARE

Lilygo T-keyboard “T-Deck” 320×240 touchscreen. (BlackBerry-style keyboard and trackball. *Sad face, no side scroll wheel on this model)

Raspberry Pi 5 “Kali Linux Black box

Caveat: A Pi 5 running a LLM is more about the proof of concept than a top spec model. Being a Pi 5, I am limited on models of LLM and the llama3.2 runs comfortably on the stack. Any modern phone ai model will be 100x++ “better” but I wanted to build a ground up model with what I had so this is – For science!


THE CONCEPT

A standalone full peripheral terminal interface for communicating with my Pi 5’s custom LLM (Large Language Model) / locally hosted AI ‘ATLAS’.

The Pi 5 runs the whole stack locally:

  • llama3.2 under Ollama for language.
  • Whisper for speech-to-text.
  • Piper for text-to-speech.
  • A local SearXNG instance for web search.
  • A Flask server that renders each screen as a JSON tree.
  • A network scanner runs a subnet sweep and port scan, rendered live.
  • (Studio Wetware Exclusive) ‘Buck-E’, turns a melody into a symbolic notation code, a encoding rather than sheet music or a MIDI file, and can decode that code back into audio through the deck’s speaker.
Early poc ATLAS terminal

The T-Deck is a ESP-32 chipset at heart. It doesn’t know what a LLM, or token is, nor does it have the built in processing power to run a dedicated LLM.

What the T-Deck does provide is every peripheral needed for the headless Pi 5’s perfect remote terminal:

  • Touchscreen
  • Keyboard
  • Trackball
  • Microphone
  • Speaker
  • WiFi connection

The Pi 5 sends the T-Deck a .json tree directing a layout: text, rules, rows, columns, boxes, bars, and the T-Decks firmware walks that tree and draws it with LVGL.


WHAT CAN ATLAS DO?

NMAP

Kali’s NMap, network scanning and identification software.

/nmap
Each network connection identified as a dot. Active connections shown green
Open port scan

BUCK-E

/Buck-E

Codec = Musical notes ➡️ Cipher Syntax ➡️ Music notes. Search for a song, translate the music into 5 Buck-E syntax’s, decode to hear the notes play.

/Buck-E search for “Maple leaf rag”
Converted syntax

EXPLORE

/explore

Runs every topic I’ve saved through SearXNG’s news engines in parallel and returns a numbered digest of new feeds. (RSS in practice)


LOOK

/look

Analyzes a webpages makeup past the information displayed:

What it is, what it’s for and where it links out.

/look studiowetware.com/Gitbeach/

/Look
/Look #1
/Look #2
/Look #3

WEATHER

/weather

Provides local weather.


STATUS

/status

Gives a live model update

/Status

VOICE

/v

Voice communications

1. Starts an audio recording from the T-Deck’s microphone and sends the audio clip to the Pi 5.

2. Whisper transcribes the audio file into a .txt file.

3. The transcript goes through ATLAS as a .txt input.

4. ATLAS process’s the entry and returns its response in text.

5. The text output gets sent to Piper.

6. Piper Dictates ATLAS’ output into .WAV using a voice synthesizer.

6.5. The flask server renders the .txt file into the .json and sends the .json to the T-Deck.

7. The T-deck plays the .wav on its speaker while the text streams to screen.

Voice communication prompts can be chained together:

/v /weather

Dictates the current weather back without any audio recording entry (“/weather” is the .txt file forwarded into ATLAS at step 3).


Code Stacks

LILYGO T-Deck (ESP32-S3, ST7789, ES7210 mic, GT911 touch) · PlatformIO · LVGL


Raspberry Pi 5 running Kali Linux · Flask · Ollama / llama3.2 · whisper.cpp · Piper ·
SearXNG · Docker