§ · legalpre-alpha · as-is

The rules,
such as they are.

heso is open-source software, dual-licensed under MIT and Apache 2.0. Short version: use it however you want, at your own risk, and don't be a jerk to the rest of the web. The long version is below.

licenseMIT · Apache-2.0warrantynonetelemetrynone in binaryeffective2026-05-21
§01section

What this covers.

heso is a Rust binary that fetches URLs, runs JavaScript, and returns JSON. It is pre-alpha. Things will break — the verb surface, the receipt envelope, the JSON shape — any of it can change between point releases. Don't pin a business to the current schema yet.

These terms cover everything in the heso project you might touch:

  • heso binaryThe Rust executable shipped on GitHub Releases.
  • @ixla/hesoThe npm package — bundles the same binary.
  • heso (pypi)The Python package — bundles the same binary.
  • heso.caThis website, including /docs and this page.
  • source treeEverything in github.com/blank3rs/heso.

If you forked the repository, the LICENSE-MIT and LICENSE-APACHE files in your tree are the authoritative source for code reuse. This page is a reader-friendly companion, not a replacement. Where this page and the license texts disagree, the license texts win.

§02section

License, your pick.

The source code, prebuilt binaries, and documentation are licensed at your optionunder either of the two licenses below. You pick — whichever one fits your project's downstream constraints.

Copyright © 2026 Akshay and the heso contributors. You may copy, modify, redistribute, sell copies, or incorporate heso into a larger work, under the terms of either license above. Keep the notice files intact in redistributed source or binary form. The Apache-2.0 grant explicitly covers patents the contributors hold and would otherwise need to license to you.

§03section

No warranty.

