Skip to content
Akhil Pinnani
Back to selected work

Oct 2026 – present

aihub

A Claude-style chat app that runs on free and local models, with a spend-capped Claude workspace as an option, behind one composer.

Runs on your own machine; built and tested on Arch Linux only.

aihub's chat page: a question about cache stampedes answered by a local qwen3:8b model, with model, reasoning effort, tokens per second, token count and time shown under the reply.
A reply from a local model, with speed, token count and time under it. Screenshot of a fresh instance with an empty database.
aihub's model picker listing local Ollama models with size, context and capabilities, and paid OpenRouter models that are disabled until a key is set.
The model picker on a fresh install: local models are ready, paid ones are listed but disabled until a key is added.

The problem

One person, many models: local Ollama, free and cheap OpenRouter models, and Claude, with a visible cost and a hard spending limit.

Overview

aihub is a clone of Claude's chat experience, built to run on free and local models: a private web chat for one person that puts local Ollama models, free OpenRouter models and an optional spend-capped Claude workspace behind one composer. I run it as a systemd user service on my own machine.

What I built

  • One composer over local Ollama models, OpenRouter models, and a spend-capped Claude workspace, with streaming replies, a per-model reasoning-effort control, and the estimated cost shown under each reply.
  • Models whose key is missing are listed but disabled, with the fix written next to them.
  • Hardening for single-user use: loopback-only binding, strict CSP, sanitized model output and 30-day chat retention, with Python, browser-module and end-to-end tests.

Stack

  • Python
  • Starlette
  • JavaScript
  • Ollama
  • OpenRouter
  • Claude API

Status

In progress. Built and tested on Arch Linux with an NVIDIA GPU; nothing else has been tried.