ERP, CRM and Finance — that agents run, that you own

Ekwo — your ERP, your CRM, your finance and your data: the world model of your company.

Ekwo is the memory of your company: ERP, CRM and Finance in one place, that AI agents run and that you own. Invoices, bank statements, VAT returns, e-invoicing, customers and pipeline live in your own instance, opened in a minute — a model of the company that a machine can operate and a human can read. It runs on Ekwo OS, open source: your guarantee of sovereignty, and the foundation you and your agents build new services on.

Agents that act with your rights, on the AI model you choose — never with a key of their own. You and your accountant stay in control.

See the app, screen by screenAlready using Claude? Connect Ekwo in Claude

Works with the model you choose

  • ChatGPT
  • Claude
  • DeepSeek
  • Gemini
  • Kimi
  • Mistral
  • Qwen
  • any MCP client

Names and logos belong to their owners; Ekwo is not affiliated with them.

See it work

An AI runs the companyAn AI agent runs the finance of a company through Ekwo, and Ekwo Cloud shows the result.
Build your own app on EkwoAn app built in minutes on the company data that is already there — invoicing, finance and ERP done.

Every screen of the app

Everywhere

Free and independent data infrastructure, in every country of the world.

No business, anywhere, should have to rent the right to its own memory. Ekwo gives businesses and their accountants open schemas, the rules of each country as data, and the tools to work on them. It is written country by country, by the people who know the rules of each one — accountants, tax advisers, developers — and given back to everyone. 175 countries today. The rest of the world is open, and it is yours to write.

A business is data, in every country.

The countries Ekwo has a pack for175 countries have a country pack in this repository. Every other country links to a page that says where it stands. The same information is listed in text below the map.Afghanistan — not yet, see where it standsAlbania — communityAlgérie — communityAngola — communityArgentina — communityAustralia — communityAustria — communityAzərbaycan — communityBangladesh — communityBelarus — not yet, see where it standsBelgium — provenBelize — not yet, see where it standsBénin — communityBhutan — communityBolivia — communityBosna i Hercegovina — communityBotswana — communityBrasil — communityBrunei Darussalam — communityBurkina Faso — communityBurundi — communityCameroun — communityCanada — communityCentrafrique — communityChile — communityColombia — communityCongo — communityCosta Rica — communityCôte d’Ivoire — communityCrna Gora — communityCroatia — communityCuba — not yet, see where it standsCyprus — communityCzechia — communityDanmark — communityDjibouti — communityDominican Republic — communityEcuador — communityEl Salvador — communityEritrea — not yet, see where it standsEspaña — communityEstonia — provenEswatini — communityEthiopia — communityFalkland Islands — not yet, see where it standsFiji — communityFinland — communityFrance — provenFrench Southern Territories — not yet, see where it standsGabon — communityGermany — communityGhana — communityGreenland — not yet, see where it standsGuatemala — communityGuinée — communityGuinée équatoriale — communityGuinée-Bissau — communityGuyana — communityHaiti — not yet, see where it standsHonduras — communityIndia — communityIndonesia — communityIran — not yet, see where it standsIraq — not yet, see where it standsIreland — communityÍsland — communityIsrael — communityItalia — communityJamaica — communityJordan — communityKenya — communityKuwait — communityLao PDR — communityLatvija — communityLebanon — not yet, see where it standsLesotho — communityLiberia — not yet, see where it standsLibya — not yet, see where it standsLietuva — communityLuxembourg — communityMadagascar — communityMagyarország — communityMalawi — communityMalaysia — communityMali — communityMaroc — communityMauritanie — communityMéxico — communityMoçambique — communityMoldova — communityMyanmar (Burma) — not yet, see where it standsNamibia — communityNederland — communityNepal — communityNew Caledonia — not yet, see where it standsNew Zealand — communityNicaragua — communityNiger — communityNigeria — communityNorge — communityNorth Korea — not yet, see where it standsOman — communityPakistan — communityPalestinian Territories — not yet, see where it standsPanamá — communityPapua New Guinea — communityParaguay — communityPerú — communityPhilippines — communityPolska — communityPortugal — communityPuerto Rico — not yet, see where it standsQatar — communityRépublique démocratique du Congo — communityRomania — communityRussia — not yet, see where it standsRwanda — communitySaudi Arabia — communitySchweiz — communitySénégal — communitySierra Leone — communitySlovenia — communitySlovensko — communitySolomon Islands — communitySomalia — not yet, see where it standsSouth Africa — communitySouth Sudan — not yet, see where it standsSrbija — communitySri Lanka — communitySudan — not yet, see where it standsSuriname — communitySverige — communitySyria — not yet, see where it standsTanzania — communityTchad — communityThe Bahamas — communityThe Gambia — communityTimor-Leste — not yet, see where it standsTogo — communityTrinidad and Tobago — communityTunisie — communityTürkiye — communityUganda — communityUnited Arab Emirates — communityUnited Kingdom — communityUnited States — communityUruguay — communityVanuatu — communityVenezuela — not yet, see where it standsViệt Nam — communityWestern Sahara — not yet, see where it standsYemen — not yet, see where it standsZambia — communityZimbabwe — communityΕλλάδα — communityБългария — communityКыргызская Республика — communityҚазақстан — communityМонгол Улс — communityСеверна Македонија — communityТуркменистан — communityЎзбекистон Республикаси — communityУкраїна — communityҶумҳурии Тоҷикистон (Республика Таджикистан) — communityსაქართველო — communityՀայաստան — communityمصر — communityประเทศไทย — communityកម្ពុជា — community대한민국 — community中国 — community日本 — community臺灣 — community
175 countries written28 open — yours to write

