LLMsInterface is a web application that provides a ChatGPT/Gemini-like chat UI over a locally hosted language model API. It is built with the Laravel framework. In addition to Laravel, Vue was also used. These frameworks were integrated using the Inertia framework that allows for building SPA applications despite following the MVC architecture. Authentication and account scaffolding come from Laravel Jetstream and Fortify. The application is designed to talk to an OpenAI-compatible chat endpoint (for example LM Studio exposed through a tunnel such as ngrok).
The application lets you set the model API base URL, tune generation parameters, edit the system prompt per conversation, and chat with streaming replies. Reasoning (thinking) is stored and shown separately from the answer and is never sent back into the model history. Response stats such as prompt/output tokens, tokens per second, and time-to-first-token are displayed under each assistant message.
Logged-in users persist conversations and prompts in the database (PostgreSQL in production / Sail; SQLite is fine for a quick local start). Guests can use the full chat experience with browser-local persistence only — their conversations are never written to server conversation tables.
The application can attach images when the upstream model supports vision. It also integrates HTTP MCP servers so the model can discover and call external tools (for example search or GitHub helpers) during a reply. Tool-call rounds stay visible in the transcript, while prior tool payloads are omitted from later prompt history to keep small local context windows usable.
Markdown replies are rendered on the frontend with Marked and sanitized with DOMPurify. Toast notifications use Vue Toastification.
A live instance is available at https://chat.michal-komsa.xyz. You can try the chat there with your own OpenAI-compatible API base URL (for example a tunnel to a local LM Studio /v1 endpoint).
- PHP 8.4
- Laravel 13.23.0
- Inertia.js (Laravel) 2.0.24
- Laravel Jetstream 5.5.3
- Laravel Fortify 1.37.3
- Laravel MCP 0.9.1
- Sail 1.64.0
- Vue 3.5.40
- Inertia.js (Vue) 2.3.27
- Tailwind CSS 3.4.19
- Marked 18.0.9
- isomorphic-dompurify 3.19.0
- Vue Toastification 2.0.0-rc.5
For running the application you need:
- PHP 8.3+ (8.4 recommended)
- Composer
- Node.js and npm
- PostgreSQL (or SQLite for the simplest local setup)
Or only:
- Docker (Laravel Sail)
You also need a reachable OpenAI-compatible chat API (for example LM Studio on your machine, optionally behind a tunnel).
- Execute command
git clone https://github.com/Ilvondir/llms-interface. - Copy
.env.exampleto.envand setAPP_KEY(or let setup generate it). - Install and prepare the app:
composer setupThis installs PHP/JS dependencies, creates .env if missing, generates the key, runs migrations, and builds frontend assets.
- Start the local stack:
composer run devThis runs the PHP server, queue worker, log viewer, and Vite together.
- Open the app URL from
.env(APP_URL, usuallyhttp://localhost). - Point the sidebar API URL at your model endpoint (for example an ngrok URL ending with
/v1), pick a model, and start chatting. Register an account if you want server-side conversation history; otherwise use guest mode.
You can also run this app on Docker containers using Laravel Sail (PostgreSQL included):
./vendor/bin/sail up -d
./vendor/bin/sail artisan migrate
./vendor/bin/sail npm install
./vendor/bin/sail npm run devOptional demo user from the default seeder (php artisan db:seed):
| Account | Password | |
|---|---|---|
| Test User | test@example.com | password |

