Field, stock & servicev4.1.0

Permora

Every permit expiry and inspection date across your jobs, on one board and in your own calendar.

For trades contractors who pull permits. Often replaces Contractor Foreman.

Single license $89 · Extended license $179 · paid once, yours for good

Try the live demoNo sign-up. The demo resets itself, so click anything.

What it does

An exact alert board

Overdue inspections, permits expiring within 60, 30 or 7 days, and live jobs with nothing booked, computed exactly.

Alerts that reach the truck

One email a day to the office, and to each job lead for their own jobs. Off until you switch it on.

Get permit deposits back

Record the deposit and the day the work finished. Thirty days later (you choose), you are reminded to request the final inspection or ask for the refund.

Permits per job

AHJ, type, number, application, issue and expiry dates, fee to the cent, and status.

One-click re-inspection

Record each inspection's type, date, inspector and result. A failed or partial one becomes a linked re-inspection in one click.

Pull-by dates

Record the date a permit has to be pulled by. Until it is issued, it is in the daily alert.

AHJ comments and corrections

Log what the plan reviewer or inspector asked for. Close each with how it was addressed, with a nudge on the follow-up day.

Your checks before the inspector

Saved check lists for a rough-in or a final. The evening before, the alert says how many are still open.

Jobs from Jobora

Bring Jobora jobs into Permora once each, with the site address, so every permit starts from the job.

Calendar feeds you can revoke

Expiries and inspections in your own calendar. Revoke a feed, and a contractor who left stops seeing your schedule.

Per-job PDF report

The full permit and inspection history for any job, for the client, the GC or your records.

The permit on the record

The actual permit and inspection reports as PDFs up to 10 MB, checked by their bytes.

Also: jobs by trade, spreadsheet-safe CSV exports, a phone home-screen app and an API with MCP.

Is it right for you?

What Permora deliberately doesn’t do.

  • One company per installation; your team shares it with roles.
  • Permora records what staff enter — no AHJ portal, e-permitting, filing or payment integration; the one outside system it reads is your own Jobora, if you connect it. That is exactly why there is no filing, payment or e-signature surface on your server to secure.
  • Fee totals are single-currency by design; cross-currency sums are never shown.
  • Attachments are PNG, JPEG or PDF up to 10 MB, checked by content, served only to a signed-in user through a controller.
  • Calendar feeds are read-only and per-feed revocable; changes are made in Permora.
  • Not legal advice: whether a permit is still valid is a question for the authority that issued it.
  • Permit alerts are email only (no text messages), once a day, and go when someone opens Permora or a daily cron calls them.

What renting costs instead

Contractor ForemanPlans "starting at $49/month": Basic $49 per month, 1 user ("pay $588 annually at renewal"); Standard $105 per month, up to 3 users. Permits are one module of a construction-management suite

2 months of Contractor Foreman costs what Permora costs once.

Read Sep 24, 2026 · source

The full comparison: every rival, what each does better, and who should stay with them →

Replacing one of these? Contractor Foreman alternative · PermitFlow alternative

Release history

Own It 4.1Client installations and your other toolsOct 4, 2026

For Permora, 4.1 makes two changes that every app gets. What’s new in 4.1 →

Own It 4.0It updates and backs itself upSep 29, 2026

For Permora, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and… What’s new in 4.0 →

Own It 3.4The jobs import keeps its permit datesSep 27, 2026

The jobs import's preview used to count every row with a name as ready, and an expiry that is not a real date was dropped without a word. What’s new in 3.4 →

Own It 3.3A reminder to get the permit deposit backSep 27, 2026

3.3 is the detail that decides whether a tool fits a working day.

Own It 3.2The permit alerts reach the job leadSep 26, 2026

The 3.2 wave sent reminders out in your own name.

Own It 3.1The paperwork on the recordAug 20, 2026

The 3.1 wave gave the catalog ways to reach the other side of the transaction.

Own It 3.0Works for your AI, not just for youAug 9, 2026

MCP tools read permits and inspection histories, pull the expiry report, record permits, book inspections and record findings — and an inspection is decided once: the…

Own It 2.0API, 2FA, backups, dark modeAug 6, 2026

Permora 2.0 adds the 2.0 owner layer.

What’s in the zip

