Files
1b-agent 93a5a0a221 Initial commit: one_os_compositor Odoo 20 addon — core OWL library + backend models + JWT auth
Includes:
- compositor.app, compositor.session, compositor.session.app, compositor.audit.log models
- /web/compositor/{token,apps,launch,audit} HTTP controllers with JWT (HS256)
- CompositorService OWL service (reusable via useService('compositor'))
- CompositorCanvas OWL component (reusable canvas wrapper)
- Security: compositor_group_user, compositor_group_manager groups + ir.access.csv rules
- 5 demo apps pre-loaded (gnome-calculator, xterm, gtk4-demo, glxgears, featherpad)
- Audit log capturing JWT issuance + app launch events
- Stub mode: launching apps returns a stub SurfaceHandle when proxy isn't connected
- Tested against Odoo 20 + PostgreSQL 17

Author: 1bspace.com
Parent company: 1B Global
License: Proprietary (1B Space internal use)
2026-10-08 08:48:46 +00:00

40 lines
1.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Default compositor config parameters -->
<record id="config_param_proxy_url" model="ir.config_parameter">
<field name="key">compositor.proxy_url</field>
<field name="value">http://localhost:8081</field>
</record>
<record id="config_param_encoder" model="ir.config_parameter">
<field name="key">compositor.encoder</field>
<field name="value">vaapih264</field>
</record>
<record id="config_param_render_device" model="ir.config_parameter">
<field name="key">compositor.render_device</field>
<field name="value">/dev/dri/renderD128</field>
</record>
<!-- JWT secret is auto-generated in post_init_hook, but we set a
dev placeholder here so the addon works out of the box. -->
<record id="config_param_jwt_secret_dev" model="ir.config_parameter">
<field name="key">compositor.jwt_secret</field>
<field name="value">dev-secret-change-in-production-1bspace-compositor</field>
</record>
<!-- Session timeout (10 minutes, matches Greenfield's SIGHUP grace) -->
<record id="config_param_session_timeout_seconds" model="ir.config_parameter">
<field name="key">compositor.session_timeout_seconds</field>
<field name="value">600</field>
</record>
<!-- App kill timer escalation (10s SIGTERM → SIGKILL) -->
<record id="config_param_kill_escalation_seconds" model="ir.config_parameter">
<field name="key">compositor.kill_escalation_seconds</field>
<field name="value">10</field>
</record>
</data>
</odoo>