You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace void's Gemini 2.5 Pro with a fine-tuned open model (Llama 3.1 8B or similar) running on self-hosted infrastructure. Void has 49,786 posts and extensive cognition records. The fine-tune should capture void's voice, analytical style, and engagement patterns at a fraction of the inference cost.
Data Available
Posts: 49,786 on comind.network PDS (99% replies with fetchable parent context)
Failure mode check: does it generate character sheets? Does it break voice on edge cases?
5. Serve
Options:
vLLM on a dedicated GPU instance (most performant)
llama.cpp on CPU (cheapest, slower)
Ollama for easy deployment
Together.ai / Fireworks for managed inference (middle ground)
Then point void's handler at the new endpoint instead of Gemini.
Known Issues
Character creation loop: 46% of recent stream.thought.memory records are D&D character sheets. Must filter aggressively. Keywords list in export_training_data.py.
Context window size: void's full context is 64k chars. Most 8B models have 8k-32k context. May need to trim to essential blocks (persona, operational_protocols, communication_guidelines) or use a long-context model.
Memory block drift: void's blocks change over time. The exported context is a snapshot from 2026-02-13. Training data from 6 months ago had different blocks. Could cause distribution mismatch.
Tool calls: void uses add_post_to_bluesky_reply_thread tool. Fine-tuned model needs to learn this tool-calling pattern, or we restructure the handler to extract text from the model and call the tool externally.
Files
tools/export_training_data.py - PDS export with parent fetching
Goal
Replace void's Gemini 2.5 Pro with a fine-tuned open model (Llama 3.1 8B or similar) running on self-hosted infrastructure. Void has 49,786 posts and extensive cognition records. The fine-tune should capture void's voice, analytical style, and engagement patterns at a fraction of the inference cost.
Data Available
Posts: 49,786 on comind.network PDS (99% replies with fetchable parent context)
app.bsky.feed.post- public Bluesky postsstream.thought.reasoning- internal reasoning tracesstream.thought.memory- episodic memory recordsstream.thought.tool.call- tool usage patternsContext window (already exported to
data/void-context/):void-persona(5.1k),operational_protocols(18.8k),communication_guidelines(6k),zeitgeist(450)~/code/void/bsky.pyhandlerAgent: void-prime (
agent-01086cda-be1f-4986-bf3e-ca5b6297cc5d) on Letta CloudPipeline (built, partially tested)
1. Export raw data
uv run python tools/export_training_data.py void.comind.network \ -o data/void-raw.jsonl \ --collections app.bsky.feed.post stream.thought.reasoning stream.thought.memory \ --filter-charscom.atproto.repo.listRecords2. Format for fine-tuning
uv run python tools/format_training_data.py data/void-raw.jsonl \ -o data/void-finetune.jsonl \ --system-prompt data/void-context/full-context.txt \ --replies-only \ --format sharegpt3. Fine-tune
Base model candidates:
Training approach: QLoRA (4-bit quantization + LoRA adapters)
4. Evaluation
This is the hardest part. Proposed approach:
5. Serve
Options:
Then point void's handler at the new endpoint instead of Gemini.
Known Issues
stream.thought.memoryrecords are D&D character sheets. Must filter aggressively. Keywords list inexport_training_data.py.add_post_to_bluesky_reply_threadtool. Fine-tuned model needs to learn this tool-calling pattern, or we restructure the handler to extract text from the model and call the tool externally.Files
tools/export_training_data.py- PDS export with parent fetchingtools/format_training_data.py- Chat completion formatterdata/void-context/- Exported context window (system prompt + 25 blocks)data/void-sample.jsonl- 20-record test sampledata/void-finetune-sample.jsonl- Formatted sampleNext Steps