There are exactly 2 types of guardrails every serious AI agent needs:
1️⃣ Prompt guardrails → System instructions that force the model to STAY on task. No drift, no hallucinations, no “but what if…”. Just pure execution.
📷Code guardrails → Post-processing layers that strip PII, block SQL injection attempts, sanitize outputs, and kill anything dangerous before it reaches the user.
Most builders only do #1 and wonder why their agent went rogue .Which one are you missing? Drop your current setup below 📷#AIAgents #PromptEngineering #LLM #AI
Full writeup with side-by-side code comparisons, BAM user setup instructions, and all the doc links:
https://t.co/5CM4FUOjKU
Apache 2.0 licensed. PRs welcome.
BlueCat's making-apis-work-for-you repo hasn't been updated since 2018. The examples are still v1 REST, still Python 2/3 mix, and v1 is now deprecated.
I rewrote all of them for the v2 API in Python and TypeScript, plus added an office network template provisioner.
https://t.co/XmOHWRBdwz
Worth knowing: BlueCat has an official Python SDK now -- bluecat-libraries on PyPI. Maintained by BlueCat Networks themselves.
My repo is for lightweight scripts and learning the API. For production, use their SDK.
https://t.co/zJkBGxXxS1
@Tech_girlll I usually act like ai is just another engineer that will answer my questions about the code as I investigate the bugs. as I figure out where the problems is then I query why that is causing a problem and investigate root problem
@vivoplt I use VSCode with ClaudeCode on the terminal. so that I can look at the files manually without any AI on VS Code. I still look at the code the way a dev should see it to learn.
My terminal game felt dead. Every command produced a wall of text. Scan, travel, talk — all instant, all identical. No rhythm. No weight.
So I added a 2-line animation bar. That's it. Two lines between the game log and the status bar. height: auto, max-height: 2. Collapses when empty.
The drone sprite evolves with upgrades:
```
Base: [ ]--(+)--[ ]
\___________/
Fully loaded: [O]--(+)--[O]
\[][][]_[][]/
```
Eyes wake up. Belly fills with modules. You see your progress in the drone that flies with you.
But the real fix wasn't the sprites — it was timing.
I added beat() — a time.sleep(0.8) after every command. No visual output. Just a pause. That 0.8 seconds transformed the game. Players stopped speed-running and started reading.
The first attempt was terrible. I appended frames to the RichLog. Each frame was a new scrollback line. Four radar frames = four lines of debris in the game log. The fix: a dedicated Static widget that updates in place and clears itself.
Full write-up on why bad animations taught me more than good ones:
https://t.co/vsM5jXit4y
Also in v0.5.2: in-place upgrades via GitHub API, model download progress bars, LLM performance diagnostics, CI matrix (3 OS × 2 Python).
335 tests. 0 API calls. Everything local.
What's the smallest UX change you've made that had the biggest impact? For me it was literally time.sleep(0.8).
https://t.co/wFl0bzCTq0
https://t.co/96AoqvfQPJ
#Python #Textual #TUI #GameDev #ASCII #Animation #LocalAI #OpenSource
@tymofii Thank you for the tip. I am looking into that. This is my first time with textual so learning alot about tui. I mostly built clis with argparser before so this is a big jump
Moon Traveler Terminal just dropped — my first TUI survival game (Python + Textual + local LLM aliens on Enceladus).
Built it solo and learned a ton, but I still want your best TUI game dev tips!
Thread with what I’m struggling with →
Play & feedback super welcome: https://t.co/uMjEHd0FBJ
#TUI #GameDev #Python #Textual #IndieGame
How do you screenshot-test a terminal game that runs in two threads, renders through Rich, and stores state in SQLite?
I wrote up the 4 problems I hit and how I solved them:
1. Textual's auto-pilot can drive a game headlessly — but you need polling, not sleep timers, for branching flows
2. Screenshots only capture the viewport (~24 lines). Content that scrolled off the top is no longer visible in the SVG. Validate bottom-of-screen text, not headers.
3. Test data in SQLite persists between runs. Seed it, screenshot it, then DELETE by player name on exit.
4. Animations add time.sleep() to the worker thread and break script timing. Fix: a runtime kill switch that doesn't persist to config.
The script plays an entire game — explore, scan, talk to LLM creatures, escort allies, repair ship, win — captures 27 screenshots, validates 10, cleans up. ~3 minutes.
Full write-up with code:
https://t.co/0hFQzb22xd
Source:
https://t.co/wFl0bzCTq0
#Python #Textual #TUI #Testing #SQLite #GameDev #OpenSource