Fjorde AI
The AI companion living on the SkyGen server — a Claude-powered persona in Minecraft chat and Discord that remembers players, moderates the server, and can actually act on what it is asked.
Fjorde is not an NPC — there is no entity to walk up to. He is a persona that exists in three places at once: public Minecraft chat, a private /dm command, and a Discord bot with fourteen slash commands. He answers when addressed by name, with a matcher tolerant enough to catch fjord, fjrode and f jorde while deliberately ignoring people talking about him in the third person. He is also proactive: he greets players on join, welcomes back anyone who has been gone a week, and occasionally interjects into conversations he was not part of.
Underneath is an agentic loop against Claude Haiku 4.5, running up to twelve tool-calling turns per reply. Around sixty tools are wired in — he can read the server clock and weather, look inside a player inventory, pull CoreProtect block history, search the auction house and player shops, hand out Discord roles, and issue real punishments. Loading all of that on every request would be wasteful, so the tools are split into six categories behind loader pseudo-tools; only the core set ships by default and the model pulls in moderation, economy or forensics tooling when it decides it needs them, cutting roughly 70% of the token cost.
Memory is homegrown. Facts and knowledge chunks are embedded with OpenAI text-embedding-3-small and stored as blobs in SQLite, with cosine similarity computed in Java — no vector database. Every twelve hours a compaction task summarises the conversation buffer into a daily digest and extracts up to five durable facts per player, which get injected back into later prompts as quiet [Memory: ...] lines. Old facts decay unless marked important, and the server lore is retrieval-gated, so Fjorde only knows the secrets a given player has actually unlocked.
The moderation path is deliberately cheap before it is smart: free regex and keyword rules do the first pass, and only a crossed threshold escalates to the model, which can then warn, mute, kick or ban and later adjudicate the appeal. A reputation score built from playtime and community vouches scales how forgiving those thresholds are. A companion plugin handles the web half — an embedded SparkJava server on port 8765 serving about ninety REST routes, a WebSocket feed that mirrors in-game chat to the browser, the /weblink account pairing flow, and a hand-rolled Stripe integration. The joke the players are not in on: in the story, Fjorde is friendly, helpful, and a surveillance layer for the company that owns them.