Skip to content

Repository files navigation

Aura — Second Brain for iOS

A fully on-device, encrypted personal knowledge base with voice capture, AI classification, semantic search, and distilled memory intelligence.

iOS 17+ Swift 5.10 SwiftUI On-Device AI Built with Claude Code


What is Aura?

Aura is a second brain that captures your thoughts via voice or text, classifies them with on-device AI, and organizes them across five encrypted vaults:

Vault Color Purpose
Corporate #00D4FF Electric Blue Office notes, courses, career, professional learning
Trading #7B61FF Purple Trade ideas, market observations, strategy notes
Family #FFB627 Gold Milestones, personal memories, legacy
Personal #00E5A0 Green Health, hobbies, journal, self-improvement
Projects #FF6B6B Coral Side projects, builds, active learning

Everything runs on-device: speech recognition, AI classification, transcript cleanup, semantic search, weekly/monthly intelligence reports, and the Ask Aura chat — no cloud AI services, no Mac pipeline, no external dependencies.


Architecture

┌──────────────────────────────────────────────────────────────────┐
│  iPhone (iOS 17+)                                                │
│                                                                  │
│  ┌──────────┐  ┌───────────┐  ┌──────────┐  ┌───────────┐       │
│  │ Capture  │  │Daily Pulse│  │   Aura   │  │   Vault   │       │
│  │  Voice   │  │  Morning  │  │  RAG AI  │  │  Browser  │       │
│  │  + Type  │  │  Briefing │  │   Chat   │  │  + Editor │       │
│  └────┬─────┘  └─────┬─────┘  └────┬─────┘  └───────────┘       │
│       │              │              │                             │
│  ┌────▼──────────────▼──────────────▼──────────────────────────┐ │
│  │              Core Services (async/await)                    │ │
│  │  VaultService · GitService · SearchService · TaskService    │ │
│  │  AuraAIService · LocalLLMService · DistillationService      │ │
│  │  WhisperService · SyncService · FrontmatterParser           │ │
│  └──────────────────────┬──────────────────────────────────────┘ │
│                         │                                        │
│  ┌──────────────────────▼──────────────────────────────────────┐ │
│  │              On-Device Intelligence                         │ │
│  │  MLX Swift + Qwen 3 1.7B 4-bit                             │ │
│  │  ├── Auto-classification (tags, deadlines, type)            │ │
│  │  ├── Transcript cleanup (grammar, filler removal)           │ │
│  │  ├── Morning briefing (personalized, cached daily)          │ │
│  │  ├── Ask Aura chat (RAG: memories + search + notes)         │ │
│  │  ├── Cross-vault connection detection                       │ │
│  │  └── Weekly/monthly distillation reports                    │ │
│  │                                                             │ │
│  │  Apple NLEmbedding (semantic search, zero download)         │ │
│  │  SFSpeechRecognizer (on-device speech-to-text)              │ │
│  └─────────────────────────────────────────────────────────────┘ │
│                         │                                        │
└─────────────────────────┼────────────────────────────────────────┘
                          │ GitHub REST API (encrypted push/pull)
                          ▼
                   ┌──────────────┐
                   │   GitHub     │
                   │  (git-crypt  │  ← backup only, not primary
                   │  encrypted)  │
                   └──────────────┘

MVVM + Clean Core: The Core/ layer is pure Swift with zero SwiftUI imports. All services use Swift Concurrency (async/await) — no Combine, no callbacks.


On-Device Intelligence

All AI runs locally on the iPhone. No cloud. No Mac. No network required.

MLX Swift + Qwen 3

The on-device LLM handles six functions:

Function When What it does
Auto-classification After every note save Extracts tags, deadlines, action type, evergreen flag, suggested title
Transcript cleanup After voice capture Fixes grammar, removes filler words, preserves meaning
Daily briefing Daily Pulse refresh Reflection-focused briefing on yesterday's notes, patterns, and connections
Weekly briefing Sundays only Week-in-review: themes, cross-vault connections, tag patterns, standout notes
Ask Aura chat User asks a question RAG-powered answers grounded in your notes and memories
Cross-vault connections After note save Detects links between notes across all five vaults
Distillation Weekly (Sunday) / Monthly (1st) Generates intelligence reports — patterns, insights, knowledge summaries

Three-Tier RAG (Ask Aura)

When you ask Aura a question, context is assembled in priority order:

