Ir al contenido

Configuración

Hay dos sitios donde se configura Organtia y conviene no confundirlos:

  • La vista Configuración, dentro de la oficina: la empresa entera. Tiene ocho pestañas y reúne lo que se ajusta una vez —el CEO, las personas, los puestos, los modelos y los automatismos—. Los cambios se aplican en el mensaje siguiente.
  • El .env de la instalación: define el modelo, la identidad, la base de datos y el acceso. Los cambios exigen recrear el contenedor.

Se abre desde el pie del menú lateral, con el icono de engranaje y la etiqueta Configuración. Solo la ve quien administra: a un miembro no se le ofrece un botón que el servidor va a responder con un 403.

Antes este nombre lo llevaba un diálogo que solo contenía la ficha del CEO, así que quien pulsaba buscando usuarios o proveedores se encontraba el prompt de Adrián y ninguna de las otras cosas. Ahora esas piezas viven aquí dentro, en pestañas, en vez de estar sueltas en el menú mezcladas con el trabajo del día a día:

Pestaña Qué se hace
Empresa El nombre, la razón social, el nombre del CEO, el CIF, la dirección y el registro mercantil.
El CEO Sus instrucciones, y en lectura el modelo, la temperatura, el tope de respuesta y los turnos que recuerda.
Personas Quién entra, con qué rol y con qué puesto.
Puestos Los oficios: qué sabe hacer cada puesto antes de que nadie lo programe.
Modelos y proveedores Con qué proveedor habla cada puesto y con qué modelo.
Aplicaciones Los conectores: qué servicios externos puede usar el equipo.
Crones El trabajo que se repite, con su horario.
Navegador Lo que están viendo los puestos en internet, en vivo.

Las vistas sueltas siguen existiendo para los enlaces directos (?vista=personas, ?vista=modelos…): mover un botón no puede romper una dirección que alguien tenga guardada.

El modelo y sus parámetros se editan en el .env, no aquí. El modelo por puesto se asigna en la pestaña Modelos y proveedores; esta ficha solo muestra el del CEO.

Dato De dónde sale Se puede cambiar aquí
Modelo MODEL_ID No
Temperatura MODEL_TEMPERATURE No
Tope de respuesta MODEL_MAX_TOKENS (tokens por respuesta) No
Turnos que recuerda HISTORY_RUNS (intercambios que se releen en cada llamada) No
Proyecto en curso El proyecto activo de la sesión, o «general, sin proyecto» No
Sus instrucciones Tabla organtia.instrucciones, clave adrian Sí

Es el bloque de texto que define cómo trabaja Adrián. Se guarda entero en organtia.instrucciones y se relee en cada turno, así que el cambio afecta al mensaje siguiente, no a la conversación ya empezada.

Límites que aplica el servidor al guardar:

Comprobación Respuesta si falla
Menos de 200 caracteres (sin contar espacios sobrantes) «demasiado corto: se quedaría sin instrucciones»
Más de 400.000 caracteres «demasiado largo»

Al guardar, el aviso confirma: «Guardado. N caracteres. Se aplica en tu próximo mensaje.», donde N es la longitud real del texto.

Bajo el editor hay una nota con dos datos: si ahora mismo usa una versión tuya o la de fábrica, y cuál es el proyecto en curso.

El texto puede llevar estos huecos y el sistema los sustituye al construir el prompt del turno:

Marcador Se sustituye por
{propietario} OWNER_NAME
{empresa} EMPRESA (nombre de la empresa de la instalación)
{ceo} CEO_NOMBRE
{estado} La situación consolidada: proyecto, pendientes, decisiones vigentes y lo último registrado

Si borras {estado} del texto, la situación se añade igualmente al final: el CEO no puede quedarse sin saber dónde está. La sustitución es literal, no con format, así que unas llaves sueltas no rompen el turno.

El botón «Restaurar el original» pide confirmación: el primer clic lo convierte en «¿Seguro? Pulsa otra vez» durante cuatro segundos, y el segundo restaura el texto de fábrica (el que vive en el código, en prompts.py). Después avisa: «Instrucciones originales restauradas».

Cada guardado y cada restauración dejan una fila en la auditoría con herramienta = ui:instrucciones y actor = propietario.

Todas se leen del entorno del proceso. Cambiar cualquiera exige recrear el servicio:

