{
  "company": {
    "name": "App License Store",
    "description": "Buy licences for IT Resources, the self-hosted monitoring, service-desk and operations platform for IT service providers.",
    "about": "App License Store sells licences for professional software built for IT service providers, telecom teams, restaurants and field-service companies. The catalogue: IT Resources – a monitoring, service-desk and operations platform for IT service providers, as a self-hosted licence or a hosted plan. FreePBX modules – AI Agent (conversational voice agents), Asterisk Reporting (call reports and live supervision), Dialplan Map (the call flow as a live diagram), Power Usage, and NVR Attendance (face-recognition attendance from IP cameras). Universal Ordering Platform – restaurant POS, kitchen display, online orders, delivery and back office, self-hosted or hosted. ServiceMan – technician orders, dispatch, live tracking, invoices and support for field-service companies. Everything is delivered digitally. IT Resources, Universal Ordering Platform and ServiceMan have free live demos, linked from their category pages. More applications will be added as they are released. Questions before you buy? Use the contact form and we will get back to you.",
    "catalogue_url": "https://techsmix.pages.dev/",
    "shop_url": "https://techsmix.rf.gd/",
    "contact": {
      "form": "https://techsmix.rf.gd/index.php?route=information/contact"
    },
    "currency": "USD",
    "language": "en"
  },
  "updated": "2026-11-04",
  "count": 8,
  "categories": [
    {
      "name": "Monitoring & IT Operations",
      "url": "https://techsmix.pages.dev/categories/monitoring-it-operations/",
      "shop_url": "https://techsmix.rf.gd/en-gb/catalog/monitoring-it-operations"
    },
    {
      "name": "VoIP & Telephony",
      "url": "https://techsmix.pages.dev/categories/voip-telephony/",
      "shop_url": "https://techsmix.rf.gd/en-gb/catalog/voip-telephony"
    },
    {
      "name": "Restaurants",
      "url": "https://techsmix.pages.dev/categories/restaurants/",
      "shop_url": "https://techsmix.rf.gd/en-gb/catalog/restaurants"
    },
    {
      "name": "Field Service",
      "url": "https://techsmix.pages.dev/categories/field-service/",
      "shop_url": "https://techsmix.rf.gd/en-gb/catalog/field-service"
    }
  ],
  "items": [
    {
      "id": "it-resources",
      "sku": "ITR",
      "type": "product",
      "name": "IT Resources",
      "tagline": "Monitoring, Service Desk & Operations Platform",
      "summary": "Monitor firewalls, routers, servers, internet lines, VPNs and VOIP systems, alert the on-call engineer and run tickets, backups, a password safe and client billing from one self-hosted platform.",
      "category": "Monitoring & IT Operations",
      "url": "https://techsmix.pages.dev/products/it-resources/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/it-resources",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 1999.0,
        "low": 1999.0,
        "high": 1999.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [
          {
            "min_quantity": 2,
            "percent_off": 25.0,
            "unit_price": 1499.25
          }
        ],
        "terms": "One-time fee per server",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "Self-hosted server software with web, desktop and mobile clients",
      "licence": "One-time fee per server",
      "delivery": "Digital – licence and installation instructions by email",
      "live_demo": null,
      "category_demos": [
        {
          "label": "Try the IT Resources live demo",
          "url": "https://itr-demo.voipat.com/"
        }
      ],
      "specifications": {
        "Product type": "Self-hosted server software with web, desktop and mobile clients",
        "Deployment": "Docker container (recommended) or Node.js 20.11+ on Linux",
        "Database": "Embedded SQLite; optional SQLCipher encryption",
        "Monitoring methods": "ICMP, TCP, HTTP, TLS, SNMP, SSH, Redfish, Asterisk AMI, push agent",
        "Bundled plugins": "15 – servers, computers, firewalls, routers, networks, internet lines, VPN, VOIP, office & IoT, backups, password safe, billing, service desk, bug reports, core",
        "Notification channels": "Email (SMTP), SMS (Twilio or HTTP gateway), webhook, in-app, browser push, mobile push",
        "Multi-tenancy": "Clients and sites with per-client portal access",
        "Access control": "Built-in and custom roles, groups, per-user overrides, two-factor authentication",
        "AI assistance": "Optional – Anthropic Claude or local Ollama",
        "Licence": "One-time fee per server",
        "Delivery": "Digital – licence and installation instructions by email"
      },
      "images": [
        "https://techsmix.pages.dev/images/itresources/01-dashboard.webp",
        "https://techsmix.pages.dev/images/itresources/02-all-resources.webp",
        "https://techsmix.pages.dev/images/itresources/03-fleet-monitoring.webp",
        "https://techsmix.pages.dev/images/itresources/04-alerts.webp",
        "https://techsmix.pages.dev/images/itresources/05-firewall-detail.webp",
        "https://techsmix.pages.dev/images/itresources/06-voip-resources.webp",
        "https://techsmix.pages.dev/images/itresources/07-client-overview.webp",
        "https://techsmix.pages.dev/images/itresources/08-network-map.webp",
        "https://techsmix.pages.dev/images/itresources/09-status-report.webp",
        "https://techsmix.pages.dev/images/itresources/10-service-desk.webp",
        "https://techsmix.pages.dev/images/itresources/11-tasks.webp",
        "https://techsmix.pages.dev/images/itresources/12-password-safe.webp",
        "https://techsmix.pages.dev/images/itresources/13-diagnostics.webp",
        "https://techsmix.pages.dev/images/itresources/14-access-control.webp",
        "https://techsmix.pages.dev/images/itresources/15-plugins.webp",
        "https://techsmix.pages.dev/images/itresources/16-dark-mode.webp"
      ],
      "description_text": "IT Resources is a self-hosted monitoring, service-desk and operations platform built for IT service providers and in-house IT teams. One server watches your firewalls, routers, switches, servers, workstations, internet lines, VPNs, VOIP systems and office devices, pages the on-call engineer when something breaks, and gives every client a scoped view of their own estate.\n\nEverything monitorable is a plugin. The core stores resources, metrics and alerts; fifteen bundled plugins define what those mean for each kind of equipment, and you can add your own with the included plugin SDK.\n\n- Multi-tenant by design: Clients, sites and resources, with tenant isolation enforced in the data layer and a portal for each customer.\n- Agentless and agent-based: ICMP, SNMP, SSH, HTTP, TLS, Redfish and Asterisk AMI probes, plus a push agent for hosts behind NAT.\n- Alerting that stays quiet: Deduplication, debounce, escalation ladders and quiet hours, delivered by email, SMS, webhook and push.\n- Security checks with treatments: Known vulnerabilities, signs of intrusion and login activity for every Linux server, PBX, dialer and MikroTik, each with remedies you review and apply one at a time.\n- Operations in one place: Service desk, tasks, password safe, backups, diagnostics, remote access, invoicing and utility bills.\n- Runs on your own server: A single Docker container with an embedded SQLite database. No external database or message queue.\n\n### Monitoring\n\nWhat each bundled plugin watches.\n\n- Servers: Linux servers over SSH or SNMP and Windows servers over the agent or SNMP: CPU, memory, disk, services and listening ports. Dell iDRAC and HPE iLO hardware health over Redfish. Proxmox host reachability.\n- Computers: Workstation and laptop fleet through agent check-ins: CPU, load, memory, uptime, per-volume disk usage, watched services and stale-host detection. Agentless workstations by reachability.\n- Firewalls: Sessions, throughput, HA state, CPU, memory and certificate expiry for Fortinet FortiGate, Palo Alto, Sophos, MikroTik, pfSense/OPNsense and generic SNMP devices.\n- Routers: WAN interfaces, routing table size, BGP/OSPF neighbours and CPU for Cisco, MikroTik, Juniper, Huawei and generic SNMP devices.\n- Networks: Switches (port state, PoE, interface errors), access points and wireless controllers (associated clients), modems and ONTs, load balancers, IDS/IPS appliances and network segments.\n- Internet lines: Latency, jitter, packet loss and throughput per WAN circuit, with ISP SLA compliance.\n- VPN: Site-to-site tunnels (IPsec, WireGuard, OpenVPN, GRE, SSL) with flap detection, and remote-access servers with connected users.\n- VOIP: Asterisk-based PBXs over AMI: live channels and calls, SIP trunks, channel capacity, call quality (MOS) and ASR/ACD. IP phones, FXO/FXS/E1/GSM gateways, GoIP gateways, ViciDial dialers and MagnusBilling servers.\n- Office & IoT: Printers and scanners (toner and ink levels, device alerts), IP cameras and NVRs (Hikvision, Dahua, Axis, Reolink, Amcrest, ONVIF) and other IoT devices.\n- Backups & storage: Storage targets monitored for capacity like any other resource, protection status and a recovery-point watchdog.\n- Automatic discovery:: every half hour the platform reads the ARP tables and DHCP leases of every MikroTik it manages. A device that moves to a new address is followed by its MAC – the resource's address updates itself, within the same client only, with every move logged – and newly seen devices are one click from being monitored.\n- Connect as any user:: an administrator opens the portal as another user for up to two hours to see exactly what that role can see and do – every action logged under both names.\n- The server watches itself:: the IT Resources host is a resource like any other – vitals, security check and treatments – with a dashboard widget for its CPU, memory, disk, uptime, process and database size.\n- Fleet-wide Monitoring view: sortable CPU, memory and worst-disk table across every resource that reports vitals.\n- Per-resource page in tabs – Dashboard first (live vitals, services, 24-hour and 30-day uptime, open alerts, metric charts over 1 hour to 7 days), then Security, Services & ports, Access, Diagnostics, Backups and Details – and on MikroTiks Discovery, Configuration, Users and Torch tabs of their own. The open tab is part of the address, so it can be bookmarked and linked.\n- Three metric retention tiers – raw for a day, 5-minute for a month, hourly for a year – so dashboards stay fast as history grows.\n- Customisable dashboard: drag, resize and add widgets from every plugin – fleet health, status grids that show each device's client and branch, alert trend, worst uptime, live calls with the client and PBX behind each call, trunk status, call heat-map, backup protection, ticket queue, SLA and more.\n\n### Security checks\n\nIs anything we look after vulnerable or already broken into – and what do we do about it?\n\n#### What is checked\n\n- Every Linux server, PBX, ViciDial dialer, MagnusBilling server and MikroTik is checked over SSH – on demand, and automatically once a day – using the login the platform already holds.\n- Known vulnerabilities:: installed packages are matched against each distribution's own advisories (Debian, Ubuntu, AlmaLinux, Rocky, Alpine, openSUSE via OSV.dev), so back-ported fixes count; RouterOS versions are matched against NVD. Each one is marked as fixable or not yet fixed, and every vulnerable package carries its own treatments: upgrade just that package, see what depends on it and which of its programs are running, or remove it when nothing needs it.\n- Signs of intrusion:: a successful login from an address that was guessing passwords, extra root-level accounts, recently changed SSH keys, programs running from temporary folders, crypto-miners, preloaded libraries, scheduled jobs that download and run code – and on MikroTik the botnet markers: SOCKS or web proxy switched on, fetch-and-import scheduler jobs, extra full-rights users.\n- Hardening:: SSH algorithms and options, passwords accepted from the internet, automatic security updates, kernel network settings, permissions on secret files, world-writable system files, unpackaged setuid programs, system binaries that no longer match their package, immutable-flagged files, hidden processes, needless daemons, time sync, auditing and password policy – and on MikroTik the forward chain, UPnP, RoMON, discovery scope, SSH strong-crypto, SYN cookies, unrestricted admin users and weak Wi-Fi profiles.\n- Exposure:: pending and security updates, reboots needed, databases and file sharing listening on every interface, SNMP with the default community, open DNS resolvers, management services open to the internet.\n- Logs:: failed and successful logins with the busiest sources and user names, sudo use and account changes.\n- A fleet-wide Security page ranks everything worst first; intrusion signs raise a critical alert and serious fixable risks a warning, and both clear themselves once a later check is clean.\n\n#### Treatments, one at a time\n\n- Each finding – down to medium and low – offers its own treatments: inspections that only show (the account, the keys, the process, where a job lives) and fixes that change the device (install or automate updates, harden SSH, apply kernel settings, repair permissions, lock an account, stop and quarantine a program, reinstall tampered packages, block an address, restrict a service, enable a baseline firewall, protect a router's input and forward chains, turn off SOCKS or UPnP, upgrade RouterOS and more). Security updates leave the kernel and boot loader alone: those have a treatment of their own, which first checks that /boot has room and keeps the previous kernel in the boot menu, so one update cannot quietly decide the next reboot. A treatment's output streams live while it runs, and a report picks up newly added treatments the moment the platform is updated – no rescan needed.\n- Changes that could cut the server off – a firewall, a router's chains – apply with a revert timer on the device; the platform then reconnects to confirm, and if it cannot, the device undoes the change by itself.\n- You see exactly what will run before it runs; anything that interrupts service asks for a second confirmation. The device's output is shown and kept, with who ran it and when.\n- Built not to lock you out: the platform's own address is never blocked, SSH changes are tested and rolled back if rejected, and a fix refuses to run while other machines depend on what it would close.\n\n### Alerting and response\n\nFrom the first failed check to the engineer logged in to the device.\n\n#### Alerting\n\n- Rules on a metric threshold (for example average CPU above 90% for 5 minutes) or on health state (down for 2 minutes).\n- Deduplication – one open alert per condition with a rising occurrence count, not sixty alerts for an hour-long outage.\n- Debounce – a condition must hold before it fires, so flapping links stay quiet.\n- No data is not a breach – a dead collector raises its own alert instead of tripping every threshold at once.\n- Escalation ladders with per-step delays and channels, and quiet hours outside which only critical alerts page.\n- Critical alerts can open a ticket automatically with the SLA clock running; resolution sends an all-clear to the same channels.\n- Acknowledge, resolve or suppress alerts (with a duration and a reason), individually or in bulk.\n- Channels: email (SMTP), SMS (Twilio or any HTTP gateway), webhook, in-app, browser push, mobile push, plus optional chime and spoken alerts in the browser.\n\n#### Diagnostics and remote access\n\n- Ping (one-off or continuous), traceroute, port scan, subnet sweep, DNS and HTTP checks, LLDP and the server's own neighbour table – with results streaming live.\n- The same toolkit on every resource page, aimed at that resource's registered addresses.\n- Access card per resource: tests SSH, Telnet, HTTP, HTTPS, Winbox, AMI and SIP ports and shows which doors are open.\n- Browser terminal:: SSH or Telnet sessions relayed through the server, using a saved vault credential or one you type. Session output is recorded server-side.\n- Web proxy and port-forward tunnels to device admin interfaces on client LANs that the server can reach and your workstation cannot.\n- Open-port scan with service banners on each resource, with the option to pin the ports you want to keep watching.\n- Restrict which address ranges the tools may probe.\n\n#### MikroTik toolkit\n\n- Winbox tunnel through the server, and temporary Winbox/WebFig logins for technicians that are removed when the ticket closes.\n- Device discovery from ARP, DHCP and neighbour tables – add a found device as a child resource in one click.\n- Torch live traffic capture, and the nightly configuration export cached with secrets redacted.\n- PCC load balancing:: guided installer (discover ports, preview the plan, apply), live traffic per line, enable/disable lines and slots, renew DHCP, per-line diagnostics, with guards against cutting off the management line.\n- VPN link discovery and guided protocol set-up, previewed before it is applied.\n\n#### VOIP and call-centre monitoring\n\n- Asterisk (including FreePBX, Issabel and Elastix systems) over AMI with SSH fallback: live calls and channels, trunk registration, channel usage against capacity.\n- ViciDial server monitor:: agents in call, ready and paused, calls being placed, live channels, system and Asterisk CPU, calls per carrier, today's dispositions and dialable leads per campaign – plus a streamed backup of the database (campaigns, lists, leads and users, without the call logs) and the Asterisk configuration.\n- GoIP GSM gateways:: per-line SIM and registration status, signal, carrier, ACD/ASR, remaining minutes, IMEI and ICCID, with remote reboot.\n- Yeastar and Dinstar gateways:: per-line status, signal and call limits with an online/busy history chart, and configuration backup.\n- MagnusBilling live view:: calls in progress, concurrent calls, trunks, CPU, memory and disks, with database and configuration backup over SSH.\n\n### Running the business\n\nThe day-to-day work around the monitoring, kept next to the devices it concerns.\n\n#### Clients, sites and reporting\n\n- Organise resources by client and site; each client sees only their own resources, tickets and balance.\n- Client page with live health, uptime history, open alerts, subscriptions, invoices and utility bills in one place.\n- Interactive network map per client and per site: drag to arrange, drop a device onto another to re-parent it, VPN links drawn between sites, layout saved for everyone.\n- One-click status report for a client over 24 hours, 7, 30 or 90 days, ready to print or save as PDF.\n- Invite client-side teammates with viewer or admin rights over their own tenant.\n\n#### Service desk, bug reports and tasks\n\n- Tickets by type (incident, request, change, question, bug) with priority, state, assignee, comments and internal notes.\n- SLA targets per priority with breach tracking, queue health and agent workload widgets.\n- Tickets link to the client and the resource they concern; support fees can be charged from the ticket.\n- Bug reports with severity, component and reproduction steps, deduplicated by fingerprint with a hit count.\n- Tasks with assignee, priority and due date, linked to a client or resource, and a \"My tasks\" panel on the dashboard.\n\n#### Password safe\n\n- Stores passwords, SSH keys, API keys, certificates, Wi-Fi keys, licences, database logins and notes, linked to the resources they belong to.\n- Envelope encryption with per-entry AES-256-GCM; a stolen database file is inert without the server's key.\n- Seeing a secret needs a separate \"reveal\" permission, every reveal is audited before the plaintext is returned, and revealed secrets clear from the screen after 30 seconds.\n- Posture overview: weak, reused, rotation-overdue and expiring credentials. Entropy-based strength scoring, password generator and TOTP codes.\n\n#### Backups\n\n- Pick what to protect from check lists:: the server's databases and its folder tree are listed over SSH, and one plan can back up databases and files together into a single archive.\n- Scheduled plans for files, MySQL/MariaDB, PostgreSQL, SQLite, device configuration over SSH, NocoBase in Docker (its database, storage and compose files) and the platform's own database.\n- Storage targets: local or mounted path, SFTP, FTP/FTPS, WebDAV, S3-compatible, SMB and NFS, each with a connection test.\n- Grandfather-father-son retention, checksummed archives, run logs, restore, and an optional offsite copy.\n- RPO watchdog that catches the plan that silently stopped running.\n\n#### Billing, invoices and utility bills\n\n- Recurring plans and subscriptions (monthly, quarterly, yearly), one-time charges, invoice generation, renewals, payments and invoice templates; print or email invoices.\n- Prepaid accounts with top-ups, adjustments, refunds, low-balance alerts and credit-limit suspension.\n- Utility bills:: track each client's internet, electricity, phone, leased-line and MPLS bills with due-date reminders, so a lapsed vendor payment never takes a site offline.\n\n#### AI assistance (optional)\n\n- Root-cause analysis on alerts and tickets using read-only tools: metric history, configuration, ping, traceroute, port and DNS checks and recent alerts.\n- AI chat on resources, alerts and tickets. Any action it proposes – acknowledging an alert, rechecking a resource, commenting on a ticket, running a device command – needs explicit human approval.\n- Works with Anthropic Claude (your own API key) or a local Ollama model.\n\n### Platform\n\nHow it is secured, reached and extended.\n\n#### Security and access control\n\n- Built-in roles (owner, admin, engineer, technician, billing, viewer, customer, customer admin), custom roles, user groups and per-user permission overrides.\n- Two-factor authentication by authenticator app with backup codes, or by email code.\n- Short-lived access tokens with refresh tokens that are stored hashed and rotated on use.\n- Brute-force protection:: repeated failed sign-ins are slowed per address and per account, and the client address in the audit log cannot be forged.\n- Device credentials, SNMP communities and AMI secrets encrypted at rest and never returned by the API.\n- Optional encrypted database (SQLCipher) unlocked with a passphrase at start-up.\n- Remote server actions need both the operator's role and a per-server opt-in. Full audit log, with a separate log for vault access.\n\n#### Clients and apps\n\n- Web portal – responsive, light and dark themes, adjustable density and text size, high-contrast and reduced-motion options, and a command palette (Ctrl/⌘ K) that searches resources, alerts and tickets.\n- Desktop app – the portal in a native window with a tray icon and close-to-tray.\n- Android and iOS apps for on-call engineers – alerts, clients, diagnostics, security checks and treatments, backup plans with the same database and folder check lists, connect as another user, and push notifications.\n- Host agent – a single zero-dependency script that dials out, so it works behind NAT and corporate firewalls. One-line installer for Linux and macOS.\n\n#### Extensible\n\n- Plugin SDK with real probes (ICMP, TCP, HTTP, TLS, SNMP, SSH, Asterisk AMI). A plugin is a folder with a manifest and one TypeScript file – drop it in and restart.\n- Plugins declare the permissions they need, so you can see what third-party code can touch before enabling it.\n- Widgets return data rather than markup, so the same widget renders on web, desktop and mobile.\n\n#### System requirements\n\n- A Linux server with Docker (recommended), or Node.js 20.11 or newer.\n- No external database – SQLite is embedded. Storage grows with the number of resources and the metric history you keep.\n- Network reachability from the server to the devices you want to monitor (host networking is recommended so LAN discovery and ICMP see the real network).\n- Optional: an SMTP account for email, a Twilio account or HTTP SMS gateway for SMS, and an Anthropic API key or Ollama server for AI assistance.\n\n### How licensing works\n\nThe price is a one-time fee per server: one licence covers one server that IT Resources is installed on, with no recurring charge. Buy for two or more servers and each licence is 25% off. Set the number of servers above and check out. Once your payment is confirmed we email your licence together with download and installation instructions. Screenshots on this page show the product running with built-in demonstration data.\n\nWould you rather not run a server? IT Resources Cloud is the same platform hosted for you, from $149 per month.",
      "updated": "2026-11-04"
    },
    {
      "id": "freepbx-ai-agent",
      "sku": "FPBX-AIAGENT",
      "type": "product",
      "name": "AI Agent for FreePBX",
      "tagline": "Conversational voice agents for your PBX",
      "summary": "Self-hosted AI voice agent for FreePBX 17: visual call flows, webhooks, knowledge base and call transcripts. Bring your own LLM and speech services.",
      "category": "VoIP & Telephony",
      "url": "https://techsmix.pages.dev/products/freepbx-ai-agent/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/freepbx-ai-agent",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 799.0,
        "low": 799.0,
        "high": 799.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [
          {
            "min_quantity": 2,
            "percent_off": 25.0,
            "unit_price": 599.25
          }
        ],
        "terms": "One-time fee per FreePBX server",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "FreePBX module (AI Agent + AI Agent Calls), self-hosted",
      "licence": "One-time fee per FreePBX server",
      "delivery": "Module file to download from your account once payment is confirmed",
      "live_demo": null,
      "category_demos": [],
      "specifications": {
        "Product type": "FreePBX module (AI Agent + AI Agent Calls), self-hosted",
        "Licence": "One-time fee per FreePBX server",
        "Delivery": "Module file to download from your account once payment is confirmed",
        "Requirements": "FreePBX 17 / Asterisk 21; an LLM (Ollama server, or an OpenAI or Anthropic key); speech-to-text and text-to-speech services or cloud keys – not included",
        "Includes": "Both module files, command-line tools and contrib/ helper scripts; no AI models",
        "LLM providers": "Ollama (local), OpenAI, Anthropic",
        "Speech providers": "Speech-to-text: Vosk, Whisper (local), OpenAI Whisper · Text-to-speech: Piper, OpenAI, ElevenLabs",
        "Workflow steps": "Agent turn, ask a question, take a message, transfer, webhook, end call",
        "Call records": "Transcript, workflow path, actions and variables per call; live call monitor"
      },
      "images": [
        "https://techsmix.pages.dev/images/freepbx-ai-agent/01-workflow-editor.webp",
        "https://techsmix.pages.dev/images/freepbx-ai-agent/02-agent-editor.webp",
        "https://techsmix.pages.dev/images/freepbx-ai-agent/03-provider-settings.webp",
        "https://techsmix.pages.dev/images/freepbx-ai-agent/04-variables.webp",
        "https://techsmix.pages.dev/images/freepbx-ai-agent/05-live-monitor.webp"
      ],
      "description_text": "AI Agent is a FreePBX 17 module that answers calls with a conversational voice agent. Each agent has its own system prompt, voice, language and model, follows a call flow you draw as a graph, and can transfer the caller, take a message, collect details and call your systems over a webhook. It ships together with its companion module, AI Agent Calls, which records every conversation the agent handles and lets you follow calls live.\n\nThe module is the telephony and orchestration layer. Understanding speech, deciding what to say and speaking it are done by services you choose: a language model (a local Ollama server, OpenAI or Anthropic), speech-to-text (Vosk, Whisper or OpenAI Whisper) and text-to-speech (Piper, OpenAI or ElevenLabs). These services are not part of the download – see Requirements below.\n\n- A destination like any other: Every enabled agent appears as a FreePBX destination, so inbound routes, IVRs, ring groups and time conditions can send calls to it.\n- Visual call flows: A node-graph Workflow Editor with branching conditions: agent turns, questions, transfers, messages, webhooks and hang-up.\n- Bring your own AI: Local Ollama, OpenAI or Anthropic for the model; local or cloud speech services for listening and speaking.\n- Every call on record: Turn-by-turn transcript, workflow path, actions and captured variables for each call, plus a live view of calls in progress.\n- Runs on your servers: With local models, call audio and transcripts never leave your network. No subscription and no per-minute charge from us.\n\n### Building an agent\n\nFive tabs on one FreePBX page: Agent Editor, Workflow Editor, Knowledge Base, Variables and Settings.\n\n- Agent Editor: Name, language, system prompt, first message, reprompt and no-answer lines, and short acknowledgement phrases played while a reply is being prepared. Pick the LLM provider and model, the voice provider, voice and talk speed, and the speech-to-text provider for each agent.\n- Call behaviour: Temperature, maximum call length, maximum turns, silence timeout and maximum reprompts. Callers can interrupt the agent (barge-in); an optional real-time mode over Asterisk ARI also captures what the caller said while interrupting.\n- Workflow Editor: Drag steps onto a canvas and connect them with conditions written in plain language or on variable values. Step types: agent turn, ask a question, take a message, transfer call (to a FreePBX destination given as context, extension, priority), call a webhook, end call.\n- Variables: Declare what the agent should collect – text, number, date, email, phone, national ID, full name or yes/no – with the question to ask for it. Use them in conditions and in webhook bodies as {{name}}.\n- Webhooks: GET, POST or PUT to your own systems with custom headers and a templated body, and map fields of the JSON reply back into variables the agent can read out – for example a ticket or order number.\n- Knowledge Base: Add documents by pasting text or uploading.txt,.md,.docx or.pdf files. Answers are grounded in the most relevant passages, found by embeddings (Ollama or OpenAI) or by keyword search when no embedding model is set. A test box shows what a question retrieves.\n- Test from the browser:: Test LLM, Test voice and Test speech-to-text buttons, and a Test call that talks to the agent through your computer's microphone and speakers with a live conversation log – no phone needed.\n- Each provider in Settings has its own Test connection button. API keys stay on the FreePBX server and are never sent back to the browser.\n- Agents can be exported to a JSON file and imported into another install from the command line, as a new agent or replacing an existing one.\n\n### Calls and operations\n\nWhat you see once the agent is taking calls.\n\n#### AI Agent Calls (included)\n\n- Call list per agent with caller ID, duration, status, how the call ended, turns and actions.\n- Per-call detail: the full transcript, the workflow path taken, actions performed (transfers, webhook calls, messages taken) and variables captured.\n- Trend tiles: conversations, success rate, duration, transfer rate and turns per call, compared with the previous period.\n- AI Agent Live:: follow a call in progress – transcript, captured variables and turn audio as they arrive – and hang up one call or all of them.\n\n#### Services host monitoring\n\n- CPU, RAM, GPU load, VRAM and temperatures of the machine running your speech services and models, live in the AI Agent page header.\n- See which speech service or Ollama model is loaded on each GPU, unload one, or free all GPU memory with one click.\n- Choose which GPU each local service loads on.\n- These panels use the included control daemon (contrib/) on the services host; the module works without it, with these panels empty.\n\n### Requirements and what is included\n\nPlease read before buying: the AI itself runs on services you provide.\n\n#### You need\n\n- FreePBX 17 (Asterisk 21) with root access to install a module. It is installed from Module Admin as a third-party module, so FreePBX shows it as unsigned.\n- A language model:: an Ollama server reachable from FreePBX, or an OpenAI or Anthropic API key. A local model needs a suitable GPU for conversational response times.\n- Speech-to-text:: a Vosk server (standard vosk-server WebSocket protocol), a local Whisper service, or an OpenAI key for OpenAI Whisper.\n- Text-to-speech:: a local Piper service, or an OpenAI or ElevenLabs key. Local Piper and Whisper are reached through a small WebSocket service you run beside them.\n- For real-time interruption: Asterisk ARI enabled (a setup script is included).\n\n#### In the download\n\n- The AI Agent module and the AI Agent Calls module, ready to upload in Module Admin.\n- Command-line tools: real-time call daemon, ARI setup, agent export and import, health check and GPU memory reclaim.\n- The contrib/ folder: the services-host control daemon, example systemd units and timers, and a sample exported agent.\n- Not included:: Ollama, language models, speech-recognition or voice models, GPU drivers, or cloud API accounts. Third-party models and services are under their own licences.\n\n### How licensing works\n\nThe price is a one-time fee per server: one licence covers one FreePBX server that AI Agent is installed on, with no recurring charge. After your payment is confirmed, the module file is available to download from your account, together with installation instructions. Any cloud AI provider you choose bills you directly for its usage. Screenshots on this page show the module running on our own test system.",
      "updated": "2026-11-04"
    },
    {
      "id": "asterisk-reporting",
      "sku": "FPBX-REPORTING",
      "type": "product",
      "name": "Asterisk Reporting",
      "tagline": "CDR reports and live call-centre supervision for FreePBX",
      "summary": "FreePBX module for call reports and live supervision: CDR presets, KPIs, attendance, call quality, realtime extension and queue panels with transfer, park and call barge.",
      "category": "VoIP & Telephony",
      "url": "https://techsmix.pages.dev/products/asterisk-reporting/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/asterisk-reporting",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 299.0,
        "low": 299.0,
        "high": 299.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [
          {
            "min_quantity": 2,
            "percent_off": 25.0,
            "unit_price": 224.25
          }
        ],
        "terms": "One-time fee per FreePBX server",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "FreePBX module (supervisor2) with a bundled realtime Python service",
      "licence": "One-time fee per FreePBX server",
      "delivery": "Module file to download from your account once payment is confirmed",
      "live_demo": null,
      "category_demos": [],
      "specifications": {
        "Product type": "FreePBX module (supervisor2) with a bundled realtime Python service",
        "Access control": "FreePBX login; per-administrator extension scoping",
        "Licence": "One-time fee per FreePBX server",
        "Delivery": "Module file to download from your account once payment is confirmed",
        "Requirements": "FreePBX 14–17 with Asterisk, MySQL/MariaDB CDR, Python 3.6+, internet access for the first pip install",
        "Includes": "CDR report, extension KPIs, attendance and break reports, extension and queue realtime panels with call control, supervisor access control, realtime WebSocket service with installer",
        "Call control": "Hang up, blind and attended transfer (drag and drop), park and pick up, record, listen / whisper / barge, click-to-call, DND; trunk and conference views for admins",
        "Realtime service": "Python WebSocket service on port 8765, proxied through the FreePBX web server",
        "Exports": "CSV and Excel"
      },
      "images": [
        "https://techsmix.pages.dev/images/asterisk-reporting/01-cdr-report.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/02-call-list.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/03-realtime-dashboard.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/03b-realtime-panel.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/04-queue-panel.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/05-extension-kpis.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/06-attendance.webp",
        "https://techsmix.pages.dev/images/asterisk-reporting/07-settings.webp"
      ],
      "description_text": "Asterisk Reporting is a call-reporting and live supervision module for FreePBX. It adds a Reports → Asterisk Reporting page to the FreePBX admin panel with CDR reports, extension KPIs, attendance and break reports, and realtime wallboards for extensions and queues, so supervisors can see what happened today and what is happening right now.\n\nIt reads the call data FreePBX already records (the CDR database, queue log and call recordings) and talks to Asterisk over the Manager Interface (AMI). No changes to your dialplan are needed.\n\n- Live operator panel: Extension and queue status pushed live, with transfer, park, listen and barge one click away.\n- Accurate call reports: CDR with presets, who ended each call, call quality and a graphic call flow.\n- Per-supervisor access: Each FreePBX administrator sees, manages and reports on only their own extensions.\n- Native FreePBX module: Installs from Module Admin, renders inside the FreePBX GUI and uses its login.\n\n### Reports\n\nFilter by date and time, extension, trunk and outcome; export what you see.\n\n- CDR report: Call totals by outcome with a chart, presets for inbound, outbound, internal, answered, missed and abandoned (queue) calls, the connected agent, who hung up (caller, agent or system) with the hangup cause, and a group-by-caller view with each number's call history.\n- Call flow: Expand any call to see a timeline with one lane per channel, marking answer, hangup and transfer points.\n- Call quality: An estimated MOS per call, with packet loss, jitter and round-trip time, taken from Asterisk's RTCP statistics.\n- Recordings: Play or download a call's recording from its row. Supervisors can only open recordings of their own extensions.\n- Extension KPIs: Per-extension totals for answered, missed, abandoned, busy and failed calls, answer rate, total and average talk time, and average wait time, plus inbound, outbound and internal calls, first and last call, who ended each call and call quality. Click any number to see the calls behind it, with call flow and recording playback.\n- Attendance & breaks: Queue login and logout times, online time, and the number and total length of breaks per extension per day, built from the Asterisk queue log.\n- Exports: CSV and Excel export of the CDR report, and Excel export of the KPI, attendance and break reports.\n\n### Realtime monitoring and control\n\nTwo live operator panels, opening on a dashboard and organised in tabs, updated continuously.\n\n#### Extension monitor\n\n- A compact tile for every registered extension showing whether it is online, offline, in a call, ringing, on hold, paused or on Do Not Disturb, and who it is talking to.\n- A dashboard showing every section at once as cards you can drag to rearrange, resize and collapse. Each browser remembers its own layout.\n- Tabs for live extension KPIs, agent availability and breaks, queues, callers waiting, queue agents, active calls and parked calls.\n- Search by extension or name, and filter the tiles to one queue's agents.\n\n#### Queue monitor\n\n- A panel for each queue showing a Healthy, Busy or Critical status, available and busy agents, and the longest wait.\n- Callers waiting, listed by position and wait time. A caller who hangs up while queued blinks before being removed.\n- Agent tiles, and each queue's members as cards, showing status, calls taken, last call and the caller on the line.\n\n#### Call control and supervisor tools\n\n- Click any extension or agent to hang up, transfer (blind or attended), park or record its call, pick up a ringing call on your own phone, or call it with one click. Drag a call onto another extension to transfer it, or onto the Parking tab to park it.\n- Listen, whisper or barge in on an agent's call from your own phone, and turn Do Not Disturb on or off for an extension.\n- Pick up parked calls from the Parking tab. Full administrators also get a Trunks tab with channels in use and reachability, and a Conferences tab to mute, remove or lock conference members.\n- Break / Unbreak an agent in all of their queues, and log dynamic queue members in or out, from the realtime pages.\n- On the Supervisor Access tab, a full FreePBX administrator decides which extensions each restricted administrator may watch, manage and report on. The live feed sends each supervisor only their own extensions.\n\n### Installation\n\nWhat the module does for you, and what you may need to do yourself.\n\n#### The module install\n\n- Upload the module file in Admin → Module Admin → Upload Modules, or run fwconsole ma installlocal.\n- It publishes the app at /supervisor2/ and adds the Asterisk Reporting page under Reports, with Reports, Supervisor Access and Settings tabs.\n- On the Settings tab, the AMI account, CDR database, recording and log paths are pre-filled from FreePBX, and trunks are picked from your trunk list.\n\n#### The realtime service\n\n- The live screens need a small Python WebSocket service (asterisk-realtime-websocket), which ships inside the module.\n- The install runs the bundled install-services.sh. It finds Python 3.6 or newer, installs the websockets, pymysql and aiomysql packages with pip, and enables and starts a systemd service.\n- If the install can't get root, the service runs as the web user instead, with a cron watchdog that restarts it. To move it to systemd later, run install-services.sh as root. The module page shows a warning whenever the service is not running.\n- The service uses port 8765, proxied through the FreePBX web server. Uninstalling the module stops and removes the service.\n- Requirements: FreePBX 14, 15, 16 or 17 with Asterisk, MySQL/MariaDB CDR, Python 3.6 or newer, and internet access from the PBX for the first pip install.\n- Break and queue login/logout need an AMI account with the agent write permission; call control also needs call, originate and command. FreePBX's own manager account, used by default, already has them.\n\n### How licensing works\n\nThe price is a one-time fee per server: one licence covers one FreePBX server, with no recurring charge. Once your payment is confirmed, the module file is available to download from your account, together with installation instructions.",
      "updated": "2026-11-04"
    },
    {
      "id": "dialplan-map",
      "sku": "FPBX-DIALPLANMAP",
      "type": "product",
      "name": "Dialplan Map",
      "tagline": "See your FreePBX call flow, edit it, and test-call it live",
      "summary": "A FreePBX 17 module that maps your whole call flow as an interactive diagram, lets you re-route it in place, and test-calls any node with live audio and tracing.",
      "category": "VoIP & Telephony",
      "url": "https://techsmix.pages.dev/products/dialplan-map/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/dialplan-map",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 149.0,
        "low": 149.0,
        "high": 149.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [
          {
            "min_quantity": 2,
            "percent_off": 25.0,
            "unit_price": 111.75
          }
        ],
        "terms": "One-time fee per FreePBX server",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "FreePBX 17 admin module (self-hosted; also runs on FreePBX 15 and 16)",
      "licence": "One-time fee per FreePBX server",
      "delivery": "Module file to download from your account once payment is confirmed",
      "live_demo": null,
      "category_demos": [],
      "specifications": {
        "Product type": "FreePBX 17 admin module (self-hosted; also runs on FreePBX 15 and 16)",
        "Licence": "One-time fee per FreePBX server",
        "Delivery": "Module file to download from your account once payment is confirmed",
        "Requirements": "FreePBX 17, Asterisk 13+; the stock Asterisk Manager account; sox optional for non-WAV audio uploads",
        "Includes": "Live call-flow map, in-place routing editor, change journal with revert, announcement audio tools, and an in-browser test caller with dialpad, live audio and route tracing",
        "Covers": "Inbound routes, time conditions, call flow controls, IVRs, ring groups, queues, extensions, voicemail, announcements, conferences, misc/custom destinations, outbound routes and trunks"
      },
      "images": [
        "https://techsmix.pages.dev/images/dialplan-map/01-map.webp",
        "https://techsmix.pages.dev/images/dialplan-map/02-live-test.webp",
        "https://techsmix.pages.dev/images/dialplan-map/03-change-journal.webp"
      ],
      "description_text": "Dialplan Map is a FreePBX 17 admin module that draws the whole call flow of a running system as a single interactive map, lets you re-route it in place, and lets you walk it with a real test call – soft dialpad, live audio, and the caller's position lit up on the map as it moves.\n\nThe page is a three-pane workspace: a toolbox of node types on the left, the map canvas in the middle, and a panel on the right that switches between node properties and the live-test dialpad. Nodes and links are read from the FreePBX tables on every page load, not from a saved diagram, so the map cannot drift from what the switch is actually doing.\n\n- The real configuration, not a drawing: Inbound routes, time conditions, call flow controls, IVRs, ring groups, queues, extensions, voicemail, announcements, conferences, outbound routes and trunks – all read live from the database.\n- Edit in place: Drag a branch from one node to another and the destination is written to the same table column the owning module writes. Names, members, timers and dial patterns edit inline.\n- Walk it with a real call: Originate an actual call into any node, inject DTMF from a dialpad, hear what the caller hears, and watch the route light up hop by hop.\n- Everything it changed, journalled: Every edit is logged and can be reverted one at a time or all at once, replayed through the same write path as the original edit.\n- Nothing extra to run: No WebRTC, no certificates, no media relay, no extra daemon – just the module and the Asterisk Manager account FreePBX already has.\n\n### The map\n\nOne picture of the entire call flow, built fresh on every load.\n\n- Every destination type FreePBX routes to is drawn as a node with its outgoing branches as ports; anything the module does not recognise is still shown as an unmapped destination carrying the raw string, so a third-party branch never silently disappears.\n- Queue nodes carry their full configuration on the node face – agents, strategy, ring and retry timers, wrap-up, max wait, announcements and music class – so the part of a flow that most often explains a complaint reads straight off the map.\n- Dialplan problems are detected on every load:: dead ends, destinations that no longer exist, menus with no options and flows that loop are flagged, and the objects at fault blink behind a notice that walks you through them.\n- When the AI Agent module is installed, each agent appears as a node, with one port per “Transfer call” step in its workflow wired to the real destination, plus its LLM, voice and speech-to-text providers on the face.\n- Both side panels dock to a rail or resize by dragging their border; widths and collapsed state persist per browser.\n\n### Editing the live switch\n\nRe-route the PBX from the map, and keep a record of every change.\n\n#### In-place editing\n\n- Drag from an output port to another node, or pick a target in the properties panel, to re-point a branch. Connections are clickable: select one to re-point or remove it; hover one for a delete control at its midpoint and a grab handle to re-aim it.\n- Node properties – names, ring strategy, ring group members, timeouts, recordings, dial patterns – edit inline. Database-defined objects (inbound routes, IVRs, ring groups, announcements, time conditions, misc and custom destinations) can be created and deleted from the map too.\n- Extensions, queues and conferences deliberately cannot be created here: they need generated config only their own module produces correctly, so the panel links out instead of half-building a broken object.\n- Anything the map does not edit is one click away – a corner button opens that object's own FreePBX page in an overlay, so the map, the layout and any call in progress stay put behind it.\n- Every write flags the configuration for reload; the Apply Config button in the toolbar runs it. Undo and redo are on Ctrl+Z and Ctrl+Y; the map can be exported to a file and imported back.\n\n#### Change journal\n\n- Because edits go straight into the FreePBX tables, the Changes tab is the only record of what a branch used to point at. It journals every edit and can revert any one, or all of them.\n- What is stored is the module command that undoes an edit, so a revert replays through the same, already-tested write path rather than a second, buggier implementation.\n- An edit whose inverse cannot be expressed that way is listed as cannot revert rather than offering an undo that would quietly clear it.\n\n#### Announcement audio\n\n- The panel that picks an announcement's recording also lets you play it in the browser, upload a replacement, delete it, or record a new one – over the phone (it calls an extension; you speak after the beep and press #) or from this computer's microphone with a live level meter.\n- A prompt can also be written: given an ElevenLabs API key stored on the PBX, the panel speaks the text in a voice from your account and stores it as the recording's audio.\n- Whatever route the audio arrived by, the RIFF header is read and anything that is not 8 kHz mono 16-bit PCM is called out – rather than discovered as silence on a live call.\n\n### The live test call\n\nPick a start point, place a real call, and watch it move through the flow.\n\n#### Drive the call\n\n- Choose any inbound route, or jump straight to any node, press Place test call, and the module originates an actual call into the dialplan.\n- A dialpad (and keyboard 0–9, *, #) injects DTMF into the call, which an IVR hears exactly as it would hear a caller.\n- Live audio of what the caller hears is streamed into the browser while the call is still up.\n\n#### Read the route back\n\n- The current node is highlighted and panned into view, with the branch just taken animated, and the whole route drawn as it happens – a numbered badge on every node reached and a trail along the connections used.\n- A timeline under the canvas carries one chip per hop, stamped with how far into the call it happened; clicking a chip parks the map there, and it survives the hangup.\n- A full call trace lists every dialplan step, playback, dial attempt and hangup, with the channel variables known at each step on hover. Coverage marking accumulates across calls, so you can see which branches have never been walked.\n\n### Installing and requirements\n\nA standard FreePBX module file, installed from your account's download.\n\n- Delivered as a FreePBX module file you download from your account after payment; unpack it as dialplanmap/ under the modules directory and run fwconsole ma install dialplanmap, then fwconsole reload. Open it at Reports → Dialplan Map.\n- Requires FreePBX 17 (also supported on 15 and 16), Asterisk 13 or newer.\n- The Asterisk Manager account FreePBX uses needs read access to the call and dialplan event classes – the stock account already has it. The web user must be able to shell_exec PHP, which starts the per-call event listener.\n- sox is optional and only used to resample uploaded announcement audio; without it, uploads are limited to WAV files.\n\n### How licensing works\n\nThe price is a one-time fee per server: one licence covers one FreePBX server that Dialplan Map is installed on, with no recurring charge. Once your payment is confirmed we email your licence together with the module download and installation instructions, which are also available from your account. Screenshots on this page show the module running against a demonstration configuration.",
      "updated": "2026-11-04"
    },
    {
      "id": "power-usage",
      "sku": "FPBX-POWERUSAGE",
      "type": "product",
      "name": "Power Usage",
      "tagline": "Electricity use and cost for your AI Agent server",
      "summary": "FreePBX 17 module showing power draw, history and tiered-tariff cost for each GPU, the CPU and the whole PC of your AI Agent services host. Requires AI Agent.",
      "category": "VoIP & Telephony",
      "url": "https://techsmix.pages.dev/products/power-usage/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/power-usage",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 49.0,
        "low": 49.0,
        "high": 49.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [
          {
            "min_quantity": 2,
            "percent_off": 25.0,
            "unit_price": 36.75
          }
        ],
        "terms": "One-time fee per FreePBX server",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "FreePBX module (report page) – add-on for the AI Agent module",
      "licence": "One-time fee per FreePBX server",
      "delivery": "Module file to download from your account once payment is confirmed",
      "live_demo": null,
      "category_demos": [],
      "specifications": {
        "Product type": "FreePBX module (report page) – add-on for the AI Agent module",
        "Licence": "One-time fee per FreePBX server",
        "Delivery": "Module file to download from your account once payment is confirmed",
        "Requirements": "AI Agent module 1.53.0 or later with its control daemon running on the services host; NVIDIA GPUs with nvidia-smi for GPU readings",
        "Includes": "Live and history charts, statistics, daily consumption, top apps, tiered-tariff billing cycle with projection",
        "Measured / estimated": "GPUs measured; CPU estimated from load unless RAPL counters are readable; whole PC always estimated",
        "History": "Live last 5 minutes at 1-second resolution; about 400 days of history on the services host"
      },
      "images": [
        "https://techsmix.pages.dev/images/power-usage/01-power-usage.webp"
      ],
      "description_text": "Power Usage is a FreePBX 17 report module that shows how much electricity the machine running your AI Agent's local speech and language models is drawing, where that power is going, and what it costs under your electricity tariff.\n\nIt is an add-on for the AI Agent module and does not work on its own. The readings are taken every second on the services host by the AI Agent control daemon, which also keeps the history. Power Usage is the page in FreePBX that reads, charts and prices them.\n\n- Live and historical: A live chart of the last five minutes updated every second, and history from 1 hour to 1 year or any custom period.\n- Per GPU, CPU and whole PC: Each NVIDIA GPU is measured. CPU and whole-PC figures are estimates unless the CPU's energy counters can be read.\n- Top apps: Which programs, services, Docker containers and Ollama models the power is going to, split by CPU and GPU.\n- Tiered tariff cost: Price levels per kWh with a fine when a level is reached, the billing cycle so far and a projection to its end.\n\n### What the page shows\n\nOne report page under Reports in the FreePBX menu.\n\n- Current readings and live chart: Current draw for each GPU, the CPUs and the whole PC, with each GPU's draw against its power limit. Readings can be averaged over 1 second to 5 minutes.\n- History: Preset ranges of 1 h, 6 h, 24 h, 7, 30 and 90 days and 1 year, custom from/to dates, earlier and later buttons, and drag across the chart to zoom in.\n- Statistics: For each device: current, average, lowest and peak draw, when the peak happened, energy used, its share of the total and, once a tariff is set, its cost.\n- Daily consumption: Stacked bars and a table of energy per day for 7 days to a year, split by CPU, each GPU and the rest of the PC. Click a day to open it in History.\n- Top apps: Right now or over the selected range. Each app is charged for its share of CPU time and GPU load. Idle and overhead get their own row, so the rows add up to the whole PC.\n- Billing cycle and tariff: Set the currency, the billing day, any number of price levels and the fine for each level, plus the rest of the premises' usage, so the PC is priced at the level it actually pushes the bill into.\n\n### Measured and estimated figures\n\nWhat the numbers are based on.\n\n- GPUs are measured:, one series per NVIDIA card, read with nvidia-smi on the services host.\n- CPU power is an estimate worked out from load and the CPU's published power rating, unless the CPU's RAPL energy counters can be read. The kernel keeps these counters readable by root only by default. A setup script in the AI Agent module opens them to the daemon's user group. CPU and memory power are then measured.\n- Whole-PC power is always an estimate. There is no wall meter. It is calculated as CPU, GPUs and memory plus an allowance for the board, fans and drives, divided by the power supply's efficiency. Both values can be adjusted on the services host.\n- History is kept for about 400 days on the services host. It keeps building up while FreePBX is down or being upgraded. Minutes when the daemon was not running count as nothing and are not filled in with guesses.\n\n### Requirements\n\n- FreePBX 17.\n- The AI Agent module, version 1.53.0 or later, installed on the same FreePBX. It is a hard dependency: Power Usage will not install without it.\n- The AI Agent control daemon (voice-agent-control, a current version with power history) running on the Linux host that runs your local speech services. FreePBX must be able to reach that host on port 2705.\n- NVIDIA GPUs with the NVIDIA driver for GPU readings. Without them, only the CPU and whole-PC estimates are shown.\n\n### How licensing works\n\nThe price is a one-time fee per server. One licence covers one FreePBX server, with no recurring charge. Once your payment is confirmed, the module file is available to download from your account. The AI Agent module is not included.",
      "updated": "2026-11-04"
    },
    {
      "id": "nvr-attendance",
      "sku": "NVR-ATTENDANCE",
      "type": "product",
      "name": "NVR Attendance",
      "tagline": "Face-recognition attendance from the cameras you already have",
      "summary": "Self-hosted attendance from your existing NVR and IP cameras: face recognition, check-in and check-out, breaks, worked time and photo evidence, with a FreePBX module.",
      "category": "VoIP & Telephony",
      "url": "https://techsmix.pages.dev/products/nvr-attendance/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/nvr-attendance",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 50.0,
        "low": 50.0,
        "high": 50.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [
          {
            "min_quantity": 2,
            "percent_off": 25.0,
            "unit_price": 37.5
          }
        ],
        "terms": "One-time fee per server running NVR Attendance",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "Self-hosted server app (Python, web dashboard) plus an optional FreePBX module",
      "licence": "One-time fee per server running NVR Attendance",
      "delivery": "Server app and FreePBX module to download from your account once payment is confirmed",
      "live_demo": null,
      "category_demos": [],
      "specifications": {
        "Product type": "Self-hosted server app (Python, web dashboard) plus an optional FreePBX module",
        "Access control": "Dashboard logins with admin and viewer roles; API key for the FreePBX module",
        "Licence": "One-time fee per server running NVR Attendance",
        "Delivery": "Server app and FreePBX module to download from your account once payment is confirmed",
        "Requirements": "Linux with Python 3.10+; IP cameras or an NVR with RTSP or ONVIF; FreePBX 14 or later only for the optional module",
        "Includes": "Server app, web dashboard (English, Arabic, German, French), FreePBX module; face models are free downloads, see the README",
        "Face recognition": "YuNet face detection with SFace (included settings); ArcFace supported if you obtain its weights",
        "Attendance modes": "Check-in and check-out cameras, or first and last sighting on any camera; breaks and worked time per day",
        "Cameras": "RTSP/RTSPS, ONVIF discovery, Dahua NVR channel discovery, live view in the browser"
      },
      "images": [
        "https://techsmix.pages.dev/images/nvr-attendance/01-overview.webp",
        "https://techsmix.pages.dev/images/nvr-attendance/02-attendance-history.webp",
        "https://techsmix.pages.dev/images/nvr-attendance/03-attendance-report.webp",
        "https://techsmix.pages.dev/images/nvr-attendance/04-visit-frequency.webp",
        "https://techsmix.pages.dev/images/nvr-attendance/05-people.webp",
        "https://techsmix.pages.dev/images/nvr-attendance/06-cameras.webp",
        "https://techsmix.pages.dev/images/nvr-attendance/07-settings.webp"
      ],
      "description_text": "NVR Attendance takes staff attendance from the IP cameras and NVR you already have. It recognises enrolled people by their faces in the live streams, records when they arrive and leave, works out their breaks and time on site, and keeps a camera photo of every check-in and check-out as evidence.\n\nIt is a self-hosted server app with its own web dashboard, so the video and the faces stay on your network. An optional FreePBX module brings the same dashboard into the FreePBX admin panel.\n\n- The cameras you already own: RTSP and RTSPS streams, ONVIF discovery, a network scan for cameras, and channel import straight from a Dahua NVR. No special hardware.\n- Recognition that refuses to guess: A face is named only when it is big enough, facing the camera, clearly closer to one person than to anyone else, and seen more than once.\n- Attendance, breaks and time on site: Check-in and check-out per day, breaks taken and returned from, and total time worked, with reports you can export to CSV.\n- Photo evidence, and a way to correct it: Every check-in and check-out keeps the camera frame. A wrong one can be marked invalid, and that face is never named as that person again.\n- Runs on modest hardware: Fast face detection on the CPU, a slower scan when nothing moves, an optional one-core limit and a heat guard, so it can share a box with a PBX.\n\n### Attendance\n\nTwo ways to count, switchable at any time without restarting anything.\n\n#### Check-in and check-out cameras\n\n- Give one camera the check-in role and another the check-out role. The first sighting at the entrance is the check-in; the last pass of the exit camera is the check-out.\n- Going out through the exit and coming back in through the entrance is recorded as a break, and taken off the time worked.\n\n#### First and last sighting\n\n- No fixed roles: across all cameras, the first sighting of the day is the check-in and the latest is the check-out, updated as the person is seen again.\n- Any gap between two sightings longer than the break threshold (10 minutes by default) counts as a break.\n\n#### Reports\n\n- Today:: who is in, who has left, with check-in, check-out, breaks and time so far.\n- Attendance report for any date range: first and last seen, check-in, check-out, each break with its length, and total time per person per day.\n- Visit frequency:: sightings, days present, attendance rate and total time per person over a range.\n- A history per person covering the last 90 days, with the check-in and check-out photos. Hover a photo to see the full frame.\n- Days run midnight to midnight in the site's time zone, set in the dashboard, whatever time zone a viewer's own computer uses. Reports export to CSV.\n\n### Face recognition\n\nBuilt to leave a face unknown rather than name the wrong person.\n\n- Faces are found with OpenCV's YuNet detector and recognised with SFace. Both are free downloads, and the README links them. ArcFace is also supported: it is more accurate on small, turned and infrared faces, but its weights are licensed for non-commercial use, so you download it yourself if your use fits that licence.\n- A face is matched only when it is large enough in the frame and facing the camera, judged from the eyes and nose. A side-on face matches other people's side-on faces, so it is shown but never named.\n- The nearest enrolled person must be clearly closer than the next-best person, and the same match must repeat on the same camera within a few seconds before it counts. One lucky frame cannot check someone in.\n- Every unmatched face says why: too far away, not facing the camera, between two people, or not enrolled.\n- Marking a check-in or check-out photo Invalid removes that sighting, recalculates the day, and remembers the face as “not this person”, so a lookalike, a poster or a pattern on a wall is not named again.\n\n### People and cameras\n\nSet up from the dashboard, without editing files.\n\n#### Enrolment\n\n- Enrol from an uploaded photo, or straight from a face the cameras just saw. Pick the person from a list to add another photo of someone already enrolled.\n- Several photos per person, from different cameras and lighting, make recognition much more reliable. Photos with no usable face, or a face too small or turned away, are refused, and so is a duplicate of a photo already enrolled.\n\n#### Cameras\n\n- Add a camera by RTSP URL, or by its ONVIF address and login. Test a camera before saving it: it pulls a frame, or says whether the port, the login or the stream path is wrong.\n- Scan the network for cameras (ONVIF discovery plus an RTSP port check of the local subnet), or import every channel of a Dahua NVR.\n- A live view of each camera in the browser, transcoding only when a camera's codec needs it, and a live feed of the faces being detected.\n\n### Dashboard, access and FreePBX\n\n- Web dashboard in English, Arabic, German and French, with right-to-left layout for Arabic. Each user's language follows them to other browsers.\n- Administrator and viewer logins: viewers see attendance and reports, administrators also manage people, cameras, settings and users.\n- The FreePBX module shows the dashboard, live monitor, people, attendance report and visit frequency inside the FreePBX admin panel, connecting to the server with an API key.\n- A documented REST API for attendance, people and cameras, if you want to feed another system.\n\n### What you receive\n\n- The server app (Python; Linux with Python 3.10 or later) and the FreePBX module (FreePBX 14 or later), as two downloads in your account once payment is confirmed.\n- No face models are included in the download; the README lists the free YuNet and SFace files and the commands to fetch them. The optional person and vehicle boxes in the live view need a YOLOv8n model, which you add yourself under its own licence. Face recognition and attendance work without it.\n- One licence per server running NVR Attendance, however many cameras and people it handles.",
      "updated": "2026-11-04"
    },
    {
      "id": "ordering-platform",
      "sku": "UOP",
      "type": "product",
      "name": "Universal Ordering Platform",
      "tagline": "Restaurant POS, kitchen, delivery and back office",
      "summary": "Run a restaurant's till, kitchen screens, online store, phone orders, delivery and back office from one self-hosted system, Arabic-first, for Egypt and the Gulf.",
      "category": "Restaurants",
      "url": "https://techsmix.pages.dev/products/ordering-platform/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/ordering-platform",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 400.0,
        "low": 400.0,
        "high": 400.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [],
        "terms": "Yearly licence per server, updates included",
        "billing": "",
        "unit": "Servers"
      },
      "product_type": "Self-hosted server software (Node.js and PostgreSQL) with web and Android apps",
      "licence": "Yearly licence per server, updates included",
      "delivery": "Installation package and instructions by email once payment is confirmed",
      "live_demo": null,
      "category_demos": [
        {
          "label": "Try the live demo",
          "url": "https://orders.voipat.com/app/login"
        }
      ],
      "specifications": {
        "Product type": "Self-hosted server software (Node.js and PostgreSQL) with web and Android apps",
        "Licence": "Yearly licence per server, updates included",
        "Delivery": "Installation package and instructions by email once payment is confirmed",
        "Server": "Debian 12/13 or Ubuntu, Node.js 20+, PostgreSQL 15+, Apache or Nginx for HTTPS",
        "Languages": "Arabic (right to left), English, French, Spanish",
        "Modules": "Point of sale, kitchen display, online store and QR ordering, phone orders, delivery and driver app, inventory and recipes, purchasing, HR and payroll, accounting, reports, API",
        "Payments": "Cash, card, wallet, gift cards and cash on delivery; card gateways with your own account",
        "Devices": "Any browser on tablets, PCs and phones; Android app for staff and drivers",
        "Controls": "Roles and permissions, second-person approval with running totals per member, audit log"
      },
      "images": [
        "https://techsmix.pages.dev/images/ordering-platform/01-point-of-sale.webp",
        "https://techsmix.pages.dev/images/ordering-platform/02-kitchen-display.webp",
        "https://techsmix.pages.dev/images/ordering-platform/03-online-store.webp",
        "https://techsmix.pages.dev/images/ordering-platform/04-live-map.webp",
        "https://techsmix.pages.dev/images/ordering-platform/05-dispatch-board.webp",
        "https://techsmix.pages.dev/images/ordering-platform/06-dashboard.webp",
        "https://techsmix.pages.dev/images/ordering-platform/07-stock.webp",
        "https://techsmix.pages.dev/images/ordering-platform/08-approvals.webp",
        "https://techsmix.pages.dev/images/ordering-platform/09-owner-view.webp",
        "https://techsmix.pages.dev/images/ordering-platform/10-reports.webp"
      ],
      "description_text": "Universal Ordering Platform runs a restaurant's till, kitchen screens, online store, phone orders, delivery and back office from one system, in Arabic, English, French and Spanish. This is the self-hosted licence: you install it on your own server.\n\nIt is built for restaurants and food businesses in Egypt and the Gulf: right-to-left Arabic throughout, VAT-inclusive or exclusive prices, cash, card, wallet and cash on delivery, and one or many branches under one account. Try it first: the Restaurants page has a live demo, a sample restaurant called Cairo Bites with real screens and demo sign-ins.\n\n- Any device: Runs in the browser on tablets, PCs and phones; an Android app for staff and drivers; no special hardware.\n- Till and kitchen: Point of sale with shifts and blind cash counts, kitchen display with stations, timers and recall.\n- Delivery: Dispatch board, drivers on a live map, arrival times, driver cash hand-ins and customer tracking links.\n- Controls: Second-person approval with running totals per member for refunds, discounts, voids, paid-outs and more.\n- Your server: Node.js and PostgreSQL on Debian or Ubuntu; your data stays on your own machine.\n\n### What it covers\n\nOne system from the order to the books.\n\n#### Orders\n\n- Point of sale with tables, modifiers, split bills, tips and a customer screen.\n- Your own online store and QR table ordering.\n- Phone orders, with the caller's customer card when the Voipat cloud PBX is connected.\n- Takeaway sales keep going on the till when the connection drops, and sync when it returns.\n\n#### Delivery\n\n- Dispatch board, routes and drivers on a live map with arrival times.\n- Android driver app that keeps sharing the driver's position with the screen off while orders are picked up.\n- Cash on delivery tracked per driver, handed in to the cashier's drawer.\n- Orders from delivery apps arrive through the order webhook or an integration partner.\n\n#### Kitchen and stock\n\n- Recipes and food cost, stock levels, transfers between branches and blind stock counts.\n- Waste with reasons, butchery yield, purchasing, supplier bills and food-safety checks.\n\n#### People and numbers\n\n- Roles and permissions, rota, time clock and payroll.\n- Dashboard, owner's view, reports and accounting with a general ledger.\n- Open API and webhooks.\n\n### Licence, delivery and requirements\n\nWhat you get, and what your server needs.\n\n- Licence – one year per server, for as many branches and staff as that server runs. Renew yearly to keep receiving updates.\n- Delivery – once your payment is confirmed we email the installation package and step-by-step instructions, and can install it for you.\n- Server – Debian 12/13 or Ubuntu with Node.js 20 or later and PostgreSQL 15 or later; Apache or Nginx in front for HTTPS.\n- Not included – SMS or WhatsApp sending, card payment gateways and the cloud PBX are connected with your own accounts; Egyptian e-receipts (ETA) are in certification.\n\n### Prefer not to run a server?\n\nThe hosted plans give you the same system without installing anything, from $10 a month. See Universal Ordering Platform Cloud.",
      "updated": "2026-11-04"
    },
    {
      "id": "serviceman",
      "sku": "SVM",
      "type": "product",
      "name": "ServiceMan",
      "tagline": "Technician orders, dispatch and field service",
      "summary": "Run a field-service company from one self-hosted system: orders, dispatch, live map of technicians, spare-part approvals, invoices, maintenance schedules and support tickets, with a web portal and an Android app.",
      "category": "Field Service",
      "url": "https://techsmix.pages.dev/products/serviceman/",
      "buy_url": "https://techsmix.rf.gd/en-gb/product/serviceman",
      "availability": "In stock",
      "available": true,
      "pricing": {
        "currency": "USD",
        "base_price": 999.0,
        "low": 999.0,
        "high": 999.0,
        "plans": [],
        "fixed_charges": [],
        "volume_discounts": [],
        "terms": "One-time fee per server",
        "billing": "Invoices from your price list with visit fee and manual override",
        "unit": "Servers"
      },
      "product_type": "Self-hosted server software with a web portal and an Android app",
      "licence": "One-time fee per server",
      "delivery": "Licence, installation package and instructions by email once payment is confirmed",
      "live_demo": null,
      "category_demos": [
        {
          "label": "Try the ServiceMan live demo",
          "url": "http://62.50.146.64:8080/"
        }
      ],
      "specifications": {
        "Product type": "Self-hosted server software with a web portal and an Android app",
        "Deployment": "Docker and Docker Compose on Linux; PostgreSQL in its own container",
        "Licence": "One-time fee per server",
        "Delivery": "Licence, installation package and instructions by email once payment is confirmed",
        "Billing": "Invoices from your price list with visit fee and manual override",
        "Languages": "Arabic and English, right-to-left layout",
        "Portals": "Manager, technician, customer service and customer",
        "Orders": "Installation, maintenance and replacement; created, assigned, en route, in progress, completed or cancelled",
        "Field team": "Live map of technicians, route per job, site check-in and check-out, barcode and QR scanning",
        "Support": "Tickets with assignment queue, chat, broadcasts and push notifications"
      },
      "images": [
        "https://techsmix.pages.dev/images/serviceman/01-dashboard.webp",
        "https://techsmix.pages.dev/images/serviceman/02-dispatch.webp",
        "https://techsmix.pages.dev/images/serviceman/03-live-map.webp",
        "https://techsmix.pages.dev/images/serviceman/04-approvals.webp",
        "https://techsmix.pages.dev/images/serviceman/05-technician.webp",
        "https://techsmix.pages.dev/images/serviceman/06-support.webp"
      ],
      "description_text": "ServiceMan runs a field-service business: technician orders, dispatch, a live map of the team, spare parts, invoices, maintenance schedules and customer support, in one system with a web portal and an Android app. This is the self-hosted licence: you install it on your own server.\n\nIt suits any company that sends technicians to customers – installation, maintenance and repair of water filters, air conditioning, appliances, security systems or office equipment. Arabic and English throughout, with right-to-left layout. Try it first: the Field Service page has a live demo, a sample service company in Cairo with one-tap sign-in for every role.\n\n- Four portals: Manager, technician, customer service and customer, each seeing only what their role needs.\n- Live map: Technicians' positions on the map and the route each one drove to a job.\n- Priced from your list: Invoices take installation, maintenance, replacement and visit prices from your price list, with manual override.\n- Support built in: Customer tickets with an assignment queue, replies and status, alongside chat and broadcasts.\n- Your server: Docker with PostgreSQL; your customer data stays on your own machine.\n\n### What it covers\n\nFrom the customer's request to the paid invoice.\n\n#### Orders and dispatch\n\n- Installation, maintenance and replacement orders with priority, schedule, address and notes.\n- Each order moves from created and assigned to en route, in progress and completed, or is cancelled with a reason.\n- Dispatch list with search by customer, address or notes and filters for active, completed and cancelled.\n- Dashboard with order counts, status and service-type breakdowns, a six-month trend, the completion rate and who is available.\n\n#### Technicians\n\n- The technician's own job list, with check-in and check-out at the customer's site.\n- Scan a unit's barcode or QR code to find it and log the parts used.\n- Spare parts reported from the job wait for a manager's approval before stock is taken.\n- Location sharing on the job, shown on the manager's live map.\n\n#### Customers\n\n- Customers see their units, upcoming maintenance visits and their own invoices.\n- They can reschedule a visit, request a new one, ask for an upgrade or open a support ticket.\n- Push notifications when an order is assigned, on the way or finished.\n\n#### Control\n\n- Roles for admin, manager, technician, customer service and customer, with extra permissions per manager.\n- Every request is checked on the server: users only reach their own orders, tickets, invoices and schedules.\n- Price list, spare-part catalogue, upgrade offers and messages to all users or one role.\n\n### Licence, delivery and requirements\n\nWhat you get, and what your server needs.\n\n- Licence – a one-time fee per server, for as many technicians, staff and customers as that server runs.\n- Delivery – once your payment is confirmed we email the licence with the installation package and step-by-step instructions.\n- Includes – the API server, the web portal and the Android app, built with your server's address.\n- Server – Linux with Docker and Docker Compose; PostgreSQL runs in its own container. A domain and HTTPS certificate are recommended.\n- Not included – push notifications and Google sign-in use your own Firebase and Google accounts; map tiles come from OpenStreetMap.\n\n### See it working first\n\nThe live demo on the Field Service page signs you in as a manager, technician, customer-service agent or customer with one tap. It is a separate copy with sample data, reset every night, so change anything you like.",
      "updated": "2026-11-04"
    }
  ]
}
