Ori Agent is a local AI agent management platform. Spin up multiple named agents, each with its own model, prompt, and tool loadout, and run them through a browser UI or API. Agents call plugins (gRPC tools) to act—everything stays on your machine unless you opt into cloud LLMs.
If you want to keep your information local, this is a way to go.
Honestly, everybody is chasing for the AGI, and this is a budget friendly version of "smarter" - AI agent that may or may not lead to AGI.
I don't plan on promoting this until Q426 or Q127 (This date may change). If you are here early, then welcome! Hope you enjoy this. Let me know, how this is.
Ori Agent supports multiple AI providers, giving you flexibility in choosing your preferred AI model:
-
OpenAI
- Requires:
OPENAI_API_KEY - Best for: Production use, latest models, reliable performance
- Requires:
-
Anthropic Claude
- Requires:
ANTHROPIC_API_KEY - Best for: Long context windows, detailed reasoning
- Requires:
- Ollama - Run models locally on your machine
- Requires: Ollama installed and running (http://localhost:11434)
- Best for: Privacy, offline use, cost savings
- Supports: Llama 3, Mistral, Phi-3, and other Ollama models
- Go 1.25 or later
- An API key from one of the supported providers (OpenAI, Claude) OR Ollama installed locally
-
Download the DMG from the latest release:
- Apple Silicon:
OriAgent-{version}-arm64.dmg - Intel Macs:
OriAgent-{version}-amd64.dmg
- Apple Silicon:
-
Open the DMG and drag
OriAgent.appto Applications -
Handle macOS Security Warning
When first opening OriAgent, macOS may show one of these warnings:
- "OriAgent is damaged and can't be opened" (most common)
- "Apple cannot verify OriAgent is free of malware"
This is normal for open-source apps not notarized by Apple. To install safely:
Method 1 - Right-Click (Easiest):
- Drag
OriAgent.appto Applications folder - Right-click (or Control+click)
OriAgent.appin Applications - Select "Open" from the menu
- Click "Open" in the dialog that appears
Method 2 - Terminal Command:
xattr -rc /Applications/OriAgent.app open /Applications/OriAgent.app
After the first launch, you can open normally by double-clicking.
-
Configure your API key through the Settings panel in the app, or export it:
export OPENAI_API_KEY="your-api-key"
-
Access the interface at
http://localhost:8765
-
Clone the repository
git clone https://github.com/johnjallday/ori-agent.git cd ori-agent -
Install dependencies
go mod tidy
-
Set up your API key (choose one)
# For OpenAI export OPENAI_API_KEY="your-openai-api-key" # For Claude export ANTHROPIC_API_KEY="your-anthropic-api-key" # For Ollama - just make sure it's running # No API key needed!
-
Build and run
./scripts/build.sh ./bin/ori-agent
-
Open your browser
http://localhost:8765
-
Download the package from the latest release:
Debian/Ubuntu:
# Download .deb file wget https://github.com/johnjallday/ori-agent/releases/latest/download/ori-agent_{version}_amd64.deb # Install sudo dpkg -i ori-agent_{version}_amd64.deb
Red Hat/Fedora/CentOS:
# Download .rpm file wget https://github.com/johnjallday/ori-agent/releases/latest/download/ori-agent_{version}_amd64.rpm # Install sudo rpm -i ori-agent_{version}_amd64.rpm
-
Configure API key via environment variable or
/etc/ori-agent/settings.json -
Start the service:
sudo systemctl start ori-agent sudo systemctl enable ori-agent # Auto-start on boot
-
Access the interface at
http://localhost:8765
-
Download
ori-agent_{version}_windows_x86_64.tar.gzfrom the latest release -
Extract the archive to a folder (e.g.,
C:\Program Files\OriAgent) -
Set API key via Environment Variables or create
settings.jsonin the same folder -
Run
ori-agent.exe -
Access the interface at
http://localhost:8765
Ori Agent includes a comprehensive session management system for organizing and managing your chat conversations.
- Persistent Chat Sessions: All conversations are automatically saved and can be resumed anytime
- Folder Organization: Group related sessions into folders for better organization
- Multi-Tab Support: Work with multiple sessions simultaneously in separate browser tabs
- Full-Text Search: Quickly find messages across all your sessions
- Tagging System: Add tags to sessions for easy categorization and filtering
- Automatic Cleanup: Optionally clean up old, inactive sessions to manage storage
Sessions are stored in a SQLite database with an in-memory LRU cache for fast access:
- Cache: Recently accessed sessions are kept in memory for instant retrieval
- Database: All sessions are persisted to SQLite with full-text search support
- Hybrid Architecture: Automatic cache warming and write-through for optimal performance
Configure session storage limits via the Settings page or settings.json:
| Setting | Default | Description |
|---|---|---|
session_cleanup_enabled |
true |
Enable automatic cleanup of old sessions |
session_cleanup_days |
30 |
Days of inactivity before a session is eligible for cleanup |
session_max_count |
1000 |
Maximum number of sessions to keep (0 = unlimited) |
Via Settings Page:
- Navigate to Settings → Session Management
- Configure cleanup options and limits
- View current storage statistics
- Run manual cleanup if needed
Via settings.json:
{
"session_cleanup_enabled": true,
"session_cleanup_days": 30,
"session_max_count": 1000
}| Endpoint | Method | Description |
|---|---|---|
/api/sessions |
GET | List all sessions (with pagination, filtering) |
/api/sessions |
POST | Create a new session |
/api/sessions/{id} |
GET | Get a specific session |
/api/sessions/{id} |
PUT | Update session metadata |
/api/sessions/{id} |
DELETE | Delete a session |
/api/sessions/{id}/messages |
GET | Get messages for a session |
/api/sessions/{id}/messages |
POST | Add a message to a session |
/api/sessions/search |
GET | Search across all sessions |
/api/sessions/storage/stats |
GET | Get storage statistics |
/api/sessions/cleanup |
POST | Trigger manual cleanup |
The session system is optimized for handling many sessions efficiently:
- 100+ Sessions: Tested to handle 150+ sessions with sub-millisecond list operations
- Concurrent Access: Thread-safe operations support multiple tabs and clients
- Efficient Search: Full-text search returns results in under 500µs for typical workloads
Ori Agent uses a plugin system that lets you extend functionality with custom tools. Build plugins as standalone executables that communicate via gRPC.
We've introduced three powerful APIs that dramatically simplify plugin development:
Define parameters in plugin.yaml instead of code:
tool_definition:
description: "Your tool description"
parameters:
- name: operation
type: string
required: true
enum: [create, list, delete]
- name: count
type: integer
min: 1
max: 100func (t *MyTool) Definition() pluginapi.Tool {
tool, _ := t.GetToolDefinition() // Auto-loads from plugin.yaml
return tool
}Checkout Example Plugins
| Plugin | Description | Type |
|---|---|---|
| math | Perform basic math operations: add, subtract, multiply, divide | Example |
| minimal | Minimal example tool demonstrating YAML-based configuration. Supports echo and status operations. | Example |
| result-handler | Handle actions on chat results like opening directories, files, or URLs | Example |
| weather | Get weather for a given location | Example |
| webapp | Example tool with web interface. Manages a simple list of items. | Example |
Serve beautiful web pages with Go templates:
# plugin.yaml
assets:
- templateshtml, err := pluginapi.RenderTemplate(assetsFS, "templates/page.html", data)- Documentation: See PLUGIN_OPTIMIZATION_GUIDE.md for complete migration guide
- Examples: Check out
example_plugins/minimal/andexample_plugins/webapp/ - Reference: See CLAUDE.md for detailed plugin development patterns
cd example_plugins/minimal
go build -o minimal-plugin main.go
cp minimal-plugin ../../uploaded_plugins/Restart Ori Agent, and your plugin will be automatically loaded!
This project is licensed under the MIT License - see the LICENSE file for details.
- 🐛 Issues: GitHub Issues
- 💡 Feature Requests: Open an issue with the "enhancement" label
- 💬 Discussions: GitHub Discussions
While this app is very functional, there will be a lot of breaking changes. Feel free to give feedbacks. MVP = v0.1.0 => I will be releasing at least once a week until v0.0.99
- v0.1.0 => AI Agent Functionality
- v0.2.0 => Blockchain Integration
Made with ❤️ using Go and modern web technologies