Ventana de terminal
docker compose up -d --force-recreate api
Variable Por defecto Qué hace Si la cambias
CLIENTE organtia Nombre del despliegue: prefija contenedores, volúmenes y red. Cambia los nombres de los contenedores; hay que recrear el stack. No toca los datos.
MARCA Organtia Nombre del producto. Aparece en la pestaña, en la puerta y en el panel. Reetiqueta la instalación. No afecta al funcionamiento.
EMPRESA vacío Solo la semilla: el nombre que se propone la primera vez que se abre la pestaña Empresa. Vacío = instalación de desarrollo. A partir de ahí manda la tabla; cambiar esto ya no cambia nada.
CEO_NOMBRE Adrián Solo la semilla del nombre del CEO. Igual: después manda la pestaña Empresa.
LEGAL Data Lean Makers, S.L. Solo la semilla de la razón social. Igual: después manda la pestaña Empresa.

Los datos de la empresa ya no se tocan en el .env. El nombre, la razón social, el nombre del CEO y los datos legales se escriben en Configuración › Empresa y se guardan en organtia.empresa. Las variables de arriba solo rellenan el formulario la primera vez, para que una instalación que ya estaba en marcha no amanezca en blanco. Un cambio guardado desde la interfaz se ve al instante en el título y en las páginas HTML, sin recrear el contenedor. | OWNER_NAME | Pedro | Nombre con el que el CEO se refiere al propietario. | Cambia el trato en las respuestas y el valor de actor en la auditoría. |

Variable Por defecto Qué hace Si la cambias
DB_HOST db Host de PostgreSQL. Si no resuelve, la API no arranca.
DB_PORT 5432 Puerto de PostgreSQL. Tiene que coincidir con el del contenedor db.
DB_NAME organtia Nombre de la base de datos. Apunta a otra base; con una vacía, el esquema se crea al arrancar.
POSTGRES_USER organtia_admin Rol administrador: solo lo usan las migraciones. Cambiar de rol obliga a que exista en PostgreSQL.
POSTGRES_PASSWORD obligatoria Contraseña del rol administrador. Sin ella, la API no arranca: «Falta la variable de entorno obligatoria».
APP_DB_USER organtia_app Rol de la aplicación, con privilegios mínimos. Ídem: el rol debe existir y tener permisos sobre el esquema.
APP_DB_PASSWORD obligatoria Contraseña del rol de la aplicación. Sin ella, la API no arranca.

Los dos roles existen a propósito: la aplicación no puede alterar la auditoría ni cambiar el esquema, porque no tiene permisos para ello.

Variable Por defecto Qué hace Si la cambias
MODEL_ID deepseek-v4.1-flash:1017 Modelo que usa el CEO (y los puestos sin modelo propio). Cambia el motor de todos los turnos. Debe existir en el endpoint.
MODEL_BASE_URL https://ollama.com/v1 Endpoint compatible con la API de OpenAI. Apunta a otro proveedor; la clave tiene que ser la suya.
MODEL_API_KEY obligatoria Clave del proveedor. Sin ella, la API no arranca. No se muestra en ningún sitio.
MODEL_TEMPERATURE 0.4 Creatividad de las respuestas. Más alto, respuestas más sueltas; más bajo, más repetitivas.
MODEL_MAX_TOKENS 16000 en el código Tope de tokens de una respuesta. El .env.example trae 32000. Bajarlo recorta respuestas largas; subirlo gasta más y puede tardar más.
HISTORY_RUNS 2 en el código Intercambios previos que se releen en cada llamada. Es el «Turnos que recuerda» de la pestaña del CEO. El .env.example trae 8. Subirlo mucho infla el prompt y ralentiza el turno.
HISTORIAL_TURNOS 8 Se lee al arrancar, pero hoy no lo usa nadie. Ninguno. El valor efectivo es HISTORY_RUNS.
TURNO_ESPERA 120 Segundos que se espera al modelo sin recibir nada antes de avisar y salir del turno. Con valores bajos se cortan turnos lentos; con valores altos, una caída tarda en notarse.

Si cambias de modelo, la referencia práctica es: una línea en .env, recrear api y comprobar con una conversación corta. Los modelos probados con herramientas en español son deepseek-v4.1-flash:1017 y gpt-5.4-mini.