How it works: the rules of a country are files, not code — a chart of accounts, its taxes, the boxes of its return, its financial statements, the sentences its law puts on an invoice. An accountant can read them, a contributor can propose them, a test can prove them. Adding a country touches no engine. Write the pack for your country

A country that levies no value added tax at all, with a tax that follows the territory of the parties.

A country outside the common system of VAT, and one inside it, from the same engine.

Several charts of accounts in one country — for companies, and for non-profits.

Amounts carry the decimals of their currency rather than assuming cents, and the rounding method of their country.

Exchange differences recorded to the accounts the pack names.

Charts and labels in 49 languages, translated in the packs themselves.

EN 16931 and Peppol where they apply, and nothing where they do not.

No country, currency or language anywhere in the code — a check in continuous integration refuses one.

What you get

Six things a business should never have to rent.

Freedom

Free and open source. Read it, run it, change it, and take it with you. The core is AGPL-3.0 and the format libraries are MIT, so what is built on it stays open.

No lock-in

Open source is your guarantee of sovereignty. It installs on a database you own — an ordinary Postgres — and your data leaves whole, as an open archive, whenever you want it to. It keeps working whoever disappears.

Your data stays yours

Your company data lives in your own database, not on somebody else’s servers. You hold the keys, and you decide who reads it.

The rules, in the open

The rules each country pack encodes are published, sourced to the law and dated — charts of accounts, taxes, the boxes of the return, statutory statements and electronic invoicing — so that you and your accountant can check them. Every country page says when it was last checked.

Security

Access is enforced by the database itself, on every row of every table. A recorded transaction cannot be altered. Every change leaves an audit trail.

Privacy

Your numbers are in your database and nowhere else. This site sets no cookie, loads nothing from anyone and serves its own typefaces. The hosted edition is your own instance.

Automation

The work that no longer needs typing.

An agent or a script calls the same functions a person does, with the same rights and under the same rules. Nothing has a private way in.

Electronic invoices, written and checked

A brick writes the Peppol BIS 3 or Factur-X file and validates it against the standard. Sending and receiving over the network is the operated edition — the file itself is yours either way.

Statements in, matched

camt.053, CODA and CFONB 120 import once however often you replay the file; a payment finds the invoice it settles by its reference.

Every report is one call away

Trial balance, aged balance, the VAT return and what is due when — for a person, a script or an agent, through the same functions.

From a PDF to a draft

Ekwo reads any supplier invoice, in any language, with the AI model you choose, and calls the same tools a person would: the contact, then the draft with its lines, accounts and taxes. The database works out the totals, and nothing is recorded until somebody confirms it.

