Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ updates:
directories: ["/backend", "/deploy"]
schedule:
interval: monthly
ignore:
# Caddy 2.11 cancels proxied requests after 60 s; see deploy/lb.Dockerfile
- dependency-name: caddy
versions: [">= 2.11"]

- package-ecosystem: docker-compose
directories: ["/", "/deploy"]
Expand Down
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ Notable changes to Knowledge Hubs. The format follows [Keep a Changelog](https:/
- Backend dependencies upgraded to current releases, including FastAPI 0.142 (Starlette 1.7), Pydantic 2.13, sentence-transformers 6, NumPy 2 and Celery 5.6.
- JWTs are handled by PyJWT instead of python-jose, and passwords by `bcrypt` directly instead of passlib. Existing password hashes and sessions keep working.
- Tokens without an expiry are refused.
- Docker base images: Caddy 2.11, Node 22.
- Docker base images: Caddy 2.10, Node 22.

### Fixed
- Reloading a page whose path is also an API path (such as `/knowledge`) made the app show "Failed to load knowledge": the browser reused the cached page for the app's data request. The web server now sends `Vary: Accept`.

### Removed
- Unused dependencies: `openai`, `tiktoken`, `aiofiles`, `python-jose`, `passlib`.
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@

A **local-first knowledge base** for teams. It turns meeting notes, retros, decision logs, documents, web pages and transcripts into structured knowledge (decisions, risks, lessons, how-tos) that you can review, search, track over time and question in plain English.

![GraphRAG answering "What do we use for domain events now, and why did it change?" with citations, and flagging the superseded Kafka decision](docs/images/graphrag.png)

<table>
<tr>
<td width="50%"><img src="docs/images/decisions.png" alt="Decision log: each decision's status, tags, and the older decision it supersedes or amends"></td>
<td width="50%"><img src="docs/images/review.png" alt="Review queue: extracted items waiting to be accepted, edited or rejected"></td>
</tr>
<tr>
<td align="center"><b>Decision log</b>: status, history and what replaced what</td>
<td align="center"><b>Review queue</b>: nothing reaches GraphRAG until someone accepts it</td>
</tr>
</table>

<sub>Screenshots use fictional demo data.</sub>

- **Runs on your machine.** FastAPI backend, Angular frontend, **ArcadeDB** as the only data store, and local AI: one of three LLMs run by [Ollama](docs/local-models.md) plus sentence-transformers embeddings. There are no cloud AI providers.
- **Personal and group spaces.** Everyone has a private space and can create or join groups that share one. A switcher in the nav picks where you're working.
- **Decisions have a history.** A decision can supersede, reverse or amend an older one, and risks can be mitigated or actually happen. The app tracks each item's status and shows how it evolved.
Expand Down
4 changes: 4 additions & 0 deletions deploy/Caddyfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@

# Some API prefixes are also app routes (/knowledge, /connectors, /groups,
# /admin/users): a browser page load (GET accepting HTML) gets the app.
# Vary: Accept keeps the browser from answering the app's own API request
# for such a path with the page it cached on a reload, and vice versa.
@shared path /knowledge* /connectors* /groups* /admin*
header @shared Vary Accept
@page {
method GET
header Accept *text/html*
Expand Down
4 changes: 3 additions & 1 deletion deploy/lb.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ RUN npm ci
COPY frontend/ ./
RUN npx ng build --configuration production

FROM caddy:2.11-alpine
# 2.10, not 2.11: Caddy 2.11 cancels proxied requests after 60 s (499), which
# breaks GraphRAG answers that take longer on a CPU-only machine
FROM caddy:2.10-alpine
COPY --from=frontend /src/dist/frontend/browser /srv
COPY deploy/Caddyfile /etc/caddy/Caddyfile
Binary file added docs/images/decisions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/graphrag.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/review.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading