CipherCode™ — AI Coding Assistant
The AI that writes code the way YOU would.
By Lila AI LLC. Free. Closed beta.
CipherCode is a VS Code extension powered by CipherModel-1.5B — Qwen2.5-Coder-1.5B served from a private GCP Cloud Run. Its killer features:
- ✨ Cipher Persona™ — silently learns your coding style and generates suggestions in your voice
- 🧠 Project Memory — remembers your project across sessions: summary, key files, decisions, last 20 chat messages
- 🔒 100% private — your code never trains anyone else; only the snippet you act on goes to inference
📦 Install (closed beta)
CipherCode is in invitation-only closed beta. If Lila AI sent you a .vsix file:
code --install-extension ciphercode-0.1.0.vsix
That's it. Open VS Code — CipherCode appears in the Activity Bar. Start typing, or click the icon to open the chat sidebar.
No setup. No accounts. No tokens to paste. The Cloud Run URL and bearer token are bundled into your beta build.
🎯 What You Can Do
Inline (just keep typing)
- AI completion appears as ghost text after a 700ms pause
- Style-matched: respects your
camelCase/snake_case, arrow vs named functions, semicolons, indent, etc.
Right-click on selected code
- Explain Code — clear summary of what this does
- Refactor Code — clean up while preserving your style
- Fix Bug — find and patch bugs
- Add Comments — style-matched commenting
Right-click anywhere in a file (no selection needed)
- Document This File — generates language-aware doc comments (TSDoc / JSDoc / Google Python / Javadoc / XMLDoc / Doxygen / godoc / rustdoc / PHPDoc / YARD)
- Persistent history (last 10 messages restored on open)
- Quick-start suggestion cards on first open
- Code blocks with Copy button + language tag
- Per-reply actions: Copy / Insert at cursor / Regenerate
- Markdown rendering for headings, lists, links, inline code
- Auto-resize composer;
Enter to send, Shift+Enter for newline
Command Palette (⌘⇧P / Ctrl⇧P → "CipherCode")
| Command |
What it does |
| Explain Code |
Explain selected code |
| Refactor Code |
Refactor in your style |
| Fix Bug |
Identify and fix bugs |
| Add Comments |
Style-matched comments |
| Document This File |
Generate full doc comments for active file |
| Generate README from Project |
Create a README.md from your project structure |
| Open Chat |
Open the sidebar |
| Refresh My Style Persona |
Re-analyze your workspace |
| Show My Detected Style |
See what CipherCode learned about you |
| Show Project Memory |
Inspect .vscode/cipher-memory.json |
| Clear Project Memory |
Reset memory for this workspace |
✨ Cipher Persona
Silently watches and detects:
- Naming convention —
camelCase / snake_case / PascalCase
- Functions — arrow vs named declarations
- Async style —
async/await vs .then()
- Comments — placement, verbosity
- Indent size — 2 vs 4 spaces
- Semicolons / type annotations — yes/no
- Frequent imports — your top libraries
Persona never leaves your machine. It lives in VS Code's globalState.
🧠 Project Memory
Stored at .vscode/cipher-memory.json — your call to commit or .gitignore.
{
"projectSummary": "Auto-detected from package.json or README",
"projectType": "node | python | other",
"keyFiles": [{ "path": "src/server.ts", "purpose": "" }],
"decisions": [{ "topic": "...", "choice": "...", "reason": "..." }],
"chatHistory": [{ "role": "user", "content": "...", "timestamp": "..." }],
"patterns": []
}
Every chat message and every inline completion gets the memory injected as context.
🆚 Why CipherCode
|
GitHub Copilot |
Claude Code |
CipherCode |
| Inline completion |
✅ |
✅ |
✅ |
| Chat sidebar |
✅ |
✅ |
✅ |
| Lives inside VS Code (not terminal) |
✅ |
❌ |
✅ |
| Learns YOUR coding style |
❌ |
❌ |
✅ Cipher Persona |
| Persistent project memory |
❌ |
❌ |
✅ |
| Chat history per project |
❌ |
❌ |
✅ Survives restarts |
| Self-hosted on private infra |
❌ |
❌ |
✅ |
⚙️ Settings (optional — defaults Just Work)
| Setting |
Default |
Description |
ciphercode.cloudRunUrl |
bundled |
Override Cloud Run URL (if running your own) |
ciphercode.cloudRunToken |
bundled |
Override bearer token |
ciphercode.enableInlineCompletion |
true |
Inline completions while typing |
ciphercode.enablePersona |
true |
Match your coding style |
ciphercode.enableMemory |
true |
Persist project memory |
ciphercode.maxTokens |
512 |
Max tokens per response |
ciphercode.temperature |
0.2 |
Sampling temperature |
🔐 Privacy
- Code stays on your machine. Only the snippet you act on is sent to the Lila AI Cloud Run.
- Cipher Persona is stored locally — never uploaded.
- Project Memory lives in your workspace's
.vscode/ — never uploaded.
- Lila AI does not log or store your prompts beyond what's needed to serve the response.
💰 Pricing
Free for the v0.1 closed beta. Capped at 5 concurrent users to keep it fast and stable.
A future hosted Pro tier may be offered for users who want zero-setup at scale, but the closed-beta path will remain free for invited users.
🛠️ For Maintainers (you, not your friends)
Everything below is for the developer publishing the extension. Your friends never see this.
Re-deploy the inference server
# 1. Fine-tune (Kaggle T4 or any GPU box)
python scripts/finetune/finetune_qwen.py
python scripts/finetune/merge_and_rename.py
bash scripts/finetune/convert_to_gguf.sh
# → produces CipherModel-1.5B-Q4_K_M.gguf
# 2. Deploy to Cloud Run
bash scripts/deploy/deploy.sh
# → prints your Cloud Run URL and bearer token
Verify the server with curl
curl -X POST https://YOUR_CLOUD_RUN_URL/v1/chat/completions \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "cipher-model",
"messages": [{"role":"user","content":"write a hello world in python"}],
"max_tokens": 100
}'
- 503 / "loading" → model still downloading from GCS. Wait 60s and retry.
- 401 / 403 → bearer token mismatch.
- 500 → check logs:
gcloud run services logs read ciphercode-server --region us-central1.
Wire URL + token into the extension
Edit src/inferenceClient.ts at the top — replace the two PLACEHOLDER_* strings with what deploy.sh printed:
const BUNDLED_CLOUD_RUN_URL = 'https://ciphercode-server-xxxx-uc.a.run.app';
const BUNDLED_CLOUD_RUN_TOKEN = 'your-actual-bearer-token';
Then:
npm run compile
npx @vscode/vsce package # → ciphercode-0.1.0.vsix
Distribute that .vsix to your friends via DM/email.
Publish to Marketplace (when ready)
# 1. At https://marketplace.visualstudio.com/manage/publishers — create publisher "lila-ai-llc"
# 2. At https://dev.azure.com — generate a PAT with "Marketplace (Manage)" scope
# 3. Then locally:
npx @vscode/vsce login lila-ai-llc
npx @vscode/vsce publish
⚠️ Before public marketplace launch: rotate the bundled token, add IP-based rate limiting, and set up a GCP budget alert. With min-instances=0 and --concurrency 5 --max-instances 1, costs are bounded — but a public .vsix is a public token.
™️ Trademark & License
CipherCode™ and Cipher Persona™ are trademarks of Lila AI LLC. All rights reserved.
Source code is licensed under MIT. See LICENSE for details and trademark usage guidelines.
© 2026 Lila AI LLC.