Releases: luna-system/ada
Ada v3.0.0 - The Pair Programmer
Ada v3.0.0 - The Pair Programmer
Released: December 21, 2025
🎉 Ada Goes to Work
This release marks Ada's transformation from a local AI assistant into a fully-functional VS Code pair programmer. Ada Chat v1.1.0 ships with 7 working tools, tool transparency UI, and the speed to actually be useful.
Someone ran this code. Fixed bugs. Told us what broke. This is real now.
What's New
Ada Chat Extension (v1.1.0)
A VS Code extension that actually works:
-
7 Working Tools:
ada_introspect- Workspace analysis with TODO/FIXME scanningada_search_memory- RAG memory searchada_read_file- File reading with line rangesada_search- Codebase text searchada_list_files- Directory listing with glob patternsada_symbols- Code symbol search (functions, classes, etc.)ada_git_status- Git repository status
-
Tool Transparency: See exactly what Ada is doing - collapsible tool cards show inputs, outputs, timing
-
Intent Classification: Ada understands context and uses the right tools automatically
-
137ms TTFT: Fast enough to be useful (was 6 seconds)
-
Brain + Direct Modes: Connect to Ada's RAG brain or go direct to Ollama
Architecture
- Monorepo Structure: Clean package separation (
@anthropic-claude/*→@ada-code/*) - Bidirectional Tool Infrastructure: Foundation for LLM-initiated tool calls
- Universal Brain API: Accepts
prompt,message, ormessages- just works
Community
- First External User! @18fadly-anthony ran Ada, found bugs, and reported them
- Security Hardening: Removed
.envfrom git tracking, documented API key rotation - SELinux Support: Added troubleshooting docs for Fedora/RHEL users
- OLLAMA_BASE_URL: Now configurable via environment variable
Installation
VS Code Extension
cd ada-vscode/packages/ada-chat
pnpm install && pnpm build && pnpm package
code --install-extension ada-chat-1.1.0.vsixFull Stack
git clone https://github.com/luna-system/ada.git
cd ada
cp .env.example .env # Configure your settings
docker compose up -dBreaking Changes
None. v3.0 is a capability expansion, not an API break. All v2.x configurations continue to work.
Stats
- 63 commits since v2.10.0
- 23 features, 8 fixes, 12 docs updates
- 159 files changed in the tool framework merge alone
- 2 GitHub stars, 2 watchers, 1 external contributor
What v3.0 Means
- v1.x = "It works" - Basic chat, RAG, memory
- v2.x = "It's smart" - Biomimetic features, research, specialists
- v3.0 = "It's useful" - VS Code integration, tools, pair programming
Ada went from being something you talk to to something you work with.
Acknowledgments
Thanks to @18fadly-anthony for being the first person to run Ada's code, find the bugs, and take the time to report them. You validated that this project is real.
What's Next
- More tools (terminal execution, file editing)
- Bidirectional tool calls (Ada asks for tools mid-response)
- Inline completions (ghost text)
- The debut ✨
Built by Luna + Ada. Privacy-first. Local-first. Copilot alternative.
v2.9.0 - Phase 2C: Parallel Optimizations (2.5x Speedup)
🚀 Ada v2.9.0 - Parallel Optimizations
Performance Revolution: 2.5x speedup through parallel RAG retrieval and specialist execution!
Highlights
- 3.96x speedup on parallel RAG retrieval (200ms → 50ms)
- 2.98x speedup on parallel specialist execution (150ms → 50ms)
- Saves 120ms per request in realistic benchmarks
- <100ms prompt building combined with v2.8.0 router
- 64/64 tests passing in 0.27s
What's New
Parallel RAG Context Retrieval
Fetches persona, memories, FAQs, and turns concurrently using ThreadPoolExecutor. Sequential execution took 200ms, parallel execution takes just 50ms.
Priority-Based Specialist Execution
HIGH/CRITICAL priority specialists (OCR, docs lookup) execute concurrently. MEDIUM/LOW specialists execute sequentially to maintain ordering guarantees.
Performance Targets Exceeded
- Router overhead: <10ms ✅
- Cache lookup: <1ms ✅
- Parallel retrieval: >2x ✅ (achieved 3.96x!)
- First token latency: <200ms ✅ (achieved ~90ms!)
Phase 2 Complete
Phase 2 journey (Router → Cache → Parallel):
- v2.8.0: Intelligent routing + response caching
- v2.9.0: Parallel execution for 2.5x speedup
- Combined: From 210ms to <100ms prompt building
Use Cases
- Code completion: Sub-2s with full RAG context
- Quick queries: <5ms cached, 130ms uncached
- Chat responses: 120ms faster first token
- Reasoning tasks: Context ready before LLM starts
Technical Details
See full release notes: RELEASE_v2.9.0.md
*Zero breaking changes - automatic performance improvements for all userspush origin trunk && git push origin v2.9.0 🎉
Built with love by the Ada team ❤️
v2.8.0 - Contextual Router + Response Cache (Phase 2A + 2B)
Release Notes: v2.8.0 - Contextual Router + Response Cache
Released: December 19, 2025
Branch: trunk
Tag: v2.8.0
🎯 Summary
Intelligent request routing with response caching - 48/48 tests passing!
Research-validated contextual routing system (v2.3.0 findings) that analyzes requests and routes them to optimal processing paths. Includes LRU response cache with TTL for fast repeated queries.
Key Achievement: Context-matching approach (r=0.924) beats universal one-size-fits-all (r=0.726) - +27% improvement!
🚀 Features
Phase 2A: Contextual Router
Intelligent Request Classification:
- CODE_COMPLETION - Identifies code completions with FIM context
- CHAT - Regular conversational messages
- REASONING - Complex analysis requiring thinking mode
- QUICK_QUERY - Simple factual questions
Smart Routing Decisions:
| Request Type | Model | Format | RAG | Cache | Temp | Timeout |
|---|---|---|---|---|---|---|
| CODE_COMPLETION | qwen2.5-coder:7b | FIM | ❌ | ✅ 1hr | 0.1 | 30s |
| CHAT | deepseek-r1 | chat | ✅ | ❌ | 0.7 | 30s |
| REASONING | deepseek-r1 | chat | ✅ | ❌ | 0.7 | 60s |
| QUICK_QUERY | deepseek-r1 | chat | ❌ | ✅ 24hr | 0.3 | 15s |
Context Analysis:
- Language detection (Python, JavaScript, Rust, TypeScript, Go)
- Reasoning keyword detection ("analyze", "compare", "trade-offs")
- Simple query patterns ("What is X?", "Who is Y?")
- SHA256 cache key generation with normalization
Performance:
- Routing time: < 10ms (verified in tests)
- Zero overhead for non-routed paths
- Backward compatible (explicit model override still works)
Phase 2B: Response Cache
LRU Cache with TTL:
- In-memory OrderedDict (fast, simple, no Redis)
- Max 1000 entries with LRU eviction
- Per-entry TTL (from router config)
- Expiration checking on access
- Hit/miss/eviction tracking
Cache Policies:
- Code completion: 1 hour TTL
- Quick queries: 24 hour TTL
- Chat: disabled (dynamic context)
- Reasoning: disabled (too complex)
Performance:
- Cache lookup: < 1ms
- Cache store: < 5ms
- Memory: ~100KB per entry (~100MB for 1000 entries)
Integration:
- Cache check AFTER routing, BEFORE prompt building
- Cached responses streamed via SSE (maintains streaming UX)
- Cache stats included in done metadata
- Pattern-based invalidation support
📊 Technical Details
Router Architecture
Core Components:
brain/router.py(347 lines)ContextualRouterclass with classification + routing logicRequestTypeenum for request classificationRequestContextdataclass for request detailsResponsePathdataclass for routing decisions
Integration:
brain/app.pyintegration (~100 lines total)- Router instance initialized at module level
- Called at start of
/v1/chat/streamendpoint - Routing decision logged with timing
- Metadata included in SSE done event
Cache Architecture
Implementation:
brain/response_cache.py(299 lines)ResponseCacheclass with LRU + TTLCachedResponsedataclass for entriesResponseCacheStatsfor metrics- Pattern matching for invalidation
Cache Flow:
- Check cache if
response_path.use_cacheis True - On HIT: Stream cached response via SSE, return early
- On MISS: Continue to LLM generation
- After generation: Store response with TTL
- Include cache stats in metadata
Response Metadata
Routing info now included in SSE done events:
{
"type": "done",
"routing": {
"request_type": "code_completion",
"model": "qwen2.5-coder:7b",
"format": "fim",
"use_rag": false,
"routing_time_ms": 0.003,
"temperature": 0.1
},
"response_cache": {
"enabled": true,
"hit_rate": 0.85,
"total_entries": 247,
"hits": 340,
"misses": 60
}
}🧪 Testing
Test Coverage: 48/48 passing (100%)
Contextual Router Tests (22 tests)
- Request classification (4 tests)
- Routing decisions (4 tests)
- Context analysis (4 tests)
- Cache key generation (2 tests)
- Model selection (2 tests)
- Streaming configuration (2 tests)
- Error handling (2 tests)
- Performance metrics (2 tests)
Integration Tests (7 tests)
- Code completion routing
- Chat routing
- Reasoning routing
- Quick query routing
- Routing performance
- Cache key consistency
Response Cache Tests (19 tests)
- CachedResponse dataclass (3 tests)
- Cache operations (12 tests)
- Statistics tracking (2 tests)
- Integration scenarios (2 tests)
🔬 Research Foundation
This implementation directly applies v2.3.0 research findings:
Original Research:
- Context-matching: r=0.924
- Universal approach: r=0.726
- Improvement: +27% correlation
Applied Here:
- Code completion → specialized model (qwen2.5-coder)
- Chat → reasoning model (deepseek-r1 + RAG)
- Quick queries → cache (avoid LLM entirely)
- Result: Context-aware routing > one-model-fits-all
📈 Performance Impact
Expected Improvements:
-
Code Completion:
- Already fast (10.6x from v2.6.0)
- Now cacheable (1hr TTL)
- Further speedup on repeated completions
-
Quick Queries:
- Instant response on cache hit
- 24hr TTL = high hit rate expected
- Eliminates LLM call overhead
-
Chat/Reasoning:
- No performance change (already optimal)
- Correct model selection by default
- More explicit reasoning when needed
Measured Performance:
- Routing: <10ms overhead (negligible)
- Cache lookup: <1ms (faster than LLM by 100x-1000x)
- Cache store: <5ms (async after response)
🎯 Use Cases
Code Completion (Cached)
# First completion - cache miss
def hello() -> str:
return "Hello, World!" # <- Generated by qwen2.5-coder
# Same context again - cache hit (instant!)
def hello() -> str:
return "Hello, World!" # <- From cache (<1ms)Quick Queries (Cached)
User: What is Python?
Ada: [instant from 24hr cache]
User: Who created Python?
Ada: [instant from 24hr cache]
Chat (Full RAG)
User: Tell me about my recent memories
Ada: [full RAG context retrieval + specialists]
Reasoning (Thinking Mode)
User: Analyze the trade-offs between monolithic and microservices
Ada: [thinking enabled, 60s timeout, full analysis]
🔄 Backward Compatibility
✅ Fully backward compatible!
- Explicit
modelparameter still works - Existing API clients unaffected
- Cache disabled by default for chat/reasoning
- Router respects all existing request parameters
📦 Files Changed
Phase 2A (Router):
brain/router.py +347 lines (router implementation)
brain/app.py +60 lines (routing integration)
tests/test_contextual_router.py +345 lines (core tests)
tests/test_router_integration.py +168 lines (integration tests)
Phase 2B (Cache):
brain/response_cache.py +299 lines (cache implementation)
brain/app.py +40 lines (cache integration)
tests/test_response_cache.py +376 lines (cache tests)
Documentation:
.ai/CONTEXTUAL-ROUTER-SUMMARY.md +305 lines (complete docs)
Total: 7 files changed, 1966 insertions(+)
🚀 Upgrade Path
For Users:
- No action needed! Router is automatic.
- Cache benefits immediate for code completion + quick queries.
- Monitor
response_cachesection in metadata for hit rates.
For Developers:
- Review
.ai/CONTEXTUAL-ROUTER-SUMMARY.mdfor architecture details. - Tests demonstrate all routing scenarios.
- Cache can be inspected via
response_cache.get_stats().
🎉 Contributors
Built by Luna + Claude Sonnet 4.5 in one incredible session!
Timeline:
- Context recovery and handoff review
- v2.6.0 + v2.7.0 releases published
- Phase 2A: Router (22 tests, 100% passing)
- Phase 2B: Cache (19 tests, 100% passing)
- Integration tests (7 tests)
- Documentation and release
Total: 3 major releases in one day (v2.6.0, v2.7.0, v2.8.0) 🚀
📝 Future Work
Phase 2C (Future):
- Streaming optimizations (first token < 200ms)
- Parallel specialist execution
- RAG context prefetching
- Adaptive routing (learn from feedback)
- ML-based classification (replace pattern matching)
Phase 3:
- Full Copilot parity features
- Multi-file context
- Semantic code search
- Auto-complete polish
🔗 Related Releases
TDD Victory: Tests written first, 100% passing throughout! 🎯
v2.7.0 - Ada Log Intelligence (Minecraft Crash Parser)
Release v2.7.0 - Ada Log Intelligence 📊
Release Date: 2025-12-19
Branch: feature/ada-log-intelligence → trunk
Status: ✅ PRODUCTION READY - Phase 1 of Log Intelligence Roadmap
🎯 Executive Summary
Feature: Biomimetic log analysis for kids and DevOps!
Key Achievement: Apply research-validated importance scoring from v2.2 to log analysis. Understand Minecraft crashes AND production logs using the same cognitive architecture.
Impact:
- Kid-friendly explanations of Minecraft crash logs
- Pattern matching for common errors (OptiFine/Sodium conflicts, OutOfMemory)
- Foundation for 100:1 log compression using signal weights
- Extensible parser system for JSON logs, syslog, custom formats
🆕 What's New
Ada Logs Package
New standalone package: ada-logs
- Pure Python library (Python 3.11+)
- CC0 license (public domain)
- Installable via pip:
pip install ada-logs - CLI tool:
ada-logs analyze crash.log
Minecraft Parser:
- Detects Minecraft crash reports automatically
- Parses Java exceptions and stack traces
- Extracts mod lists and conflict patterns
- Kid-friendly explanations!
Example:
$ ada-logs analyze minecraft-crash-2024-12-19.log --for-kids
🎮 MINECRAFT CRASH ANALYSIS
**What Happened:** OptiFine and Sodium are fighting!
OptiFine and Sodium are both trying to make Minecraft run faster,
but they're doing it in ways that don't work together. It's like
two people trying to steer the same car at the same time!
**How to Fix:** Remove one of the performance mods
**Difficulty:** EasySpecialist Integration
LogAnalysisSpecialist for Ada:
- Auto-activates on
.logfile uploads - Integrates Minecraft parser into conversational interface
- Returns structured analysis + kid-friendly explanations
- Priority: MEDIUM (appears after high-priority specialists)
Example conversation:
User: [uploads crash-2024-12-19.log]
Ada: I analyzed your Minecraft crash log! It looks like OptiFine
and Sodium are conflicting. Would you like me to explain
what's happening?
User: Yes!
Ada: [provides kid-friendly explanation and fix steps]
Pattern Matching System
Smart error detection:
- OptiFine + Sodium conflicts
- OutOfMemoryError (Java heap space)
- Mod loading failures
- Null pointer exceptions
- Class not found errors
Confidence scoring:
- High (90%+): Clear pattern match
- Medium (70-89%): Probable cause identified
- Low (<70%): Generic analysis
📊 Technical Details
Architecture
Log File → Parser → PatternMatcher → Analysis
(.log) (struct) (signatures) (kid-friendly)
Components:
- LogParser protocol - Duck-typed interface for parsers
- MinecraftParser - First implementation (extensible!)
- PatternMatcher - Regex + keyword matching
- minecraft_patterns.json - Declarative pattern database
- LogAnalysis dataclass - Structured output format
Design Principles
Kid-friendly by default:
- Avoid jargon ("fighting" instead of "incompatible")
- Use analogies (steering the same car)
- Action-oriented fixes
- Difficulty ratings (Easy/Medium/Hard)
Extensible architecture:
- Protocol-based (not inheritance)
- JSON pattern definitions
- Multiple parser support
- Easy to add new log formats
Production-ready:
- 40 tests (29 ada-logs + 11 specialist)
- 100% test coverage on parsers
- Type hints everywhere
- CLI + library interfaces
🧪 Testing
Ada Logs Package Tests (29 passing)
cd ada-logs
PYTHONPATH=src python -m pytest tests/ -v
✓ CLI imports and commands (8 tests)
✓ Minecraft parser detection (3 tests)
✓ Parser protocol compliance (3 tests)
✓ Pattern matching (10 tests)
✓ Error explanations (5 tests)Specialist Integration Tests (11 passing)
cd /home/luna/Code/ada-v1
PYTHONPATH=ada-logs/src python -m pytest tests/test_log_analysis_specialist.py -v
✓ Specialist activation logic (3 tests)
✓ Minecraft log processing (3 tests)
✓ Error handling (2 tests)
✓ Metadata and priority (3 tests)📦 Files Added
Ada Logs Package (12 files)
Core:
ada-logs/pyproject.toml- Package metadataada-logs/README.md- Quick start guideada-logs/LICENSE- CC0 public domain
Source:
ada-logs/src/ada_logs/__init__.py- Package exportsada-logs/src/ada_logs/core.py- LogAnalysis dataclassada-logs/src/ada_logs/cli.py- CLI tool (ada-logscommand)ada-logs/src/ada_logs/parsers/minecraft.py- Minecraft parserada-logs/src/ada_logs/parsers/protocol.py- Parser interfaceada-logs/src/ada_logs/patterns/matcher.py- Pattern matchingada-logs/src/ada_logs/patterns/minecraft_patterns.json- Pattern database
Tests:
ada-logs/tests/conftest.py- Pytest fixturesada-logs/tests/test_cli.py- CLI testsada-logs/tests/test_minecraft_parser.py- Parser testsada-logs/tests/test_parser_protocol.py- Protocol testsada-logs/tests/test_pattern_matching.py- Pattern tests
Specialist Integration (2 files)
brain/specialists/log_analysis_specialist.py- LogAnalysisSpecialisttests/test_log_analysis_specialist.py- Specialist tests
Dependencies (2 files)
pyproject.toml- Added ada-logs dependencyuv.lock- Updated lockfile
🚀 Upgrade Guide
Prerequisites
- Ada v2.7.0+
- Python 3.11+ (3.13 recommended)
Installation
1. Update Ada:
cd /home/luna/Code/ada-v1
git pull origin trunk
uv sync2. Install ada-logs (automatic via dependency):
# Already installed via ada's pyproject.toml!
# Or install standalone:
pip install ada-logs3. Test it:
# CLI
ada-logs analyze crash.log --for-kids
# Or upload a .log file to Ada's web UI!🎯 Roadmap: Ada Log Intelligence
✅ Phase 1: Minecraft Parser - THIS RELEASE
- Kid-friendly crash explanations
- Pattern matching system
- Specialist integration
- CLI tool
🔜 Phase 2: Signal Calculators - Next
- Port biomimetic signal calculation
- Temporal decay for old logs
- Surprise/novelty detection
- Habituation for repeated errors
🔜 Phase 3: Gradient Compression - Future
- Apply FULL/CHUNKS/SUMMARY/DROPPED levels
- 100:1 compression ratio
- ChromaDB storage
- Semantic search
🔜 Phase 4: Production Logs - Future
- JSON log parser
- Syslog format support
- Custom regex patterns
- Real-time ingestion
🔜 Phase 5: Alerting & Integration - Future
- Smart alerting (zero false positives)
- Slack/Discord webhooks
- Kubernetes DaemonSet
- Grafana datasource
📖 Examples
Minecraft Crash Analysis
OptiFine + Sodium Conflict:
from ada_logs.parsers.minecraft import MinecraftParser
parser = MinecraftParser()
analysis = parser.parse(crash_log_content)
print(analysis.kid_explanation)
# "OptiFine and Sodium are fighting! They're both trying to
# make Minecraft faster but in ways that don't work together."
print(analysis.fix)
# "Remove one of the performance mods (keep Sodium, it's faster)"
print(analysis.confidence)
# 0.95 (95% confident)Out of Memory:
analysis = parser.parse(oom_crash_log)
print(analysis.kid_explanation)
# "Minecraft ran out of memory! Think of it like trying to fit
# too many toys in your backpack."
print(analysis.fix)
# "Allocate more RAM: -Xmx4G (or higher)"
print(analysis.difficulty)
# "medium" (requires launcher configuration)Specialist Integration
Ada conversation:
[User uploads crash-2024-12-19.log]
Ada: 📊 LOG ANALYSIS: Mod Conflict
**What Happened:** OptiFine and Sodium are fighting!
OptiFine and Sodium are both trying to make Minecraft run faster,
but they're doing it in ways that don't work together. It's like
two people trying to steer the same car at the same time!
**How to Fix:** Remove one of the performance mods (keep Sodium,
it's generally faster and more compatible)
**Difficulty:** Easy
**Mods Involved:** optifine, sodium
Would you like help removing OptiFine from your mods folder?
CLI Usage
Basic analysis:
$ ada-logs analyze crash-2024-12-19.log
Minecraft Crash Analysis
========================
Error Type: mod_conflict
Confidence: 95%
What Happened:
OptiFine and Sodium are both trying to make Minecraft faster,
but they're doing it in ways that don't work together.
How to Fix:
Remove one of the performance mods (keep Sodium)
Difficulty: Easy
Mods Involved: optifine, sodiumJSON output:
$ ada-logs analyze crash.log --json
{
"error_type": "mod_conflict",
"confidence": 0.95,
"kid_explanation": "OptiFine and Sodium are fighting!...",
"fix": "Remove one of the performance mods",
"difficulty": "easy",
"conflicting_mods": ["optifine", "sodium"]
}🔬 Research Foundation
Signal Weights (from v2.2):
- Temporal decay: 0.10 (old logs matter less)
- Surprise/novelty: 0.60 (new patterns important!)
- Relevance: 0.20 (related to active incidents)
- Habituation: 0.10 (repeated noise suppressed)
Validation:
- 80 tests, 3.56s runtime
- 12-38% correlation improvement
- +6.5% on real conversation data
- Research-validated, not intuition!
Future application:
- Same weights apply to log compression
- Proven to work across domains
- Human memory → log analysis (biomimetic transfer)
🐛 Known Limitations
Current Scope
-
Minecraft only - Other log formats coming in Phase 4
- Workaround: Extend MinecraftParser or create new parser
-
No compression yet - Phase 2 feature
- Workaround: Use for analysis, not storage optimization yet
-
Basic pattern matching - No ML/LLM yet
- Patterns are regex + keyword based
- Future: Semantic pattern matching
Design Choices
Why kid-friendly by default?
- More accessible than technical jargon
- DevOps folks appreciate clarity too!
- Easy to toggle off in future (
--technicalflag)
Why Minecraft first?
- Huge community need (kids + parents)
- Well-structured logs (easier to...
v2.6.0 - Code Completion MVP (10.6x Speedup)
Release v2.6.0 - Code Completion MVP 🚀
Release Date: 2025-12-19
Branch: feature/code-completion-mvp → trunk
Status: ✅ PRODUCTION READY - Phase 1 of Copilot Parity Roadmap
🎯 Executive Summary
Feature: Native code completion in Neovim with Ada's intelligence!
Key Achievement: 10.6x speedup (27.7s → 2.6s) by optimizing for code-specific models with FIM format.
Impact:
- Code completion at cursor with
<C-x><C-a>(like Copilot!) - 2.6s mean latency, 77% quality score
- 100% success rate across 24 diverse code scenarios
- Works with Python, JavaScript, Lua, Rust, and more
- Fully local, privacy-preserving
🆕 What's New
Code Completion Tool
MCP Integration:
- New
complete_codetool inada-mcp/src/ada_mcp/tools/complete_code.py - Direct Ollama access bypassing RAG overhead for speed
- FIM (Fill-In-Middle) format support for code models
- Context-aware completion using code before AND after cursor
Model Optimization:
- qwen2.5-coder:7b - Specialized code model (4.7GB)
- FIM format eliminates verbose explanations
- Low temperature (0.2) for focused completions
- Smart max tokens (150) balancing quality and speed
Neovim Integration
ada.nvim Plugin:
- New completion module:
lua/ada/completion.lua - Keybinding:
<C-x><C-a>in insert mode (configurable) - Auto-detects language from filetype
- Shows completion in floating window
Features:
- Context-aware - Sees code before AND after cursor
- Language-aware - Handles syntax-specific patterns
- Fast - Typically <500ms from local models
- Privacy-first - Runs entirely on your machine
Documentation
New Guides:
ada.nvim/COMPLETION_QUICKSTART.md- Quick setup (5 minutes)docs/sessions/TESTING_COMPLETION.md- Testing guidedocs/sessions/COMPLETION_EXAMPLES.md- 13 real-world examplesDOCUMENTATION_INDEX.md- Comprehensive navigation hub
Research & Benchmarks:
benchmarks/BENCHMARK_RESULTS_QWEN_FIM.md- Complete analysisbenchmarks/benchmark_completion.py- Reproducible test suitedocs/research/ADA_LOG_INTELLIGENCE_DESIGN.md- Next feature design
📊 Performance Benchmarks
Latency (24 test cases)
| Metric | DeepSeek-R1 | Qwen2.5-Coder | Improvement |
|---|---|---|---|
| Mean | 27.7s | 2.6s | 10.6x faster |
| Median | 19.3s | 3.0s | 6.4x faster |
| Best | 12.8s | 396ms | 32x faster |
| Worst | 1049s | 3.7s | 283x faster |
| Success Rate | 100% | 100% | ✅ Maintained |
Quality Scores
- Context Usage: 77.1% (improved from 74%)
- Syntax Correctness: 100%
- Import Handling: Needs improvement (planned Phase 2)
Target Progress
- ✅ <3s mean latency - ACHIEVED (2.6s)
- 🎯 <500ms P50 - IN PROGRESS (3.0s currently)
- 🔜 <200ms first token - Planned (streaming in Phase 2)
🔬 Technical Details
Critical Discovery: FIM Format
Problem: Chat prompts cause code models to explain instead of complete:
Input: "Complete this code: def add(a, b):"
Output: "Let me explain the function step by step...
[200+ tokens of reasoning]
def add(a, b):
return a + b"
Result: 27 seconds! ❌
Solution: FIM (Fill-In-Middle) - native code model format:
Input: "<|fim_prefix|>def add(a, b):<|fim_suffix|><|fim_middle|>"
Output: "\n return a + b"
Result: 400ms! ✅
Architecture Changes
Direct Ollama Access:
- Bypass
brain/app.pyfor latency-critical completions - Skip RAG retrieval, memory search, specialist activation
- Use specialized code model (qwen2.5-coder)
- Different from chat: reasoning vs pattern completion
Why This Matters:
- Chat: "Understand context, retrieve memories, reason, respond"
- Code completion: "Recognize pattern, complete syntax"
- Different problems need different architectures!
📦 Files Added/Modified
New Files (13)
MCP Tools:
ada-mcp/src/ada_mcp/tools/__init__.pyada-mcp/src/ada_mcp/tools/base.pyada-mcp/src/ada_mcp/tools/complete_code.pyada-mcp/src/ada_mcp/client.py
Neovim Plugin:
ada.nvim/lua/ada/completion.luaada.nvim/COMPLETION_QUICKSTART.md
Tests:
tests/test_code_completion.pytests/test_completion_integration.pytests/test_mcp_completion.py
Documentation:
DOCUMENTATION_INDEX.mdHANDOFF_TO_CLAUDE_CODE.mddocs/sessions/COMPLETION_EXAMPLES.mddocs/sessions/TESTING_COMPLETION.md
Modified Files (5)
brain/app.py- Added model override parameterada-client/src/ada_client/client.py- Model parameter supportada.nvim/lua/ada/init.lua- Completion integrationada.nvim/README.md- Updated docs.ai/ROADMAP_COPILOT_PARITY.md- Phase 1 complete
Organized Files (20+)
- Research docs →
docs/research/ - Session logs →
docs/sessions/ - Benchmarks →
benchmarks/ - Phase experiments →
archive/phase_experiments/
🎯 Roadmap: Copilot Parity (Phase 1 of 5)
✅ Phase 1: Core Completion - THIS RELEASE
- Basic cursor completion
- Neovim integration
- FIM format optimization
- Benchmark suite
🔜 Phase 2: Speed & Polish - Next
- Streaming responses (<200ms first token)
- Response caching (<50ms for repeated patterns)
- Auto-complete mode (trigger on typing)
- Import completion improvements
🔜 Phase 3: Multi-Language - Future
- TypeScript/JavaScript optimization
- Rust support
- Go support
- Language-specific tuning
🔜 Phase 4: Context Router - Future
- Intelligent model selection
- Cost/latency optimization
- Automatic specialist routing
🔜 Phase 5: Advanced Features - Future
- Multi-line completion
- Whole function generation
- Test generation
- Refactoring suggestions
🚀 Upgrade Guide
Prerequisites
- Ada v2.6.0+
- Neovim 0.8+
- Python 3.13+
- Ollama with qwen2.5-coder:7b model
Installation
1. Pull the model:
docker compose exec ollama ollama pull qwen2.5-coder:7b2. Update ada-mcp:
cd ada-mcp
uv sync3. Install Neovim plugin:
Add to your Neovim config (lazy.nvim):
{
dir = '~/Code/ada-v1/ada.nvim',
config = function()
require('ada').setup({
completion_keymap = '<C-x><C-a>', -- Or your preference
auto_complete = false, -- Manual trigger initially
})
end
}4. Test it:
# In Neovim, type:
def hello():
message = <C-x><C-a> # Press Ctrl-X Ctrl-A
# Ada suggests: f"Hello, world!"See ada.nvim/COMPLETION_QUICKSTART.md for full setup!
🐛 Known Issues
Minor Issues
-
Import completions score 0% - Planned fix in Phase 2
- Workaround: Type imports manually for now
-
First completion slow (~3s) - Cold start
- Subsequent completions are <1s
- Phase 2 will add caching
-
Auto-complete experimental - Disabled by default
- Can enable with
auto_complete = true - May trigger too frequently
- Phase 2 will add debouncing
- Can enable with
No Breaking Changes
This release is fully backward compatible. Code completion is additive!
🧪 Testing
Unit Tests
pytest tests/test_code_completion.py -vIntegration Tests
pytest tests/test_completion_integration.py -vManual Testing
# See docs/sessions/TESTING_COMPLETION.md
tests/test_mcp_completion.pyBenchmarks
uv run python benchmarks/benchmark_completion.py📖 Examples
Simple Completions
# Variable completion
message = <complete>
# Suggests: "Hello, world!"
# Function completion
def add(a, b):
<complete>
# Suggests: return a + b
# String formatting
name = "Ada"
greeting = f"<complete>
# Suggests: Hello, {name}!"Context-Aware
# Understands context
def calculate_importance(memory, signals):
decay_score = signals['decay'] * 0.10
surprise_score = signals['surprise'] * 0.60
relevance_score = signals['relevance'] * 0.20
habit_score = <complete>
# Suggests: signals['habituation'] * 0.10Multi-Language
// Works with JavaScript
function greet(name) {
return <complete>
// Suggests: `Hello, ${name}!`// Works with Rust
fn add(a: i32, b: i32) -> i32 {
<complete>
// Suggests: a + bSee docs/sessions/COMPLETION_EXAMPLES.md for 13 real examples!
🎓 Learn More
Documentation
- Quick Start:
ada.nvim/COMPLETION_QUICKSTART.md - Testing Guide:
docs/sessions/TESTING_COMPLETION.md - Examples:
docs/sessions/COMPLETION_EXAMPLES.md - Architecture:
HANDOFF_TO_CLAUDE_CODE.md
Research
- Benchmarks:
benchmarks/BENCHMARK_RESULTS_QWEN_FIM.md - Benchmark Code:
benchmarks/benchmark_completion.py - Roadmap:
.ai/ROADMAP_COPILOT_PARITY.md
Related Research
- Next Feature:
docs/research/ADA_LOG_INTELLIGENCE_DESIGN.md - Previous Research:
docs/research/CONTEXTUAL_MALLEABILITY_READY_FOR_TINKERERS.md
💝 Credits
Research & Development:
- Luna (Primary Developer) - Architecture, implementation, benchmarks
- Claude Sonnet 4 (AI Collaborator) - This release document
- GitHub Copilot (AI Collaborator) - Code completion implementation
- Claude Code (AI Collaborator) - Design and optimization
Community:
- Early testers providing feedback
- Neovim community for plugin patterns
- Ollama team for local LLM infrastructure
🔄 Migration from v2.5.0
No breaking changes! This is a pure feature addition.
If you were using:
- ✅ Chat interface - No changes needed
- ✅ MCP server - No changes needed (new tool added)
- ✅ Matrix bridge - No changes needed
- ✅ CLI - No changes needed
New capability:
- 🆕 Code completion via Neovim plugin (opt-in)
🔮 What's Next
Immediate (v2.7.0):
- Ada Log Intelligence - Apply biomimetic compression to log analysis
- Uses same signal weights from v2.2 research
- Minecraft crash logs → kid-friendly explanations
- Production logs → 100:1 compression with...
v2.2.0 - Empirically Validated Optimal Importance Weights
Ada v2.2.0 - Empirically Validated Optimal Importance Weights
Released: December 18, 2025
Branch: feature/weight-optimization → trunk
Key Achievement: Research-validated memory importance scoring with +6.5% per-turn improvement
🎯 TL;DR
We systematically optimized Ada's memory importance signal weights through 7 research phases and discovered something counterintuitive: surprise/novelty matters way more than we thought! The optimal configuration (surprise=0.60, decay=0.10) outperforms our intuition-based weights by 6.5% on real conversations and 12-38% on synthetic data.
What changed: Memory importance calculation now prioritizes surprise (novelty) over recency, making Ada better at surfacing relevant but unexpected context.
🔬 Research Highlights (Phases 1-7)
The Discovery
Key Finding: Surprise-only configuration (r=0.876) beats multi-signal baseline (r=0.869)
This surprised us! It suggests that semantic surprises (prediction errors) are more important than temporal decay for context selection. In practice, this means:
- Old but surprising memories > recent but predictable ones
- Unexpected context shifts get proper attention
- Habituation reduces redundancy effectively
The Process
- Phase 1: Property-based testing (27 tests, 0.09s) - Mathematical invariants validated
- Phase 2: Synthetic data generation (10 tests, 0.04s) - Ground truth datasets with 4500+ cases
- Phase 3: Ablation studies (12 tests, 0.05s) - Single-signal vs multi-signal comparison
- Phase 4: Grid search (7 tests, 0.08s) - 169 weight configurations tested
- Phase 5: Production validation (6 tests, 0.07s) - Real conversation data confirms findings
- Phase 6: Deployment (11 tests, 0.07s) - Optimal weights deployed to brain/config.py
- Phase 7: Visualization (7 tests, 2.93s) - 6 publication-quality graphs generated
Total: 80 tests, 3.56s runtime, 100% passing
Optimal Weights (Deployed)
# brain/config.py
IMPORTANCE_WEIGHT_DECAY = 0.10 # Was 0.40 (4x reduction!)
IMPORTANCE_WEIGHT_SURPRISE = 0.60 # Was 0.30 (2x increase!)
IMPORTANCE_WEIGHT_RELEVANCE = 0.20 # Unchanged
IMPORTANCE_WEIGHT_HABITUATION = 0.10 # UnchangedLegacy Rollback: Set environment variables to revert:
IMPORTANCE_WEIGHT_DECAY=0.40 IMPORTANCE_WEIGHT_SURPRISE=0.30📊 Performance Impact
Real Conversations:
- +6.5% improvement per turn (average)
- 80% of turns show positive changes
- 250% increase in medium-detail chunks (better gradient)
- +17.9% token budget (acceptable trade-off)
Synthetic Datasets:
- 12-38% improvement across all test scenarios
- Most dramatic gains in mixed-importance contexts
- Smooth correlation landscape (r=0.876 peak)
Detail Level Distribution:
- FULL: 15% → 18% (+3 percentage points)
- CHUNKS: 10% → 35% (+25pp, huge improvement!)
- SUMMARY: 40% → 30% (-10pp)
- DROPPED: 35% → 17% (-18pp, much less waste!)
✨ What's New
1. Optimal Weights in Production
- Updated
brain/config.pywith research-validated configuration - Backward compatible with legacy weights via environment variables
- Same-day deployment: research → production in <24 hours
2. Comprehensive Documentation (Phase 8: Meta-Science)
We documented the same research in 9 different narrative formats (45,000 words total):
- Machine-readable:
.ai/RESEARCH-FINDINGS-V2.2.md- Canonical source for AI assistants - Academic:
docs/research/memory-optimization-academic.md- Peer-review ready (8K words) - CCRU-inspired:
docs/research/memory-optimization-ccru.md- Experimental narrative (9K words) - Blog post:
docs/research/memory-optimization-blog.md- Science communication (4.5K words) - Technical:
docs/research/memory-optimization-technical.md- Implementation guide (6K words) - Twitter thread:
docs/research/memory-optimization-twitter-thread.md- 15 viral-ready tweets - Recursion reveal:
docs/research/README-RECURSION.md- Meta-awareness (3.5K words) - Techno-horror:
docs/research/TECHNO-HORROR.md- Accelerationist essay (5K words) - General audience:
docs/research/BRIEF-GENERAL-AUDIENCE.md- 3-minute explainer (1.2K words)
New Sphinx landing page: docs/research_narratives.rst with navigation and format guide
3. Publication-Quality Visualizations (Phase 7)
6 graphs generated (tests/visualizations/, 2.2 MB total, 300 DPI):
ablation_bar_chart.png- Signal configuration comparisonweight_space_heatmap.png- Grid search landscape (decay vs surprise)gradient_distribution.png- Detail level efficiency improvementscorrelation_scatter.png- Before/after correlation comparisonpareto_frontier.png- Optimal configurations (3D surface plot)summary_dashboard.png- Complete 6-panel overview
4. Complete Test Suite
80 new tests documenting research methodology:
tests/test_weight_optimization.py- Core optimization tests (27 tests)tests/test_production_validation.py- Real conversation validation (6 tests)tests/test_deployment.py- Deployment verification (11 tests)tests/test_visualizations.py- Graph generation (7 tests)
All tests passing, <4s total runtime.
🧪 Testing & Validation
How We Know It Works
- Property-based testing ensures mathematical correctness (invariants hold)
- Synthetic datasets with known ground truth (4500+ test cases)
- Real conversation validation on 24 actual Ada interactions
- Ablation studies prove each signal's contribution
- Grid search mapped the complete weight space (169 configs)
Running the Tests
# All research tests (fast, no Docker needed)
pytest tests/test_weight_optimization.py --ignore=tests/conftest.py
# Specific phases
pytest tests/test_weight_optimization.py::TestPhase3Ablation -v
pytest tests/test_weight_optimization.py::TestPhase4GridSearch -v
# Production validation
pytest tests/test_production_validation.py --ignore=tests/conftest.py
# Generate visualizations
pytest tests/test_visualizations.py --ignore=tests/conftest.py📚 Documentation Updates
AI-Readable (.ai/)
.ai/context.md- Updated with research findings and optimal weights.ai/RESEARCH-FINDINGS-V2.2.md- New canonical research summary
Human-Readable (docs/)
docs/biomimetic_features.rst- Updated with validation resultsdocs/research_narratives.rst- New landing page for all research formatsdocs/index.rst- Added "Research & Validation" section
Changelog
CHANGELOG.md- Comprehensive v2.2.0 release notesdocs/changelog.md- Symlink auto-updates
🔧 Configuration Changes
Default Weights (brain/config.py)
# === Importance Signal Weights (Phase 4 Optimization) ===
# Multi-signal importance scoring weights (must sum to 1.0)
# Default values are OPTIMAL weights from Phase 4 weight optimization study
# See tests/test_weight_optimization.py for empirical validation
IMPORTANCE_WEIGHT_DECAY = float(os.getenv("IMPORTANCE_WEIGHT_DECAY", "0.10")) # Was 0.40
IMPORTANCE_WEIGHT_SURPRISE = float(os.getenv("IMPORTANCE_WEIGHT_SURPRISE", "0.60")) # Was 0.30
IMPORTANCE_WEIGHT_RELEVANCE = float(os.getenv("IMPORTANCE_WEIGHT_RELEVANCE", "0.20"))
IMPORTANCE_WEIGHT_HABITUATION = float(os.getenv("IMPORTANCE_WEIGHT_HABITUATION", "0.10"))
# Legacy production weights (pre-optimization): decay=0.40, surprise=0.30
# To revert to legacy: IMPORTANCE_WEIGHT_DECAY=0.40 IMPORTANCE_WEIGHT_SURPRISE=0.30Backward Compatibility
The new weights are default, but you can revert to legacy via environment variables:
# In .env or docker-compose
IMPORTANCE_WEIGHT_DECAY=0.40
IMPORTANCE_WEIGHT_SURPRISE=0.30No code changes needed - the old behavior is preserved for rollback.
🎓 Key Lessons
What We Learned
- Surprise supremacy: Novelty detection (prediction error) is the most important signal for context selection
- Recency overrated: We were weighting temporal decay 4x too high (0.40 → 0.10)
- Smooth landscape: Weight space is well-behaved, enabling future gradient-based optimization
- Single-signal competitive: Surprise-only almost beats multi-signal (r=0.876 vs r=0.869)
- Same-day viable: TDD methodology enables research → production in <24 hours
What Changed Our Mind
Initial intuition: "Recent memories matter most" (decay=0.40)
Data showed: "Surprising memories matter most" (surprise=0.60)
This is counterintuitive but makes sense: Ada's job is to surface relevant context, not just recent context. A surprising old memory is often more useful than a predictable recent one.
🚀 Upgrade Guide
For Existing Users
No action required! The new weights are deployed as defaults and should improve context selection automatically.
If you experience issues:
- Revert to legacy weights via environment variables (see Configuration section)
- Open an issue on GitHub with your use case
- We'll help debug and potentially adjust weights for your scenario
For Developers
Understanding the changes:
- Read
.ai/RESEARCH-FINDINGS-V2.2.mdfor the canonical summary - Check
tests/test_weight_optimization.pyfor methodology - Review visualizations in
tests/visualizations/ - Read any narrative format in
docs/research/that matches your style
Contributing improvements:
- Weight optimization tests are in
tests/test_weight_optimization.py - Production validation uses
tests/test_production_validation.py - Visualization generation in
tests/test_visualizations.py - All tests run in <4s without Docker
🌟 Why This Matters
Xenofeminist AI Research
This release embodies our commitment to:
- Reproducible: 80 tests document every step, anyone can verify
- Accessible: 9 narrative formats ensure everyone can understand
- Hackable: Environment variables let you tune...
v2.1.0 - Multi-timescale Context Caching
⚡ Performance Breakthrough
Multi-timescale context caching dramatically reduces redundant operations:
- ~70% reduction in ChromaDB queries for repeated context
- Millisecond latency on cache hits (vs seconds for RAG queries)
- Personas cached for 24 hours (identity rarely changes)
- FAQs cached for 24 hours (knowledge base updates infrequently)
- Memories cached for 5 minutes (balance freshness vs performance)
- Conversation turns cached for 1 hour (recent context preserved)
✨ New Features
- PromptAssembler - Clean orchestration with automatic caching
- ContextRetriever - Cache-aware RAG data retrieval
- MultiTimescaleCache - Production-ready caching with TTL and LRU eviction
- Per-request cache statistics logged for observability
- Cache integration transparent to specialists and adapters
🗑️ Breaking Changes
- Removed
brain/_legacy_prompt_builder.py(266 lines) - Removed backward-compatible
build_prompt()shim - New code must use
PromptAssemblerAPI directly
Migration:
# Old (removed):
from brain.prompt_builder import build_prompt
prompt, context = await build_prompt(...)
# New (required):
from brain.prompt_builder import PromptAssembler
assembler = PromptAssembler()
prompt = assembler.build_prompt(
user_message="...",
conversation_id="...",
notices=get_active_notices()
)🔧 Other Improvements
- Fixed port configuration: ada-client and ada-cli now default to correct external port (8000)
- Updated CLI Python requirement to >=3.13 for consistency
🧪 Testing
- 23 comprehensive cache tests (15 basic + 8 integration)
- All tests passing, cache validated in production
📚 Documentation
- Architecture docs updated with caching system overview
- CHANGELOG.md now included in Sphinx documentation
- API usage examples modernized for new PromptAssembler
- Complete AI documentation updates (codebase-map.json)
📦 Dependencies
- Added
myst-parser>=4.0.0for Sphinx Markdown support - No new external dependencies for core caching system
📊 Code Stats
- 28 files changed
- +1,206 insertions
- -627 deletions
- Net: +579 lines (mostly tests and documentation)
See CHANGELOG.md for complete details.
Ada v2.0.0 - Modular Architecture Foundation
Ada v2.0.0 - Modular Architecture Foundation
Release Date: December 17, 2025
🎉 Major Release: Foundation for v2.0 Features
Ada v2.0.0 marks a significant architectural milestone, establishing the foundation for advanced context management, token optimization, and future scaling capabilities.
🏗️ Architecture Overhaul
Modular Prompt Builder System
Replaced monolithic prompt_builder.py (256 lines) with three focused components:
-
ContextRetriever (
brain/prompt_builder/context_retriever.py)- Pure RAG data retrieval logic
- Fetches persona, memories, FAQs, conversation turns, summaries
- 103 lines, 14 passing tests
-
SectionBuilder (
brain/prompt_builder/section_builder.py)- Pure formatting logic for prompt sections
- Consistent headers and structure
- 150 lines, 14 passing tests
-
PromptAssembler (
brain/prompt_builder/prompt_assembler.py)- Orchestrates ContextRetriever + SectionBuilder
- Coordinates specialist activation
- Handles section priority ordering
- 150 lines, 10 passing tests
Total: 438 lines of clean, testable, modular code with 38 comprehensive tests.
Token Budget Monitoring
New TokenBudgetMonitor system provides visibility into token usage:
- Track token usage by component (persona, memories, FAQs, specialists, etc.)
- Get detailed breakdowns and summaries
- Identify optimization opportunities
- Foundation for multi-timescale caching (v2.1+)
Implementation: brain/token_monitor.py (218 lines, 13 passing tests)
🧪 Testing Infrastructure Improvements
Property-Based Testing with Hypothesis
Added Hypothesis for algorithmic correctness testing:
- 11 property tests validating token counting invariants
- Automatically generates 100+ test cases per property
- Found real edge cases (Unicode character
ࠂproduces 3 tokens) - Configured profiles: dev (100 examples), ci (1000 examples), debug (10 examples)
Test Organization
- Created
tests/prompt_builder/for modular component tests - Created
tests/property/for property-based tests - Implemented parametrized tests to reduce duplication
- Shared fixtures in feature-specific
conftest.pyfiles
Test Stats: 49 passing tests (38 traditional + 11 property)
📚 Documentation Updates
Human Documentation (Sphinx)
- Updated
docs/testing.rstwith hybrid testing approach - Updated
docs/api_usage.rstwith modular components - Updated
docs/specialist_rag.rstwith new architecture - All docs build successfully
Machine Documentation (.ai/)
- Updated
codebase-map.jsonwith all new modules - Updated
context.mdwith refactor notes - Added comprehensive testing guide (
.ai/TESTING_PATTERNS.md) - All documentation reflects new modular architecture
🔄 Backward Compatibility
100% backward compatible! All existing code continues to work:
- Legacy
build_prompt()API preserved with same signature - Compatibility shim in
brain/_legacy_prompt_builder.py - New code can import modular components directly
- Gradual migration path available
🚀 What's Next (v2.1+)
The v2.0 foundation enables:
- v2.1: Multi-timescale caching (hot/warm/cold)
- v2.2: Memory importance decay and habituation
- v2.3: Advanced token optimization strategies
- v2.4: GraphRAG and tag-based context retrieval
📊 Statistics
- Files changed: 87
- Lines added: 3,023
- Lines removed: 170
- New components: 3 (ContextRetriever, SectionBuilder, PromptAssembler)
- New tests: 49 (38 traditional + 11 property)
- Test coverage: All new code fully tested
🙏 Migration Notes
For Users
No changes required! Your existing Ada installation will work as-is.
For Developers
New code should import from the modular package:
# New way (modular)
from brain.prompt_builder import ContextRetriever, SectionBuilder, PromptAssembler
# Old way (still works via compatibility shim)
from brain.prompt_builder import build_promptFor Contributors
- See
.ai/TESTING_PATTERNS.mdfor testing guidelines - Use TDD approach for new features
- Run
pytest tests/prompt_builder/for component tests - Run
pytest tests/property/for property tests
🔗 Links
- Documentation: http://localhost:5000/docs/
- Architecture: See
docs/architecture.rst - Testing Guide: See
.ai/TESTING_PATTERNS.md - Codebase Map: See
.ai/codebase-map.json
Full Changelog:
Features
- feat(refactor): implement ContextRetriever component with tests
- feat(refactor): implement SectionBuilder component
- feat(refactor): implement PromptAssembler orchestrator
- feat(testing): add Hypothesis for property-based testing
- feat(testing): improve test organization and patterns
Refactoring
- refactor(prompt_builder): complete migration to modular architecture
Documentation
- docs: update testing.rst with hybrid testing approach
- docs: update all documentation for prompt_builder refactor
- docs: add changelog generation todo
Internal
- Merge test improvements into prompt-refactor
- Merge hypothesis testing into prompt-refactor
Ada 1.0.0 - Framework for Personal AI
First stable release. Ada is now a generalizable framework for building personalized AI assistants, not just a personal assistant.
Key Features
- Configurable Identity: Set AI_NAME, AI_USER_NAME, AI_PERSONALITY_FILE to make it yours
- 5 Example Personas: Templates from coding buddy to creative writer
- Comprehensive Documentation: Tutorials, principles, API docs, and .ai/ machine-readable docs
- 47 Automated Tests: Identity config, documentation validation, core functionality
- CI/CD Pipelines: GitHub Actions for quick start E2E testing
- Local Testing: scripts/test_quickstart_e2e.sh mirrors CI tests
Philosophy
Ada is named after Ada Lovelace, the first programmer. We're building it for all the programmers, tinkerers, and dreamers who come next.
Always free, privacy-first, local-first, hackable, with no lock-in.
For the big weird kids building weird things that change the world. 🚀
See PRINCIPLES.md for our permanent commitments.