www-apps/hollama - 0.35.4 (stuff)

Search

Install

Install this version:

emerge -a =www-apps/hollama-0.35.4

If this version is masked, you can unmask it using the autounmask tool or standard emerge options:

autounmask =www-apps/hollama-0.35.4

Or alternatively:

emerge --autounmask-write -a =www-apps/hollama-0.35.4

Package Information

Description:
Minimal LLM chat UI — SvelteKit + Node, browser-local state
Homepage:
https://github.com/fmaclen/hollama
License:
MIT

Ebuild Details

Version EAPI Keywords Slot
0.35.4 8 ~amd64 0
View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit systemd

DESCRIPTION="Minimal LLM chat UI — SvelteKit + Node, browser-local state"
HOMEPAGE="
	https://github.com/fmaclen/hollama
"

SRC_URI="
	https://github.com/fmaclen/hollama/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"

# Self-contained SvelteKit Node bundle — `npm run build` with the
# docker-node adapter emits build/index.js plus a fully self-contained
# build/ tree. No node_modules needed at runtime, so RDEPEND only
# pulls nodejs for the interpreter.
RDEPEND="
	>=net-libs/nodejs-20
"
BDEPEND="
	>=net-libs/nodejs-20[npm]
"

# npm fetches several hundred packages (SvelteKit + Vite + Tailwind +
# Playwright + svelte-check + ...) from the npm registry at build time.
# Vendoring node_modules into extra-stuff would balloon to ~500MB+ and
# bit-rots on every upstream bump; lifting the sandbox is the same
# pragmatic call sci-misc/llama-cpp + sci-misc/llama-swap[ui] already
# make for their webuis.
PROPERTIES="live"
RESTRICT="network-sandbox"

src_compile() {
	einfo "Installing npm dependencies (downloads from registry.npmjs.org)..."
	npm ci --no-audit --no-fund \
		|| die "npm ci failed"

	einfo "Building SvelteKit Node bundle..."
	PUBLIC_ADAPTER=docker-node npm run build \
		|| die "vite build failed"

	[[ -f build/index.js ]] \
		|| die "expected build/index.js after npm run build"
}

src_install() {
	# Self-contained SvelteKit Node bundle goes under /opt to keep the
	# 24 MB tree out of /usr/share; the wrapper at /usr/bin/hollama is
	# the only thing in $PATH.
	insinto /opt/hollama
	doins -r build

	newbin "${FILESDIR}"/hollama.bin hollama

	# systemd + openrc service management; defaults in /etc/conf.d
	# (shared by both, though systemd ignores HOLLAMA_USER and uses
	# DynamicUser=yes for stateless isolation).
	systemd_dounit "${FILESDIR}"/hollama.service
	newinitd "${FILESDIR}"/hollama.initd hollama
	newconfd "${FILESDIR}"/hollama.confd hollama

	dodoc README.md SELF_HOSTING.md
}

pkg_postinst() {
	elog ""
	elog "Hollama ${PV} installed to /opt/hollama, served by /usr/bin/hollama."
	elog ""
	elog "Quick start (foreground):"
	elog "  hollama"
	elog "  # then visit http://127.0.0.1:4173"
	elog ""
	elog "As a service:"
	elog "  systemd:  systemctl enable --now hollama"
	elog "  openrc:   rc-service hollama start && rc-update add hollama"
	elog ""
	elog "Defaults in /etc/conf.d/hollama (HOLLAMA_HOST defaults to"
	elog "127.0.0.1 — set to 0.0.0.0 to expose on the LAN). Hollama has"
	elog "no built-in auth; chat state is stored in your browser's"
	elog "localStorage so no server-side data leaks, but anyone with"
	elog "network reach could drive your local LLM through it."
	elog ""
	elog "Backends: any OpenAI-compatible HTTP endpoint plus Ollama"
	elog "natively. Pairs with sci-misc/llama-cpp, sci-misc/llama-swap,"
	elog "dev-python/vllm, sci-ml/lemonade."
}

Inherited Eclasses

Dependencies

RDEPEND

	>=net-libs/nodejs-20

BDEPEND

	>=net-libs/nodejs-20[npm]

Manifest for 0.35.4

Type File Size Source URLs
DIST hollama-0.35.4.tar.gz 5118378 bytes https://github.com/fmaclen/hollama/archive/refs/tags/0.35.4.tar.gz