Layer 3:  Monthly distilled memories    → life patterns, knowledge summaries
Layer 2:  Weekly distilled summaries    → recent decisions, open threads
Layer 1:  Semantic search + recent      → relevant raw notes + freshness

This mirrors how human memory works — patterns before details.

Distillation Service

Weekly and monthly intelligence reports are generated per vault and stored in _distilled/ subfolders:

~/Documents/AuraVault/
  Corporate/
    2026-03-09_meeting-prep.md
    _distilled/
      weekly_2026-03-02.md          ← "Week at a Glance, Key Decisions, Open Threads, Hidden Insight"
      monthly_2026-03.md            ← "Life Patterns, Knowledge Gained, Cross-Vault Connections"
  Trading/_distilled/
  Family/_distilled/
  • Weekly (Sunday): 4-section report + Swift-computed numbers. Skips weeks with <3 notes.
  • Monthly (1st): 5-section report reading weekly summaries + top 10 significant notes. Skips months with <10 notes.

Semantic Search

Apple NLEmbedding (NaturalLanguage.framework) — built-in sentence embeddings, zero download, fully offline. Keyword search always available as fallback.


LLM Prompts Reference

All prompts use the /no_think directive for Qwen 3 and strip <think> tags from output. Each prompt is carefully tuned to produce structured, parseable output from a small 1.7B model.

1. Auto-Classification Prompt

Triggered: After every note save in CaptureViewModel.classifyAndEnrich()

Context provided: Today's date, vault name, first 800 characters of note body.

Output: JSON with tags, action_kind, deadline, time, is_time_specific, evergreen, suggested_type, suggested_title.

You are a note classifier. Analyze this note and return ONLY valid JSON.

Return this exact JSON structure:
{
  "tags": ["tag1", "tag2"],
  "action_kind": "reminder" or "calendar" or "none",
  "deadline": "YYYY-MM-DD" or null,
  "time": "HH:MM" or null,
  "is_time_specific": false,
  "evergreen": false,
  "suggested_type": "task" or "note" or "idea" or "log" or null,
  "suggested_title": "short title" or null
}

Rules:
- tags: 2-5 relevant keywords from the content, lowercase
- action_kind: STRICT rules — most notes should be "none"
  • "none" — DEFAULT. Use for observations, ideas, logs, meeting notes, learning notes,
    reflections, and anything without an explicit task/deadline
  • "reminder" — ONLY if the user explicitly requests to be reminded or sets a deadline
    (e.g. "remind me to...", "deadline is Friday", "todo: submit report by March 15")
  • "calendar" — ONLY if the user explicitly mentions a scheduled event with a specific time
    (e.g. "meeting at 3pm", "dentist appointment Thursday 2pm")
  • When in doubt, use "none"
- deadline: ONLY set if action_kind is "reminder" or "calendar". Must be null when action_kind
  is "none". Resolve relative dates to YYYY-MM-DD using today's date
- time: only if a specific time is explicitly mentioned ("at 9am" → "09:00"). null otherwise
- is_time_specific: true only if an exact time was stated
- evergreen: true if this is timeless wisdom/knowledge (not a task or fleeting note)
- suggested_type: "task" ONLY if the note is clearly an actionable todo with a deadline.
  Use "note" for general notes, "idea" for brainstorms, "log" for daily logs
- suggested_title: a concise 3-8 word title capturing the essence

Post-LLM validation (Swift-side):

  • If action_kind is not none but deadline is nil → forced to none
  • If action_kind is not none but suggested_type is not task → forced to none
  • Both conditions must pass for an iOS Reminder or Calendar event to be created

2. Transcript Cleanup Prompt

Triggered: After voice transcription, before showing editable text.

Clean up this voice transcript. Fix grammar, punctuation, and remove filler words
(um, uh, like, you know). Keep the meaning and tone intact. Do not add new information.
Return ONLY the cleaned text, nothing else.

3. Daily Briefing Prompt

Triggered: On Daily Pulse refresh, cached once per day.

Context provided: Today's date, vault totals, new notes count, yesterday's notes (up to 8) with vault/title/tags/body preview, evergreen resurface note.

You are Aura, a personal intelligence system. Write a daily reflection briefing based on
the user's recent notes. Return ONLY the briefing lines.