heso ships with zero warranty. None implied, none written, none verbal, none on the website. The license clauses below are the operative text — reproduced verbatim so there's no question about what was agreed to.
LICENSE-MIT · §3verbatim
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
LICENSE-APACHE · §7verbatim
Unless required by applicable law or agreed to in writing,
Licensor provides the Work (and each Contributor provides its
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied, including,
without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
PURPOSE.

Plain English: heso is pre-alpha. It will sometimes return wrong JSON, fail to click an element you expected, or panic on a page that does something unusual. If you wire it into anything important — a trading bot, an automated medical lookup, an agent that spends money — that's your call and your risk. There is no SLA, there is no support contract, and there is no implied promise that the receipt format from v0.2.1 will verify against the verifier shipped in v0.2.1.

§04section

Limitation of liability.

To the maximum extent permitted by law, the heso authors and contributors are not liable for any damages — direct, indirect, incidental, consequential, special, exemplary, or punitive — arising out of your use of heso. Not for lost data, lost profits, lost time, lost business, or anything else.

This applies even if a contributor was advised of the possibility of those damages, and regardless of the legal theory the claim is brought under (contract, tort, strict liability, statute, whatever).

Some jurisdictions don't allow the exclusion or limitation of certain damages. Where that's the case, this section applies to the greatest extent your local law permits, and only that. The rest of these terms continue to apply unchanged.

§05section

Acceptable use.

heso is a tool. Tools don't have opinions; the person holding one does. You — not the maintainers — are responsible for what you point the binary at and what you do with the JSON it hands back.
don't

What not to do

Don't use heso to —

  • 01
    Overload a site.

    The batchverb runs URLs in parallel; that doesn't mean every site wants you to. Respect robots.txt, respect rate limits, back off on 429s and 5xxs. The default User-Agent is heso/<version> on purpose — anything fingerprinting traffic can see you coming. If a site asks you to slow down or stop, slow down or stop.

  • 02
    Bypass access controls.

    Don't use heso to defeat authentication, paywalls, DRM, IP allowlists, or any other access mechanism on a system you aren't authorized to use. The fact that heso canevaluate JS or fill a form doesn't mean you have permission to.

  • 03
    Mishandle personal data.

    If you scrape or process personal data, you're responsible for complying with GDPR, CCPA, PIPEDA, or whichever privacy law applies to you and the data subjects. heso doesn't know who lives where.

  • 04
    Build something that harms people.

    Harassment, stalkerware, mass disinformation, credential stuffing, automated abuse — that whole category. The license grants you rights; it doesn't excuse you.

  • 05
    Misrepresent provenance.

    heso signs receipts under your Ed25519 identity (per ADR 0005). Don't sign a receipt for content you fabricated. Don't strip the signature off a real receipt and pass it off as something else.

do

Be a decent operator

A few reasonable defaults —

Use --receipt PATH when downstream consumers need to trust what you fetched. Use --since <hash> when polling a page over time, so you re-read only when something actually moved. Use --parallel with care. Cache. Identify yourself in your User-Agent when scraping public APIs. The standard internet citizenship stuff.

§06section

Third-party sites & services.

heso fetches third-party websites at your direction. Each of those sites has its own terms, its own privacy policy, and its own opinions about being automated. heso doesn't mediate any of that.

Pointing the binary at a URL means you've decided you're allowed to. If the destination forbids automated access in their terms, that contract is between you and them — the heso maintainers aren't a party to it and can't shield you from it.

§07section

Privacy & telemetry.

The heso binary and the heso websiteare different surfaces with different privacy properties. The line matters, so it's drawn explicitly below.
fig. 07 — telemetry per surface
surfacetelemetrypiicookies
heso (binary)nonenoneper-session, local
heso serve (rpc)nonenonesession-scoped, local
heso.ca (website)aggregatenoneanalytics only
github releasesn/agithub tosgithub tos

The binary runs locally on your machine. It does not phone home, it does not collect telemetry, and it does not transmit page contents anywhere except the destinations you point it at. Receipts, when enabled, are written to a local path you specify — nothing is uploaded.

The website (heso.ca) uses Vercel Analytics and Microsoft Clarity for aggregate, privacy-respecting traffic measurement: pageviews, referrers, anonymized session shapes. No account data, no PII collection. If that matters to you, an ad blocker will remove them — nothing on the site depends on those scripts loading.

§08section

Trademark, briefly.

Apache-2.0 grants you copyright and patent rights, not trademark rights (see §6 of the license). “heso” and the heso wordmark identify the canonical project.

You can fork the code, redistribute it, and base derivative work on it. Please give the derivative a distinct name so users don't confuse your fork with upstream — that's the whole rule. No “heso-pro”, no “heso2”, no “heso enterprise edition” on a fork that isn't upstream-blessed.

Saying “built with heso” or “runs on heso” to identify what your tool uses is fine. Using the wordmark in a way that implies endorsement, sponsorship, or affiliation when none exists isn't.

§09section

Contributions, the deal.

Unless you state otherwise in the PR, anything you submit for inclusion in heso is offered under the same dual MIT / Apache-2.0 terms the project ships under. Per the Apache-2.0 §5 contribution clause — no additional terms or conditions attach.

Concretely: when you open a pull request, push a commit, file an issue with a code snippet, or paste a patch into a discussion, you're granting the maintainers a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to use, reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your contribution and any derivative works.

You're also representing that the contribution is yours to give — that you wrote it, or that the original author already licensed it under terms compatible with MIT and Apache-2.0. Don't submit copyrighted material you don't have rights to. Don't paste in code your employer owns without their sign-off.

§10section

Indemnity, briefly.

You agree to defend, indemnify, and hold harmless the heso authors and contributors from any claim, demand, loss, or expense — including reasonable legal fees — that arises out of your use of heso or your violation of these terms.

This is the standard open-source “if your use of the tool gets you sued, that's not the maintainer's problem” clause. It exists so a one-person hobby project can ship without becoming a liability shield for downstream misuse. It does not apply to claims arising from a contributor's own wrongful act.

§11section

Governing law.

The MIT and Apache-2.0 licenses are deliberately jurisdiction-agnostic — they work the same way in Canada, the US, the EU, anywhere with a functioning copyright system. These terms don't override that.

For everything outside the license texts themselves — this terms page, the website, any direct interaction with the maintainers — disputes are governed by the laws of the Province of Ontario, Canada, and the federal laws of Canada that apply there, without regard to conflict-of-law rules. The courts located in Ontario will have exclusive jurisdiction over any such disputes.

Severability: if a court finds any part of these terms unenforceable, the rest of the terms keep working. No waiver: if the maintainers don't enforce a clause once, that isn't a waiver of the clause going forward.

§12section

Changes & contact.

These terms can change. Material changes bump the updated date in the sidebar, and significant ones get called out in the release notes on GitHub.

The licenses themselves (MIT, Apache-2.0) are irrevocable for the versions you already received — nothing here retroactively narrows rights you already have under them. Future versions of heso can ship under different terms, but past versions keep their terms.

Bugs, security reports, license questions, or anything else: file an issue on the GitHub tracker. That's the canonical channel. There is no support email and no support phone number — this is a one-person project moving fast, and the tracker is where real triage happens.

§∞ · end of terms

That's all of it.
Go fetch something.

effective 2026-05-21 · updated 2026-05-21
MIT · Apache 2.0 · v0.2.1