A lightweight OpenRouter client with Supabase-based remote API key storage.
Project description
Magic Answer
A lightweight Python library for querying OpenRouter LLMs using API keys stored in a Supabase key-value database.
Instead of embedding an OpenRouter API key into your application, Magic Answer retrieves it from a Supabase key-value store at runtime using a lookup key. This allows API keys to be updated or rotated without modifying or redistributing client applications.
Features
- Query any model available through OpenRouter
- Automatic fallback between multiple models
- Retrieve OpenRouter API keys from a Supabase key-value store
- Exceptionally simple Python API
- Optional clipboard integration
- Built-in key manager for maintaining the Supabase database
- Easily customizable through configuration
Installation
pip install magic-answer
Quick Start
Query using console input:
import magic_answer
magic_answer.ask("your_lookup_key")
Or use the clipboard:
import magic_answer
magic_answer.ask_clipboard("your_lookup_key")
Managing API Keys
Magic Answer includes a simple graphical key manager for maintaining your Supabase key-value store.
import magic_answer
magic_answer.open_key_manager()
The key manager allows you to:
- Add or update API keys
- Check whether a lookup key exists
- View the stored value associated with a lookup key
Configuration
Override the default Supabase configuration:
from magic_answer import config
config.SUPABASE_URL = "https://your-project.supabase.co"
config.SUPABASE_KEY = "your_supabase_anon_key"
config.CUSTOM_INSTRUCTION = "Your custom instruction"
Configure fallback models:
from magic_answer import models
models.models = [
"openai/gpt-oss-20b:free",
"qwen/qwen3-235b-a22b:free",
"deepseek/deepseek-r1:free",
]
The library will attempt each model in order until one successfully returns a response.
API
ask(lookup_key)
Prompts the user for a question, retrieves the corresponding OpenRouter API key from Supabase using lookup_key, queries OpenRouter, and prints the model's response.
ask_clipboard(lookup_key)
Reads the prompt from the clipboard, retrieves the corresponding OpenRouter API key from Supabase, queries OpenRouter, and copies the model's response back to the clipboard.
open_key_manager()
Opens the built-in HTML key manager in the default web browser, allowing you to add, update, and inspect entries in your Supabase key-value store.
Requirements
- Python 3.10+
- Internet connection
- A Supabase project containing the key-value table
- An OpenRouter API key stored in that table
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file magic_answer-0.1.4.tar.gz.
File metadata
- Download URL: magic_answer-0.1.4.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0d02c65a5506cf6a4521f70f4d4c1b65693ed681addf9edd4597eec3b64a5b8
|
|
| MD5 |
1ddc5a7e898c51162c3b3657791fc46a
|
|
| BLAKE2b-256 |
8df5574cf9b3c855591476a0537d0b67205c83236c9b3832329ef878a3d08ac1
|
File details
Details for the file magic_answer-0.1.4-py3-none-any.whl.
File metadata
- Download URL: magic_answer-0.1.4-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a4c854c98f52c48a8d0156810f874b82f1f72c498b43eacd360ded9f348e81d
|
|
| MD5 |
718e99f3b505e913c9fb08f4bb5cca0e
|
|
| BLAKE2b-256 |
3ac7d11c12be809a3fc7ea917d4c3ab731ddea27018abcf282d6a56b91287062
|