command line — ekwo
% ekwo doc new --contact "Comercial Pirineu SL" --date 2026-01-12 \ --line "name=Material d’oficina, venda al detall,quantity=20,price=1000.00,account=7000,tax=AD-S-45"
V1 draft 20900.00 EUR
% ekwo post V1 --dry-run
account debit credit
4300 20900.00
7000 20000.00
4770 900.00
balanced — nothing posted, --dry-run
% ekwo company export
manifest.json + data/*.jsonl — your company data, yours to take

Replayed from the Andorra pack’s golden year.

agent — ekwo
› Invoice Comercial Pirineu SL for 20 × Material d’oficina, venda al detall, and tell me what it does to this quarter's VAT.
Finding the customer.
% search_contacts { "query": "Comercial Pirineu SL" }
Comercial Pirineu SL · customer · AD
Drafting the invoice. A draft changes nothing.
% create_document { "doc_type": "sale_invoice", "document_date": "2026-01-12", "lines": [{ "name": "Material d’oficina, venda al detall", "quantity": 20, "unit_price": "1000.00", "account_code": "7000", "tax_code": "AD-S-45" }] }
V1 draft 20900.00 EUR
This is what it would record:
account debit credit
4300 20900.00
7000 20000.00
4770 900.00
› This records the invoice for good. Confirm?
› y
% post_document { "document_id": "V1" }
posted · entry balanced · period open
And the declaration for 2026-T1:
% vat_return { "period": "2026-T1" }
box 1 19000.00
box 1 855.00
Recorded 20900.00 EUR on 4300, and box 1 of 2026-T1 now reads 855.00.

The agent stops and asks before anything is recorded. The figures are the Andorra pack’s golden year, to the cent.

claude code — ekwo
gather every PDF invoice in my local Drive folder and bring them into Ekwo
Search(pattern: "**/*.pdf", path: "~/Drive/Invoices")
Found 1 file
I’ll read the invoice and draft what it says. A draft changes nothing.
Read(~/Drive/Invoices/2026-01-09 Distribucions Valira SA.pdf)
Read PDF
Distribucions Valira SA, 2026-01-09: Mercaderies per a la revenda, 8000.00 before tax.
ekwo - search_contacts (MCP)(query: "Distribucions Valira SA")
Distribucions Valira SA · supplier · AD
ekwo - create_document (MCP)(doc_type: "purchase_invoice", document_date: "2026-01-09", client_ref: "2026-01-09 Distribucions Valira SA.pdf", lines: [{ name: "Mercaderies per a la revenda", quantity: 10, unit_price: "800.00", account_code: "6000", tax_code: "AD-P-45" }])
draft · purchase_invoice · nothing recorded
One draft. It carries the file name as its reference, so running this again drafts nothing twice. The PDF stays in your folder: this release has no tool that stores a file against a document.
I read it from the PDF, so check it against the file. Shall I record it?

Claude Code with the Ekwo MCP server. Ekwo reads the PDF with the model chosen here, Claude, and keeps the draft and the rules; the file stays with you. The invoice is from the Andorra pack’s golden year.

Example session. Commands and results are real output from this release.

Agents that act with your rights

Ekwo embeds no model and imposes none. It exposes its tools over the open Model Context Protocol and a command line a program can read, so an agent works on your ERP, CRM and Finance with the rights of the person it acts for — never with a key of its own — and you can change your mind about which one.

Built on open foundations

Ekwo installs on your own Supabase project: your database, your keys, your bill. The schema is ordinary PostgreSQL, and the files it writes and reads are published standards rather than formats of its own.

Names and logos belong to their owners. Ekwo is not affiliated with any of them; compatibility is through the open Model Context Protocol and published standards.

Works with the accounting software you already use

Keep yours: Ekwo reads its exports and works on top of it — collecting, bringing the data to the standards, checking, preparing what the country asks for. Or let Ekwo run your finance on its own.

All the software Ekwo works with

Names belong to their owners. Ekwo is not affiliated with, endorsed by or sponsored by any of them; compatibility is through the exports they publish.

At a glance

The questions a CFO asks, answered in the cockpit.

For the CFO and the business owner: the Ekwo Cloud cockpit answers each question from the company’s own data, scored on a published scale. Nothing to set up, no spreadsheet.

  1. How long would the cash last?

    Days of cash

  2. Do we earn money on what we sell?

    Net margin

  3. Can we pay what falls due this year?

    Current ratio

  4. How much of the company do we own?

    Equity ratio

  5. How fast do customers pay us?

    Days of sales outstanding

  6. How fast do we pay suppliers?

    Days of payables outstanding

  7. Do we sell more than last year?

    Revenue growth

Each figure is read from the aggregates the country pack defines. How the figures are read

See the cockpit

Where it stands

