An open API service indexing awesome lists of open source software.

https://github.com/94solutions/yoda

Wise and powerful personal assistant, available in your nearest terminal
https://github.com/94solutions/yoda

ai chat chatbot cli devtools go golang hacktoberfest ollama personal-assistant

Last synced: 3 months ago
JSON representation

Wise and powerful personal assistant, available in your nearest terminal

Awesome Lists containing this project

README

          

# Yoda - Personal Assistant CLI

[![Go Version](https://img.shields.io/badge/Go-1.24+-blue.svg)](https://golang.org)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Build and Release](https://github.com/94solutions/yoda/actions/workflows/build.yml/badge.svg)](https://github.com/94solutions/yoda/actions/workflows/build.yml)

Yoda is a modern, extensible command-line personal assistant built in Go. It features a plugin-based architecture, local AI integration via Ollama, and a focus on privacy and performance.

## 1. Features

- **Fast Performance**: Built in Go for speed and efficiency
- **Plugin Architecture**: Extensible with custom plugins
- **AI Integration**: Local AI processing with Ollama support
- **Privacy-First**: All processing happens locally
- **Configuration Management**: Flexible YAML-based configuration
- **Cross-Platform**: Works on Linux, macOS, and Windows

## 2. Quick Start

### 2.1. Installation

#### 2.1.1. Option 1: Build from Source

```bash
# Clone the repository
git clone https://github.com/94solutions/yoda.git

# Build the binary
make build

# Install to system (optional)
make install
```

#### 2.1.2. Option 2: Download Pre-built Binary

Download the latest release for your platform from the [releases page](https://github.com/94solutions/yoda/releases).

### 2.2. Initial Setup

Initialize Yoda configuration:

```bash
yoda init
```

This creates the configuration directory at `~/.yoda/` and sets up the default configuration.

### 2.3. Basic Usage

```bash
# Show help
yoda --help

# List available plugins
yoda plugin list

# View configuration
yoda config list

# Get a specific config value
yoda config get global.ai.model

# Set a config value
yoda config set global.ai.model "llama3.1"
```

## 3. Configuration

Yoda uses a YAML configuration file located at `~/.yoda/config.yaml`. The configuration includes:

### 3.1. AI Settings
```yaml
global:
ai:
model: "codellama"
max_context_length: 4096
temperature: 0.7
base_url: "http://localhost:11434"
```

### 3.2. Plugin Settings
```yaml
global:
plugins:
auto_discovery: true
trusted_sources: ["official", "community"]
plugin_dirs: []
disabled_plugins: []
```

### 3.3. Security Settings
```yaml
global:
security:
plugin_sandboxing: true
api_rate_limiting: true
```

## 4. Plugin Management

### 4.1. Built-in Commands

- `yoda plugin list` - List all available plugins
- `yoda plugin enable ` - Enable a plugin
- `yoda plugin disable ` - Disable a plugin
- `yoda plugin refresh` - Refresh plugin registry

### 4.2. Plugin Development

Yoda supports an extensible plugin system. Plugins can be:

1. **Built-in plugins** - Core functionality (config, plugin management)
2. **External plugins** - Custom functionality (coming soon)
3. **AI-generated plugins** - Generated by the AI backend (planned)

## 5. Development

### 5.1. Prerequisites

- Go 1.24 or later
- Make (optional, for convenience)

### 5.2. Building

```bash
# Install dependencies
make deps

# Build the binary
make build

# Build for development (with race detector)
make dev

# Build for all platforms
make build-all
```

### 5.3. Testing

```bash
# Run tests
make test

# Run tests with coverage
make test-coverage

# Run linter
make lint

# Format code
make fmt
```

### 5.4. Project Structure

```bash
yoda
├── cmd
│ └── yoda
│ └── main.go. # main application entry point
├── go.mod # Go module definition
├── internal
│ └── commands # CLI commands implementation
│ ├── config.go
│ ├── init.go
│ └── plugin.go
├── Makefile # Commands for build automation
├── pkg
│ ├── config
│ │ └── manager.go # Config management
│ ├── database
│ │ └── connection.go # DB connectivity
│ └── plugin
│ └── manager.go # Plugin management
└── README.md # This file
```

## 6. Architecture

Yoda follows a modular architecture:

- **CLI Layer**: Cobra-based command interface
- **Core Services**: Configuration, plugin management, database
- **Plugin System**: Extensible plugin architecture
- **Data Layer**: SQLite for local storage
- **AI Backend**: Separate service for AI functionality (planned)

## 7. Roadmap

### 7.1. Phase 1: Core Infrastructure ✅
- [x] Go CLI framework setup
- [x] Basic plugin system
- [x] Configuration management
- [x] Database integration

### 7.2. Phase 2: AI Integration (In Progress)
- [ ] Ollama integration service
- [ ] AI command interface
- [ ] Context management
- [ ] Code generation

### 7.3. Phase 3: Plugin Ecosystem
- [ ] External plugin loading
- [ ] Plugin marketplace
- [ ] AI-powered plugin generation
- [ ] Security framework

## 8. Contributing

We welcome contributions! Please see our [contributing guidelines](CONTRIBUTING.md) for details.

### 8.1. Development Workflow

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. Run `make test` and `make lint`
6. Submit a pull request

## 9. Troubleshooting

### 9.1. Common Issues

**Database Connection Error**
```
Error loading plugins: failed to connect to database: out of memory (14)
```
This usually occurs on first run. Initialize Yoda with `yoda init` to set up the database.

**Configuration Not Found**
Run `yoda init` to create the default configuration.

**Plugin Loading Issues**
Try `yoda plugin refresh` to reload the plugin registry.

## 10. License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 11. Related Projects

- [Yoda v2](https://github.com/94solutions/yoda/tree/v2) - Python implementation
- [Ollama](https://ollama.com) - Local LLM runtime
- [Cobra](https://github.com/spf13/cobra) - CLI framework

## 12. Support

- [Documentation](https://94solutions.github.io/yoda)
- [Issue Tracker](https://github.com/94solutions/yoda/issues)
- [Discussions](https://github.com/94solutions/yoda/discussions)

---

**May the source be with you! 🌟**