The tree as the zip ships it — the working leftovers the packager deletes are not listed

  • .htaccess
  • API.md
  • Dockerfile
  • LICENSE.txt
  • QUICKSTART.txt
  • README.md
  • assets/
  • bin/
  • config.sample.php
  • controllers/
  • deploy/
  • index.php
  • install/
  • manifest.json
  • offline.html
  • router.php
  • shots/
  • src/
  • sw.js
  • tests/
  • views/
src/PermitOps.php: a real module, the first 24 of 339 lines

Chosen as the largest module in src/ that is not one of the shared cores — this product's own logic, not a file every product carries.

<?php
/**
 * PermitOps.php — Permora 3.2 pass B.
 *
 *   · PullBy       — the date a permit has to be pulled by, and where each one stands.
 *   · Corrections  — the AHJ's comments and corrections on a permit: received, answered, closed,
 *                    with a follow-up date that joins the daily alerts.
 *   · Checks       — internal quality checks before an inspection: named lists copied onto an
 *                    inspection and ticked off. They show readiness; the AHJ's result stays the
 *                    inspector's own and is never blocked by them.
 *   · JoboraImport — jobs brought in from Jobora through Jobora's own REST API, once each.
 *   · Deposits     — 3.3: a permit's deposit held by the AHJ, and the reminder to get it back. In
 *                    most towns the refund never comes by itself: someone has to request the final
 *                    inspection, then ask for the money. N days after the work is finished
 *                    (settings, 30 by default) a deposit still held joins the daily alerts.
 */
declare(strict_types=1);

final class PullBy
{
    /** A permit that is not pulled yet: still applied for, with no issued date. */
    public static function pending(array $permit): bool
    {
        return (string) ($permit['permit_status'] ?? '') === 'applied' && (string) ($permit['issued_date'] ?? '') === '';

Runs on: 2-minute web installer, plain PHP 8.1+ with MySQL (or SQLite for a trial), no Composer or build step — Docker image included. Tested on PHP 8.3. Or run it in Docker: the Dockerfile is in the zip.

Technical owners can install it with one line and their license key: curl -fsSL https://ownware.io/install.sh | sh -s -- permora <your license key>

Nothing is obfuscated or encoded; what you read is what runs. Manual · API · the test run

Which license do I need?

It comes down to how many installations you need. Running your own business on one site is the Single license. A second domain of your own, or sites you build or run for other people, is the Extended license.

Single license$89
One (1) domain or subdomain · One business, running it on one site.
  • Install it on one domain or subdomain you own or operate
  • Change the source however you like for that installation
  • Run your own business on it commercially, client work included
  • Re-download the current build any time from your buyer portal
  • A second site, or an installation you hand to a client as theirs, needs the Extended license
  • No reselling, redistributing or sublicensing the source
  • Not for offering it to other people as a hosted service
Buy the Single license, $89
Extended license$179
Unlimited sites you own or operate, plus up to 10 client installations (white-label included) · Agencies, and anyone running it on more than one site.
  • Everything the Single license grants
  • Install it on as many domains as you own or operate — no cap on the number
  • Up to ten client installations, one per client project, handed over or hosted for each client; for more, buy another Extended license
  • White-label: remove or replace the product name and logo in the screens of client installations
  • Still no reselling or redistributing the source itself
  • Running it as a multi-tenant service others sign up for needs a SaaS agreement
Buy the Extended license, $179

Every download carries the full terms as LICENSE.txt. The complete wording is on the terms page.

After you buy

Updates

The app’s Updates page installs a new release with your license key, with the release’s signature checked and a backup taken first. Your download link always serves the current build. Download again any time from your order page or the buyer portal; there is no renewal fee.

Help

Email support for installation and for defects in the code as delivered: a person reads and answers every message. It does not cover custom development or server administration. What support covers

If it isn’t right

Refunds are handled by Lemon Squeezy as merchant of record, case by case. EU consumers keep the statutory 14-day right until delivery starts. Refund terms

If we disappear

It keeps running: your server, the full PHP source, no license check that can fail. If no stable release is published for 365 days, the domain limit lifts; after three such years your copy becomes MIT-licensed. The terms have the exact wording: continuity.

Questions

Does Permora file permits with the city?
No — it tracks permits, from the date one has to be pulled by, through the inspections they require. It is not an e-permitting or filing system: it keeps the copies you attach, such as the permit PDF and the inspection report, and files nothing with the authority.
How reliable are the date alerts?
The date math is computed exactly in PHP, anchored to UTC midnights — the test suite covers leap years, month and year boundaries, and both DST transitions.
Does it handle permit fees?
Fees are recorded as exact integer cents for your records and reports — Permora never charges or collects money.
Will it run on shared hosting?
Yes — PHP 8.1+ with PDO, MySQL/MariaDB or SQLite, a 2-minute web installer, no Composer packages, no API keys.
Can I get my data out?
Yes. Permits and inspections export to CSV, the audit trail to CSV, one record to JSON for a data request, and every job prints a PDF report.
Can I attach the actual permit document?
Yes — PDFs (and photos) up to 10 MB attach to permits and inspections, checked by content rather than filename, stored under a minted name and served only to signed-in users. A text file renamed .pdf is refused with no row written.
Is Permora a subscription?
You buy it once and own that copy. There is no subscription, no per-user fee and nothing that renews — the license tier decides how many sites you may run it on, not how many people use it. Permit dates outlive most software contracts, which is the argument for owning the copy that tracks them.
What exactly do I get for the money?
The download is the complete PHP source with the database schema. Read it, change it, keep it. If we vanished tomorrow the copy on your server keeps working, because nothing in it phones home to us.
Does it email the crew when a permit is about to expire?
No. Expiry warnings live on the board and in the calendar feeds your team subscribes to; the one email Permora sends is the inspection-recorded note to your notification address.
Does it tell me whether a permit is valid?
No. It does the date arithmetic exactly and shows what it holds on the board and in your calendar — it records permits and inspections, and it does not rule on whether one satisfies a requirement. That judgment stays with the authority that issued it.
Better together
Back-Office Suite: Invora, Approva, Supplia and Permora
Invoices out, approvals in, suppliers on record, permits on file — the paperwork side of a business, owned once.
4 tools for$269
$356 separatelySave $87

Covered in these guides

More about Permora

Every permit expiry and inspection date across your jobs, on one board and in your own calendar — bought once for the whole crew.

The problem it solves

Electrical, plumbing, HVAC, and general contractors juggle permits and inspections across every active job — and the tracking usually lives in a truck-cab notebook or a spreadsheet. A missed re-inspection stalls the job; an expired permit can mean re-applying and re-paying. Construction-management SaaS solves this as a side feature, priced per user, per month, forever.

  • Inspection dates and permit expiries scattered across jobs, with no single alert board
  • Failed inspections that need a re-inspection nobody scheduled
  • Per-user monthly SaaS pricing for what is, at its core, structured record-keeping

Every feature

  • The permit itself, on the permit record. PDFs up to 10 MB — the actual permit, the inspection report — stored under a minted name, decided by the file's bytes, and served back with the recorded type. The file picker says "photo or report" because that is what arrives.
  • Calendar feeds you can revoke. Expiries and inspections as token-guarded .ics feeds your calendar subscribes to — and a revoke button per feed, so a contractor who left stops seeing your schedule immediately. Rotating and revoking are separate acts, as they should be.
  • Jobs by trade. Organize work as jobs — electrical, plumbing, HVAC, or general — each with site address, client, and status.
  • Permits per job. Track each permit's AHJ/jurisdiction, type, number, application/issued/expiry dates, fee (kept in exact cents), and status.
  • Inspections with one-click re-inspection. Schedule inspections per permit with type, date, inspector, and result — and turn a failed or partial result into a linked re-inspection in one click.
  • Exact date-math alert board. Overdue inspections, permits expiring in configurable 60/30/7-day windows, and active jobs with no next inspection scheduled — all computed exactly, leap-year and DST-safe. Alerts on the dashboard, and by email once a day to the office and each job's lead.
  • Per-job PDF report. A dependency-free PDF of the full permit and inspection history for any job — for the client, the GC, or your records.
  • Hardened CSV exports. Permits and inspections export to spreadsheet-safe CSV, hardened against formula injection, with fees kept numeric.
  • Installable mobile app (PWA). Add it to a phone or tablet home screen straight from the browser — a full-screen app served from your own server, with no app store involved. Business data is not stored offline on the device; what you see is read live.
  • Alerts that reach the truck. Once a day, one email to the office with every permit about to lapse or already expired, tomorrow's inspections, overdue inspections, and live jobs with nothing booked. Name a job lead and they get the same email for their own jobs. Nothing goes on a quiet day, and everyone has a stop link. Off until you switch it on, through your own email server.
  • Pull-by dates. Record the date a permit has to be pulled by; until it is issued it is in the daily alert, and a passed one stands out.
  • AHJ comments and corrections. Log what the plan reviewer or inspector asked for, close each one with how it was addressed, and get a nudge on the follow-up day.
  • Your own checks before the inspector. Saved check lists for a rough-in or a final, ticked off on the inspection; the evening before, the alert says how many are still open.
  • Jobs from Jobora. Run jobs in Jobora? Bring them into Permora once each, with the site address, so every permit starts from the job.
  • Get permit deposits back. Record the deposit a permit leaves with the AHJ and the day the work finished. Thirty days later (you choose), Permora reminds you to request the final inspection, or, once it has passed, to ask for the refund. Closed jobs included.
  • Updates from inside the app. The Updates page installs a new release with your license key: Ownware's signature is checked, a backup is taken first, and the app puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. It never checks by itself.
  • Backups by themselves. Automatic backups, an optional copy to S3-compatible storage you own, and a weekly check that the latest backup reads back. The Health page names anything that needs attention.
  • Own It 4.0.1 — fixes and an up-to-date manual. For Permora, 4.0.1 fixes an installer that had lost its styling and a command-line update that ended in an error after putting the previous version back. Its manual, FAQ and QUICKSTART now cover everything 4.0 added, including two Nginx rules that keep the data folder private. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
  • Own It 4.0.2 — the installer opens on every host. For Permora, 4.0.2 fixes a fresh install on an Apache host: the one-page setup at /install/ looped back to itself and never opened, and now it opens. Your license covers it: press Check for updates on the Updates page, or download it from your order page.

Release notes in full

  • Own It 4.1: client installations and your other tools. For Permora, 4.1 makes two changes that every app gets. An Extended license bought from October 4, 2026 covers up to ten client installations, one per client project: hand each one over to the client or host it for them, with the client's logo and colors from the app's branding settings. The API reference now shows how to connect Permora to Zapier, Make or n8n, using its own webhooks and API key. Your license covers the update: press Check for updates on the Updates page, or download it from your order page.
  • Own It 4.0: it updates and backs itself up. For Permora, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. A new install can start with a sample business and remove it in one click; backups run by themselves, with an optional offsite copy and a weekly check that the latest one reads back; and the Health page says whether the install is looking after itself.
  • Own It 3.4: the jobs import keeps its permit dates. The jobs import's preview used to count every row with a name as ready, and an expiry that is not a real date was dropped without a word. Now the preview runs the import's own checks, and such a date is refused and named.
  • Own It 3.3: a reminder to get the permit deposit back. 3.3 is the detail that decides whether a tool fits a working day. For Permora, it is the permit deposit: record what the AHJ holds and the day the work finished. Thirty days later (you choose), Permora reminds you to request the final inspection, or, once it has passed, to ask for the refund, closed jobs included.
  • Own It 3.2: the permit alerts reach the job lead. The 3.2 wave sent reminders out in your own name. For Permora, that meant one email a day to the office, and to each job lead for their own jobs, listing every permit about to lapse or already expired, tomorrow's and overdue inspections, and live jobs with nothing booked. Pull-by dates, AHJ comments closed with how each was addressed, your own checks before the inspector, and jobs brought in from Jobora came with it.
  • Own It 3.1: the paperwork on the record. The 3.1 wave gave the catalog ways to reach the other side of the transaction. For Permora it meant the permit document on the permit record and calendar feeds your own calendar subscribes to, each one revocable. Permora emails no one outside your team.
  • Own It 3.0: works for your AI, not just for you. MCP tools read permits and inspection histories, pull the expiry report, record permits, book inspections and record findings — and an inspection is decided once: the re-inspection chain is built by the same function the button calls, so an agent cannot spawn a follow-up from a passed inspection.
  • Own It 2.0: API, 2FA, backups, dark mode. Permora 2.0 adds the 2.0 owner layer. Upgrade by replacing the files — the database migrates itself, and it is still the same one-time purchase.

Browse self-hosted: Field, stock & service software · Rentals & property software · Trades & field-work software · Construction & building-trade software · Farm & agriculture software

Permora$89 once
Demo Buy