countries
175countriesone pack each, written as data
languages
49languagescharts and labels translated in the packs
legal formats
21legal formatswritten or read, as independent libraries
tools an agent can call
3tools an agent can callthe same ones a person uses
texts of law cited
1808texts of law citedeach with the day it was last opened

Everything a business needs, all free.

Free software under AGPL-3.0.

Accounting

Sales and invoices

Draft, number and issue an invoice or a credit note under the numbering rule the country prescribes.

Purchases and suppliers

The same documents the other way round, with the tax recovered — or not — as the country says.

Contacts

Customers and suppliers, with their VAT number, the electronic address the pack names, and how each appears on a bank statement.

VAT, from the box to the filing

The return is computed from your company data, frozen box by box, filed, and settled to the account the pack names.

Year-end close

Opening balances, closing the year into the accounts the country uses, and opening it again when you must.

Reports and statements

Trial balance, account detail, aged balance, and the statutory statements of the country — one call each.

Electronic invoicing

Write and validate a Peppol BIS 3 or Factur-X invoice, with the sentences the country puts on it.

A command line, and an API

Every operation from a terminal or a script, with JSON output and exit codes a program can read.

A server for agents

The same operations exposed over the Model Context Protocol, under the rights of the person the agent acts for.

Finance

Bank and reconciliation

Import a statement, match a payment against what it settles, and let the reference do it for you.

Declarations

When each return is due, from the pack’s rule and the company’s cadence, for every company you keep — and a corrective once one has gone.

Fixed assets

Depreciation schedules and disposals, on the durations and conventions the country pack declares.

Budgets

A budget per year and per account, and the variance against what the accounts actually hold.

Many companies, one installation

A firm keeps forty clients in six countries as forty rows, each with its own chart, locks and pack.

Leave whenever you like

A company exports whole — accounts, declarations and the proof they were filed — and imports into another installation.

Digital assets and proofs

Proofs on Bitcoin

A return, the annual accounts, any document: its hash anchored on Bitcoin. The file never leaves.

Checked by anyone

Whoever holds the file checks it against the block — no account, no Ekwo in between.

Yours to keep

Only the company stamps its filings, and every proof leaves with its archive.

planned

Digital assets

Wallets, lots, fair value at the close and realised gains, in the same company data.

Documents & signature

planned

Signing, in the open

A document, its signatories and the trail of proof. The qualified level comes from the trust provider you choose.

Finance is where Ekwo starts. Everything else a business runs on — ERP, CRM, and what comes next — joins as a module of the same world model, each one free, each one in the open. How a module works

Two ways to run it

Own it, or have it operated.

On your own

Free, for ever. One command points it at your own Supabase project and it applies the schema, seeds the country rules and creates the first company. Nothing is gated.

npx ekwo-os init

Every release runs its suite on three versions of Node: the accounting rules, each country pack replayed against a year of company data, and the installer, against real Postgres.

Install Ekwo OS

Operated for you

The hosted edition, Ekwo Cloud: the web application and your own instance, run and watched for you. What is sold is the operating — the application and the models and agents it includes, bank connections, sending and receiving over Peppol, the channels to the administrations, backup and sync. It is infrastructure, and it never takes over your data: it and your filings stay yours and your accountant’s. It never gates the core, and what comes back from a filing is yours.

Get started with us

A network, not a vendor

Bring your expertise.

No company can know the accounting rules of the world. A network can. Accountants and tax advisers review the pack for their country and put their name on it; developers write a format library, a bank parser or the module their clients need; translators make a chart of accounts readable in their language. A pack is reviewed when a named professional has read it against the law they apply — not when anybody says so.

Latest changes

Latest changes

Read from the repository at every build: the countries, the releases, what was added and what was fixed.

  1. fixnot released yet

    The search of the crm module answers on a company of an imported address book. In the changelog

  2. fixnot released yet

    Every other module asks once per statement too. In the changelog

  3. fixnot released yet

    No policy may ask per row again. In the changelog

  4. country

    Czechia pack 0.5.0 The country page

  5. country

    Polska pack 0.3.0 The country page

  6. featurenot released yet

    A bank account keeps the profile of its CSV statements. In the changelog

  7. featurenot released yet

    ekwo import csv takes the profile as --csv-profile. In the changelog

  8. featurenot released yet

    An electronic invoice received arrives by the inbox's door. In the changelog

The data belongs to the business.

Read the manifesto