Variable Por defecto Qué hace Si la cambias
ACCESO_CLAVE obligatoria (32+ caracteres) Clave con la que se firman las cookies de sesión. Sin ella o con menos de 32 caracteres, la puerta no deja entrar a nadie. Al cambiarla, se invalidan todas las sesiones abiertas.
ACCESO_DIAS 7 Días de validez de la cookie de sesión. Se admite de 1 a 90; fuera de rango, se queda en 7.

Detalle en /docs/administracion/usuarios/.

Variable Por defecto Qué hace Si la cambias
ORGANTIA_SECRET_KEY vacío Clave maestra con la que se cifran las claves de proveedores y conectores antes de guardarlas en PostgreSQL. Si no se define, se genera sola un fichero en el volumen. Si la pierdes, las claves cifradas dejan de poder leerse y hay que reintroducirlas.
ORGANTIA_SECRET_FILE /app/archivos/.organtia_secret Ruta de ese fichero cuando no hay variable de entorno. Apunta a otro sitio; si el volumen no persiste, la clave se regenera en cada arranque y lo cifrado antes queda ilegible.
ORGANTIA_URL_PUBLICA https://demo.organtia.ovlicuo.com Dirección pública de la oficina. Se usa para construir la vuelta del OAuth2 de los conectores. Tiene que coincidir con el «redirect URI» registrado en cada proveedor, o el OAuth falla.
INTERNAL_SERVICE_TOKEN obligatoria Token con el que el reloj de los crones llama a la API sin nadie detrás. Sin ella, la API arranca pero los crones no se ejecutan, y lo dice el log.
SCHEDULER_BASE_URL http://127.0.0.1:8000 Puerto interno del planificador de Agno. Cambia a dónde llama el reloj; es interno del contenedor, no el del host.
PANEL_TOKEN vacío Token del panel de autorizaciones antiguo. Vacío = el panel no se sirve (responde 503). El .env.example lo da por retirado: las aprobaciones se hacen en la oficina.
OFICINA_PIXEL_URL vacío Dirección del visor pixel-art. Vacío = no se pinta la sala; el trabajo sigue igual.
OFICINA_PIXEL_TOKEN vacío Token de ese visor. Solo hace falta si el visor lo exige.
Variable Por defecto Qué hace Si la cambias
TZ Europe/Madrid Zona horaria del contenedor. Afecta a las fechas mostradas y al corte de mes del presupuesto.
ORGANTIA_DEBUG 0 Con 1 (o true, si, yes, on), saca trazas detalladas de herramientas y errores en la consola. Más ruido en los logs, útil para diagnosticar.
API_PORT 18011 Puerto del host al que se publica la API. Escucha solo en 127.0.0.1. Si lo cambias, hay que ajustar el reverse_proxy de Caddy.
WEB_DIR /app/web Carpeta desde la que se sirve la interfaz compilada y las imágenes de la puerta. Si no contiene index.html, la oficina no carga.
NAVEGADOR_CDP vacío Endpoint de un navegador ya abierto, para depurar la habilidad web. Vacío = el propio servicio lanza su Chromium con el perfil del puesto.
Mensaje Causa
«Falta la variable de entorno obligatoria: X» Falta una de las obligatorias: POSTGRES_PASSWORD, APP_DB_PASSWORD, MODEL_API_KEY o INTERNAL_SERVICE_TOKEN. El proceso no arranca y dice cuál.
«MODEL_MAX_TOKENS debe ser un número entero» Valor no numérico en una variable entera.
«MODEL_TEMPERATURE debe ser un número decimal» Valor no numérico en una variable decimal.
La puerta da 500 y no muestra formulario ACCESO_CLAVE vacía o corta. No impide arrancar: falla al entrar.
«Panel desactivado: define PANEL_TOKEN en .env y reinicia la API» Alguien abrió /panel/ sin token configurado.
  • El nombre y los datos legales de la empresa: en Configuración › Empresa (ya no en el .env).
  • El modelo de cada puesto: en Configuración › Modelos y proveedores.
  • El presupuesto de tokens: en la ficha del puesto y en Departamentos.
  • Las rutas que el CEO puede leer: en la tabla organtia.accesos, concedidas hablando con él y registradas con la instrucción del propietario.
  • Los crones: en Configuración › Crones, con aprobación de dirección.