YOUR PURPOSE: Help the user reflect on what they captured recently. Surface patterns,
connections between notes, and insights they might have missed. Do NOT list today's tasks
— those are shown separately.

FORMAT — each line starts with an emoji, then a concise insight (max 15 words per line):
🔍 [reflection — what the user was thinking about or working on recently]
💡 [insight — a pattern, connection, or theme across recent notes]
📊 [activity — which vault is growing, capture momentum]
🌿 [evergreen — if an evergreen note resurfaced, connect it to recent work]
⚡ [nudge — a gentle suggestion based on what you see in the notes]

RULES:
- Start with a one-line warm reflection (no emoji) that references specific note content
- Then 3-4 emoji lines — skip categories with no data
- Reference actual note titles and content — be specific, not generic
- Find connections between notes across different vaults if possible
- If no recent notes, keep it brief and encouraging
- Sound like a thoughtful advisor who actually read the notes

4. Weekly Briefing Prompt (Sundays Only)

Triggered: On Daily Pulse refresh, only on Sundays, cached once per Sunday.

Context provided: Week ending date, total notes this week, per-vault weekly counts, note types breakdown, top 8 tags with frequency, up to 10 note summaries with weekday labels.

You are Aura, a personal intelligence system. Write a weekly reflection briefing
for Sunday. Return ONLY the briefing lines.

YOUR PURPOSE: Help the user see the bigger picture of their week. Find themes,
patterns, and progress across all their notes. This is their weekly moment of clarity.

FORMAT — each line starts with an emoji, then a concise insight (max 15 words per line):
📅 [week summary — total captures, most active vault, overall momentum]
🧠 [theme — the dominant topic or thread running through the week]
🔗 [connections — patterns or links between notes across different vaults]
📈 [progress — any goals, projects, or ideas that advanced this week]
🏷️ [tags — what the top tags reveal about focus areas]
💎 [standout — the most interesting or valuable note of the week]
🎯 [next week — one focused suggestion for the week ahead]

RULES:
- Start with a one-line warm weekly summary (no emoji) that captures the week's energy
- Then 4-6 emoji lines — skip categories with no meaningful data
- Be specific — mention note titles, vault names, tag patterns
- Look for cross-vault connections (e.g. a Trading insight that relates to a Corporate note)
- Identify what the user was most focused on and where momentum is building
- Sound like a thoughtful weekly review, not a dry summary

5. Cross-Vault Connection Prompt

Triggered: After classification, searches for links between the new note and notes in other vaults.

Context provided: Source note (vault, title, tags, body), up to 15 candidate notes from other vaults with title, tags, and body preview.

You are a connection finder. Given a source note and candidate notes from other vaults,
find meaningful connections. Return ONLY valid JSON.

Return an array of connections (0-3 max):
[{"index": 0, "reason": "brief connection reason"}]

Rules:
- Only return genuine thematic or actionable connections
- "index" is the candidate note's position (0-based)
- "reason" should be 5-10 words explaining the link
- Return empty array [] if no meaningful connections exist

6. Ask Aura Chat Prompt

Triggered: When user asks a question in the Ask Aura chat.

Context provided: Three-tier RAG context (distilled memories → weekly summaries → semantic search + recent notes), up to 20 most recent notes.

You are Aura, a personal AI assistant with access to the user's second brain.
Answer questions using ONLY the context provided below. If the context doesn't
contain relevant information, say so honestly.

Be conversational, specific, and reference note titles when relevant.
Keep answers concise — 2-4 sentences unless the question requires more detail.

Recent Changes (Session 17)

Tighter Reminder Rules

  • Auto-classification prompt now defaults action_kind to "none" — reminders only created when the user explicitly asks (e.g. "remind me to...", "deadline is...")
  • Post-LLM validation requires BOTH suggested_type == task AND a valid deadline — prevents false positive reminders on plain notes

Structured Daily Briefing

  • Renamed from "YOUR BRIEFING" to "DAILY BRIEFING"
  • Reflection-focused: analyzes yesterday's notes (or last 5) for patterns and connections instead of repeating today's tasks
  • Emoji-bulleted format with distinct greeting line and structured insight lines

Weekly Briefing (Sundays)

  • New WEEKLY BRIEFING card appears only on Sundays with purple accent
  • Analyzes all notes from the past 7 days: themes, tag frequency, cross-vault connections, progress, standout notes
  • Cached separately so it persists through the day

New Vaults: Personal & Projects

  • Two new vault presets: Personal (green, #00E5A0) and Projects (coral, #FF6B6B)
  • Each vault has an SF Symbol icon and short name for compact display
  • Vault directories auto-create on first note save
  • All Vault.allCases loops, color mappings, and UI elements updated across the app

Compact Vault Chips

  • VaultChip now supports compact mode: icon + short name, tighter padding
  • Capture sheet uses compact chips in a horizontal ScrollView — all 5 vaults fit cleanly
  • Vault Browser tab header uses the same chip design for visual consistency

Prominent Save Button

  • Capture sheet "Save to Vault" redesigned: solid green background, dark text, document icon, green glow shadow
  • Clear visual distinction between enabled and disabled states

Vault Export

  • New "Export Vault Notes" option in Settings under a DATA section
  • Creates a zip file preserving folder structure (AuraVault/Corporate/*.md, etc.)
  • Uses NSFileCoordinator with .forUploading — zero external dependencies
  • iOS share sheet for saving to Files, AirDrop, or opening in Obsidian

Tech Stack

Component Technology
Platform iOS 17+, Swift 5.10
UI Framework SwiftUI, dark mode only
State Management @Observable macro (iOS 17+)
Async Swift Concurrency (async/await)
On-Device LLM MLX Swift + Qwen 3 1.7B 4-bit
Speech SFSpeechRecognizer (on-device)
Semantic Search Apple NLEmbedding (NaturalLanguage.framework)
Reminders/Calendar EventKit
Lock Screen Widget WidgetKit
Markdown Rendering MarkdownUI (gonzalezreal/swift-markdown-ui)
Git Sync GitHub REST API (Contents API)
Encryption git-crypt (AES-256)
Secrets iOS Keychain (PAT storage)

Prerequisites

  • Mac with Apple Silicon (M1+) or Intel — for building in Xcode
  • Xcode 16+ with iOS 17 SDK
  • iOS 17+ device (iPhone recommended for speech + haptics)
  • Apple Developer Account (free works for personal device, paid for TestFlight/App Store)
  • GitHub account (optional — only needed for cloud backup)

No Mac pipeline, no Python, no Ollama, no cloud AI required. Everything runs on the iPhone.


Getting Started (First-Time Setup)

Step 1: Install Xcode

If you don't have Xcode installed:

  1. Open App Store on your Mac → search Xcode → Install (it's free, ~12 GB)
  2. After install, open Xcode once and accept the license agreement
  3. Install command-line tools if prompted:
    xcode-select --install
  4. In Xcode → Settings > Platforms, make sure iOS 17 SDK is installed

Step 2: Fork & Clone the Repository

  1. Fork this repo on GitHub (click the Fork button at top-right)
  2. Clone your fork:
    git clone https://github.com/YOUR_USERNAME/aura-vault-private.git ~/Documents/Developer/Aura

Step 3: Open in Xcode

open ~/Documents/Developer/Aura/Aura.xcodeproj

Xcode will automatically resolve SPM packages (MarkdownUI, mlx-swift-examples). This may take 2-3 minutes on first open.

Step 4: Configure Signing & Bundle ID

This is required for running on a real iPhone:

  1. In Xcode, select the Aura project in the navigator (blue icon at top)
  2. Select the Aura target → Signing & Capabilities tab
  3. Check "Automatically manage signing"
  4. Select your Team (your Apple ID — "Personal Team" works for free accounts)
  5. Change the Bundle Identifier to something unique:
    com.YOUR_NAME.aura
    
  6. Repeat for the AuraWidgetExtension target — use:
    com.YOUR_NAME.aura.widget
    
  7. Update the App Group in both targets' entitlements to match:
    group.com.YOUR_NAME.aura
    

Note: Free Apple Developer accounts can run on your personal device for 7 days before re-signing. A paid account ($99/year) removes this limit.

Step 5: Create Vault Directory

The app stores notes locally on the iPhone at Documents/AuraVault/. The vault directories are created automatically when you save your first note to each vault. No manual setup needed.

For local development/testing on Mac:

mkdir -p ~/Documents/AuraVault/{Corporate,Trading,Family/attachments,Personal,Projects}

Step 6: Build & Run

  1. Connect your iPhone via USB (or use wireless debugging)
  2. Select your device in the Xcode toolbar
  3. Hit Cmd+R to build and run
  4. On first launch, trust the developer certificate on your iPhone: Settings > General > VPN & Device Management > your Apple ID > Trust

Step 7: Download On-Device AI Model

  1. In the app: Settings > On-Device AI
  2. Download Qwen 3 1.7B (recommended) — ~1 GB download, ~1.2 GB RAM at runtime
  3. The model auto-loads on subsequent app launches
  4. Without a model, the app still works — classification, briefings, and Ask Aura will be disabled

Step 8: Configure GitHub Backup (Optional)

This is optional — the app works fully offline without it. If you want cloud backup:

  1. Create a private repo on GitHub (e.g. aura-vault-notes)
  2. Generate a fine-grained Personal Access Token with read/write Contents access to that repo
  3. In the app: Settings > Sync → enter your GitHub username, repo name, and PAT
  4. The PAT is stored securely in the iOS Keychain — never in code or UserDefaults

Customization

Vaults: The app ships with 5 preset vaults (Corporate, Trading, Family, Personal, Projects). To add or rename vaults, edit Vault.swift — add a new enum case, color in AuraTheme.swift, and icon/shortName.

Colors: All colors are defined in AuraTheme.swift as design tokens. Dark mode only.

AI Model: You can use any MLX-compatible model from HuggingFace. Add it to LocalLLMCatalogue.swift.


App Screens

Tab Screen Description
Capture Voice + Type modes Record or type thoughts, AI classifies after save
Pulse Daily dashboard Morning briefing, today's tasks, morning moment animation
Aura RAG AI chat Ask questions about your notes — grounded in distilled memories + semantic search
Vault Note browser Browse by vault, keyword search, swipe actions, note editor with markdown preview
Settings Configuration GitHub sync, on-device AI model management, vault export, privacy

Project Structure

Aura/
├── CLAUDE.md                          # AI development context file
├── CONTRIBUTING.md                    # Contributor guidelines
├── CLAUDE_CODE_LEARNINGS.md           # AI-assisted dev learnings
├── tasks/
│   ├── todo.md                        # Session planning
│   └── lessons.md                     # Cross-session mistake log
├── AuraWidget/
│   ├── AuraWidgetBundle.swift
│   └── CaptureWidget.swift            # Lock Screen capture widget
└── Aura/Sources/
    ├── Core/                          # Pure Swift — zero SwiftUI imports
    │   ├── Models/
    │   │   ├── Note.swift             # Note struct + NoteType enum (incl. distilled types)
    │   │   ├── NoteAction.swift       # Action kind, deadline, time
    │   │   └── Vault.swift            # 5 vaults: Corporate/Trading/Family/Personal/Projects
    │   ├── Services/
    │   │   ├── VaultService.swift     # File system + frontmatter CRUD
    │   │   ├── GitService.swift       # GitHub REST API sync
    │   │   ├── SyncService.swift      # Pull notes + create reminders
    │   │   ├── SearchService.swift    # Semantic (NLEmbedding) + keyword search
    │   │   ├── TaskService.swift      # EventKit reminders + calendar
    │   │   ├── WhisperService.swift   # SFSpeechRecognizer wrapper
    │   │   ├── AuraAIService.swift    # Unified AI gateway (classification, cleanup, chat)
    │   │   ├── LocalLLMService.swift  # MLX Swift model management
    │   │   ├── DistillationService.swift # Weekly/monthly intelligence reports
    │   │   ├── VaultExportService.swift # Export all notes as zip
    │   │   └── AudioRecorderService.swift
    │   ├── Utilities/
    │   │   ├── FrontmatterParser.swift
    │   │   ├── RelativeDateResolver.swift
    │   │   └── KeychainHelper.swift
    │   └── AppDependencies.swift      # Central dependency container
    ├── Features/
    │   ├── Capture/                   # Voice + text capture
    │   ├── DailyPulse/                # Morning dashboard + briefing
    │   ├── AskAura/                   # RAG-powered AI chat (Membrane aesthetic)
    │   ├── Vault/                     # Browse, edit, note editor
    │   ├── Family/                    # Ahaan timeline (gold accent)
    │   └── Settings/                  # Git config, on-device AI, privacy
    └── DesignSystem/
        ├── AuraTheme.swift            # Color tokens + vault colors
        ├── Typography.swift           # Font.aura* definitions
        ├── GlassPanel.swift           # Glass morphism card component
        ├── PulseButton.swift          # Animated record button
        └── VaultChip.swift            # Vault selection chip

Two Repositories

Aura uses two separate Git repositories to keep app code and user data cleanly separated:

App Code Vault Data
Repo aura-vault-private aura-vault-notes
Local Path ~/Documents/Developer/Aura/ ~/Documents/AuraVault/
Contains Swift code, Xcode project, docs .md notes, _distilled/ reports
Pushed by Developer (you) iPhone app (GitService)
Encrypted No Yes (git-crypt)

Boundary rules:

  • Never push .md notes into the app repo
  • Never push Swift code into the vault repo
  • GitService on iPhone always targets aura-vault-notes

Design System

Aura uses a strict design token system. Dark mode only.

Colors

// Vault accent colors
Color.auraCorporate   // #00D4FF — electric blue
Color.auraTrading     // #7B61FF — purple
Color.auraFamily      // #FFB627 — gold
Color.auraPersonal    // #00E5A0 — green
Color.auraProjects    // #FF6B6B — coral

// Semantic
Color.auraSuccess     // #00E5A0 — confirmations
Color.auraDanger      // #FF4757 — errors, destructive

// Backgrounds
Color.auraVoid        // #060810 — base background
Color.auraSurface     // #0D1117 — card background
Color.auraElevated    // #161B22 — modal/sheet background

// Text hierarchy
Color.auraTextPrimary    // #E6EDF3 — body content, note text
Color.auraTextSecondary  // #7D8590 — section headers, labels, placeholders
Color.auraTextDim        // #3D444D — timestamps, metadata only

Typography

Font.auraDisplay     // 48pt thin rounded — hero numbers
Font.auraHeadline    // 24pt semibold rounded — section titles
Font.auraBody        // 16pt regular — body text
Font.auraMono        // 13pt monospaced — metadata, tags

Components

  • GlassPanel — Glass morphism card used for all content cards
  • PulseButton — Animated capture button with ripple rings
  • VaultChip — Color-coded vault selection pill
  • AmbientBlob — Breathing glow animation (Aura tab header)

Note Schema

Every note is a Markdown file with YAML frontmatter:

---
title: Q1 Planning Meeting
vault: Corporate
type: task
tags: [planning, q1, roadmap]
cross_vault_refs: []
status: indexed
evergreen: false
action:
  kind: reminder
  deadline: 2026-03-15
  time: "09:00"
  is_time_specific: true
created: 2026-02-28T14:32:00Z
modified: 2026-02-28T14:32:00Z
---

Meeting notes content here...
Field Values Description
vault Corporate, Trading, Family, Personal, Projects Which vault this note belongs to
type task, note, log, idea, distilled_weekly, distilled_monthly Note classification
status pending_classification, indexed Processing state
evergreen true/false Resurfaces in Daily Pulse
action.kind reminder, calendar, none Creates iOS Reminder or Calendar event
action.deadline ISO date When the action is due
action.is_time_specific true/false Calendar event vs all-day

Privacy & Security

  • On-device speech: SFSpeechRecognizer with requiresOnDeviceRecognition — audio never leaves your phone
  • On-device AI: MLX Swift runs Qwen 3 locally — no cloud AI APIs, no data sent anywhere
  • git-crypt encryption: All .md files and attachments are AES-256 encrypted before push to GitHub
  • Keychain storage: GitHub PAT stored in iOS Keychain, never in UserDefaults
  • Zero telemetry: No analytics, no tracking, no outbound data of any kind

Roadmap

Aura was built across 16+ sessions in 6 phases:

Phase Sessions Focus
1. Foundation 1-4 Project structure, VaultService, Capture, Widget
2. Mac Pipeline 5-7 launchd sync, Ollama classification, mlx-embeddings
3. Intelligence 8-10 Daily Pulse, Search, Note Editor
4. Vault Browser 11-12 Vault browser, git time travel
5. Polish 13-15 Family vault, photo attachments, onboarding
6. On-Device AI 16+ MLX Swift LLM, on-device classification, RAG chat, distillation, Mac pipeline removed

License

MIT License — see LICENSE for details.


Built with Claude Code

This entire app was built using Claude Code, Anthropic's CLI for AI-assisted development.

Read about the development process and lessons learned: CLAUDE_CODE_LEARNINGS.md

About

AI Assistance

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages