foxus/README.md

4.1 KiB

Foxus - Local-First AI Coding Assistant

A privacy-focused, fully offline coding assistant that provides AI-powered code completion, refactoring, bug fixing, and code explanation using locally running language models.

Features

  • 🔒 Fully Local & Private: No internet connection required, all data stays on your machine
  • 🧠 AI-Powered Assistance: Code completion, refactoring, bug fixing, and explanation
  • 🌐 Multi-Language Support: Python, JavaScript, TypeScript, Go, Java, Rust, and more
  • 💻 Cross-Platform: Windows, Linux, and macOS support
  • ⌨️ Keyboard Shortcuts: Quick AI commands (/explain, /refactor, /fix, etc.)
  • 📁 Project Context: Multi-file analysis and understanding
  • 🎨 Modern UI: Clean, responsive interface built with React and Tauri

Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Tauri + React │◄──►│  FastAPI Server │◄──►│ Ollama/LLM      │
│   (Frontend)    │    │   (Backend)     │    │ (Local Models)  │
└─────────────────┘    └─────────────────┘    └─────────────────┘

Technology Stack

  • Frontend: Tauri + React + TypeScript + Monaco Editor
  • Backend: FastAPI (Python) + uvicorn
  • LLM Runtime: Ollama
  • Models: CodeLlama, Deepseek-Coder, StarCoder
  • Styling: Tailwind CSS
  • State Management: Zustand

Quick Start

Prerequisites

  • Node.js (v18+)
  • Python (3.9+)
  • Rust (for Tauri)
  • Ollama

Installation

  1. Clone and setup the project:
git clone <repository>
cd foxus
  1. Install dependencies:
# Install frontend dependencies
cd frontend
npm install
cd ..

# Install backend dependencies
cd backend
pip install -r requirements.txt
cd ..
  1. Install and start Ollama:
# Install Ollama (Linux/macOS)
curl -fsSL https://ollama.ai/install.sh | sh

# Pull a coding model
ollama pull codellama:7b-code
  1. Start the application:
# Terminal 1: Start backend
cd backend
python main.py

# Terminal 2: Start frontend
cd frontend
npm run tauri dev

Project Structure

foxus/
├── frontend/           # Tauri + React application
│   ├── src/
│   │   ├── components/ # React components
│   │   ├── services/   # API services
│   │   ├── hooks/      # Custom React hooks
│   │   ├── stores/     # State management
│   │   └── utils/      # Utility functions
│   ├── src-tauri/      # Tauri backend (Rust)
│   └── package.json
├── backend/            # FastAPI server
│   ├── app/
│   │   ├── api/        # API routes
│   │   ├── core/       # Core functionality
│   │   ├── models/     # Pydantic models
│   │   └── services/   # Business logic
│   ├── main.py
│   └── requirements.txt
├── docs/               # Documentation
└── README.md

Usage

AI Commands

  • /explain - Explain selected code
  • /refactor - Suggest refactoring improvements
  • /fix - Fix bugs in selected code
  • /complete - Auto-complete code
  • /comment - Add comments to code
  • /test - Generate unit tests

Keyboard Shortcuts

  • Ctrl+K (or Cmd+K) - Open AI command palette
  • Ctrl+Shift+E - Explain code
  • Ctrl+Shift+R - Refactor code
  • Ctrl+Shift+F - Fix code

Development

Adding New AI Commands

  1. Add command to backend/app/api/ai.py
  2. Update frontend command palette in frontend/src/components/CommandPalette.tsx
  3. Add keyboard shortcut in frontend/src/hooks/useKeyboardShortcuts.ts

Supported Models

  • CodeLlama (7B, 13B, 34B)
  • Deepseek-Coder (1.3B, 6.7B, 33B)
  • StarCoder (1B, 3B, 7B, 15B)
  • CodeT5+ (220M, 770M, 2B, 6B)

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

License

MIT License - see LICENSE file for details.