journali-advisor

journali-advisor

Docker app from journali's Repository

Overview

The service of a journali product advisor: the chat window for a website and MCP for AI agents. It asks journali through its API with the token of the advisor and needs no database of its own. Runs from the journali image; set up the advisor in journali first (Export, Product advisor) and issue a token there.

journali PIM

Product data from a journal. Every change is an entry, every view of the data is derived from it.

(PIM, MDM, data store per channel) · Website: journali.de · Demo: try journali · Articles: journali.de/category/entwicklung · Deutsch: README.de.md

Test version

This software is under development (alpha/beta) and is provided solely for testing and evaluation purposes. It is expressly not suitable for production use or critical system environments.

Use is at your own risk. The descriptions on journali.de refer to the production release.

Idea

A PIM is not hard because of trees and attributes, but because of the axes — language × channel × variant × rights — that multiply every function, because of the history every write path has to maintain, and because of the interfaces to the outside that are never finished.

journali answers all three with one mechanism: the journal is the single source of truth, everything else is derived from it. History is the journal itself, a delta export is "everything since number N", and a broken view is rebuilt instead of repaired.

In detail (German): docs/architektur.md.

Installation

On Unraid there are templates under unraid/ (journali, its database journali-db, and journali-advisor). Otherwise Docker with Compose is required. The image is ghcr.io/journalipim/journali, the database is PostgreSQL 18 from compose.yaml.

git clone https://github.com/journalipim/journali.git
cd journali
docker compose pull
docker compose up -d

Then open http://localhost:8080; the first visit creates the administrator. Plugins are a bind mount under plugins/, jobs and media are in volumes. New version: docker compose pull && docker compose up -d. To build the image yourself: docker compose up --build -d. Environment, storage, backup and licence are described in docs/betrieb.md (German); the help inside the instance explains how to use it (? at the top right), in German and English.

Source and contributions

Copyright (C) 2026 Taloan. journali is free software under the GNU Affero General Public License, version 3 (LICENSE): you may use, modify and distribute it; whoever distributes a modified version or offers it as a network service gives its users the source code under the same licence. Other licence terms are available on request. Pull requests are not accepted and are closed automatically (CONTRIBUTING.md). Extensions are plugins (docs/plugins-zertifizierung.md); the journali seal and catalogue cover journali's own plugins only. Report a vulnerability confidentially (SECURITY.md); serious known bugs are listed in BEKANNTE-FEHLER.md.

"journali PIM" is a trademark filed with the German Patent and Trade Mark Office (DPMA). The licence grants no rights in it: a modified or derived version may not be distributed or offered under this name.

Structure

Project Purpose
Journali.Core journal, entries, derived views — net8.0, no dependencies
Journali.Sandbox console: fill a journal, build a view, print it
Journali.Server ASP.NET Core: journal in PostgreSQL 18, product view, commands under /api — docs/betrieb.md, docs/eintraege.md
web user interface, Vue 3 + Vite; built into Journali.Server/wwwroot
plugins one plugin per directory: import and export, data quality, jobs, product advisor and more

journali is only shipped as a package: Dockerfile and compose.yaml bring server and database together, see Installation above. Running from source is development and is described in docs/betrieb.md under "Entwickeln auf dem PC". The documentation in docs/ is German.

Requirements

journali: the app whose advisor this service answers, with the same repository

Related apps

Details

Repository
ghcr.io/journalipim/journali:latest
Last Updated2026-10-23
First Seen2026-10-23

Runtime arguments

Web UI
http://[IP]:[PORT:8090]/health
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped --entrypoint node

Template configuration

ServicePorttcp

Port of the service; the reverse proxy forwards the public address here

Target
8090
Default
8090
Value
8090
DataPathrw

What the advisor learns (lernen.json) and optionally the token as a file

Target
/daten
Default
/mnt/user/appdata/journali-advisor
Value
/mnt/user/appdata/journali-advisor
JOURNALIVariable

Address of journali as this container reaches it: the address of the Unraid server in the network and the port of the app journali

Default
http://SERVER:8080
Value
http://SERVER:8080
JOURNALI_ADVISORVariable

Key of the advisor in journali

Default
shop
Value
shop
JOURNALI_ADVISOR_TOKENVariable

Token of the advisor (ja_...); empty if JOURNALI_ADVISOR_TOKEN_FILE is set

JOURNALI_ADVISOR_TOKEN_FILEVariable

Instead of the field: path of a file with the token, e.g. /daten/token

JOURNALI_ADVISOR_DATAVariable

Directory for what the advisor learns, matching the path Data; empty: memory only

Default
/daten
Value
/daten
JOURNALI_PROXYVariable

1 behind a reverse proxy: the visitor address comes from X-Forwarded-For; otherwise all visitors count as one

Default
1
Value
1
TZVariable

Time zone of the container

Default
Europe/Berlin
Value
Europe/Berlin