Think. Talk. Create. -- an AI assistant for macOS, Windows, Linux, Android and iOS.
Built with Python and BeeWare (Toga + Briefcase).
- Chat with streaming answers, chat history that saves itself, smart titles, drafts
- Voice: natural voices, voice conversations, and "Hey Gink" (wake word detected on the device)
- Does things: alarms, reminders, tasks, files (PDF, Word, Excel...), images, weather, currency and maths; on desktop also apps, Finder, Terminal, music, volume, screenshots, notes
- Morning briefing that picks up where you left off
- Sync across devices, Gink Pro with local payment methods, light and dark themes
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # then add your keys -- .env is never committed
python -m ginkassistantRun Briefcase from this folder. Apps are built in build/ginkassistant/<platform>/....
python -m briefcase create macOS && python -m briefcase build macOS && python -m briefcase run macOS- macOS 10.15 Catalina: use Briefcase 0.3.15 (newer Briefcase makes apps that need macOS 11+);
requirements.txtpicks the right version. - Android and iOS are built on GitHub (Actions tab) -- see
deploy/IOS_AND_WEB.md. - Check your setup any time:
python tools/check_project.py(--fixrepairs it). - New icon: replace
icons/source-icon.png, runpython tools/make_icons.py.
pip install -r requirements-test.txt
python -m pytest testsThe Gink server also serves a web version at /app -- on your computer,
http://localhost:8000/app while Gink is running. It's the app's own chat page plus a
browser bridge (webapp/), built with python tools/build_web_app.py: sign in, chat,
images, natural voices, dictation, and chats that sync with the desktop app.
Alarms, tasks and computer control stay in the app.
OpenAI-compatible, so the official OpenAI libraries work: base_url="https://<server>/v1",
api_key="gink_live_...". Keys are created on /developers (shown once, stored hashed).
POST /v1/chat/completions (streaming too), GET /v1/models, POST /v1/images/generations.
Calls share the account's daily allowance; each key also has a per-minute limit
(GINK_API_PER_MINUTE, default 30).
https://<server>/admin, opened with GINK_ADMIN_KEY (Render generates it): users, Pro,
usage (messages, Claude, web searches, images, voice), a 14-day chart, payments, feedback,
service status, and cost estimates from the prices you enter. python tools/grant_pro.py
gives an account Pro. 10 wrong keys from one address lock it out for 10 minutes.
The site lives in website/ (one shared layout in tools/build_website.py). Preview it with
python tools/build_website.py and open website/_site/index.html. It's published on GitHub
Pages automatically. To show Gink Pro prices, set them in website/assets/pricing.js.
Gink's AI, voices, images, sync and payments go through your own server, so no keys are
inside the app. Deploying it (Render, Docker) and its settings: deploy/README.md.
MIT -- see LICENSE.