neuralgentics-web
A modular web UI shell with a Grafana-style plugin manifest system. FastAPI + htmx + Jinja2. Optional auth (JWT, OAuth2, OIDC). Optional database (Postgres in team-server mode). Zero required dependencies on anything else.
pip install neuralgentics-web gives you a neuralgentics-web command.
What it is
neuralgentics-web is a FastAPI application that discovers modules at
startup. Each module is a directory with a module.yaml manifest and (for
full modules) Python route handlers.
Three modules ship in the box:
gateway-audit— read-only live audit table + charts for theneuralgentics-gatewayegress proxybroker-audit— read-only live audit table + stats for theneuralgentics-brokerMCP tool-call brokermemini-browser— search, view, and adjust the trust of memories inmemini-ai
You can use any of these without the others. You can write your own modules against any backend you have.
What this is NOT
- Not a memory store. (Use memini-ai for that.)
- Not a proxy. (Use neuralgentics-gateway for that.)
- Not an MCP broker. (See neuralgentics-broker for that.)
These three products can be used together, but each is independent.
Install
pip install neuralgentics-web
Optional extras:
pip install neuralgentics-web[team-server] # adds asyncpg for Postgres
pip install neuralgentics-web[dev] # adds pytest, ruff, mypy
Quickstart
# Embedded mode — localhost only, no auth, no DB, no nothing.
neuralgentics-web --mode=embedded --port=9876
# Open http://localhost:9876 in a browser.
The shell loads every directory under ./modules/ (or wherever
--modules-path points) that contains a module.yaml. Shipped modules are
auto-discovered from the package data.
Team-server mode
neuralgentics-web --mode=team-server \
--host=0.0.0.0 --port=9877 \
--db-url=postgres://user:pass@host:5432/dbname
- Listens on
--host:--port(default0.0.0.0:9877) - Persists users, OIDC tokens, and any module that opts into PG storage
- Exposes a
/healthendpoint for load balancers
Auth (optional)
# JWT only (HS256) — username/password against the local SQLite user store
neuralgentics-web --auth=jwt --jwt-secret=$(openssl rand -hex 32)
# OAuth2 stub — replace with OIDC for real providers
neuralgentics-web --auth=oauth2
# OIDC — GitHub
neuralgentics-web --auth=oauth2 \
--oidc-github-client-id=$GITHUB_CLIENT_ID \
--oidc-github-client-secret=$GITHUB_CLIENT_SECRET \
--oidc-redirect-base=https://your-host
# OIDC — Google
neuralgentics-web --auth=oauth2 \
--oidc-google-client-id=$GOOGLE_CLIENT_ID \
--oidc-google-client-secret=$GOOGLE_CLIENT_SECRET
# OIDC — generic (Okta, Auth0, Keycloak, etc.)
neuralgentics-web --auth=oauth2 \
--oidc-generic-discovery-url=okta=https://your-tenant.okta.com/.well-known/openid-configuration \
--oidc-generic-client-id=okta=$CLIENT_ID \
--oidc-generic-client-secret=okta=$CLIENT_SECRET
Default users (seeded on first run with a loud warning):
admin / admin— full accessoperator / operator— read + writeviewer / viewer— read only
Change these in production. The CLI flag --auth=off bypasses auth
entirely (only safe in embedded mode, which binds to localhost).
RBAC
Three roles: admin, operator, viewer. Default role for new OIDC users
is --oidc-default-role (default viewer).
For per-module overrides, add a rbac: block to the module's module.yaml:
name: my-module
version: 0.1.0
rbac:
actions:
read: [viewer, operator, admin]
write: [operator, admin]
delete: [admin]
Writing your own module
# modules/my-module/module.yaml
name: my-module
version: 0.1.0
description: My custom module
# modules/my-module/module.py
from fastapi import APIRouter
def build_router() -> APIRouter:
router = APIRouter()
@router.get("/hello")
async def hello() -> dict:
return {"hello": "world"}
return router
Drop modules/my-module/ into your --modules-path and reload.
For live reload, see docs/HOT_RELOAD.md.
Optional integration with the neuralgentics ecosystem
If you also use neuralgentics-gateway and/or neuralgentics-broker, this
package can display their audit data:
- The
gateway-auditmodule reads the gateway'saudit_eventsPostgres table. Set--db-urlto the same database the gateway writes to. - The
broker-auditmodule reads the broker's~/.neuralgentics/broker_audit.jsonlfile (or its Postgresbroker_audit_logtable).
Each module works independently — you can use one without the other.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neuralgentics_web-0.15.0.tar.gz.
File metadata
- Download URL: neuralgentics_web-0.15.0.tar.gz
- Upload date:
- Size: 420.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
678d9af7f68c9a2c96086d8059814ab5b2f13221817366afee9f454ddec5dc14
|
|
| MD5 |
59236de8b0103b3101e4ad7d78c270fc
|
|
| BLAKE2b-256 |
d585da7891e60708da330acbbdead01eeaf022bfefda491bcbde7757bbfb3cc0
|
Provenance
The following attestation bundles were made for neuralgentics_web-0.15.0.tar.gz:
Publisher:
publish-pypi.yml on Veedubin/neuralgentics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
neuralgentics_web-0.15.0.tar.gz -
Subject digest:
678d9af7f68c9a2c96086d8059814ab5b2f13221817366afee9f454ddec5dc14 - Sigstore transparency entry: 2211120652
- Sigstore integration time:
-
Permalink:
Veedubin/neuralgentics@e4c740279aa99dddc05de7bd8061517110e499a5 -
Branch / Tag:
refs/tags/web-v0.15.0 - Owner: https://github.com/Veedubin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e4c740279aa99dddc05de7bd8061517110e499a5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file neuralgentics_web-0.15.0-py3-none-any.whl.
File metadata
- Download URL: neuralgentics_web-0.15.0-py3-none-any.whl
- Upload date:
- Size: 385.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2fe64d92d5e91a644a07b7a1bdae7058745792e76d93a5f748a0e69bc96f2dd
|
|
| MD5 |
db8856e5aecf67c7108947f18b20bffa
|
|
| BLAKE2b-256 |
29a11c050722cfa62c73d281d21fb4b332d2ed604ba1d7cbbfe27eb8e64c321f
|
Provenance
The following attestation bundles were made for neuralgentics_web-0.15.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on Veedubin/neuralgentics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
neuralgentics_web-0.15.0-py3-none-any.whl -
Subject digest:
a2fe64d92d5e91a644a07b7a1bdae7058745792e76d93a5f748a0e69bc96f2dd - Sigstore transparency entry: 2211120684
- Sigstore integration time:
-
Permalink:
Veedubin/neuralgentics@e4c740279aa99dddc05de7bd8061517110e499a5 -
Branch / Tag:
refs/tags/web-v0.15.0 - Owner: https://github.com/Veedubin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e4c740279aa99dddc05de7bd8061517110e499a5 -
Trigger Event:
push
-
Statement type: