diff --git a/.gitignore b/.gitignore
index 7a7e68fef764ea4e94d9454a82b07535a302cc22..916310186161f529a990d7889b9ea52fcba8f986 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 .coverage
 __pycache__
+dist
diff --git a/meson.build b/briar_wrapper/__init__.py
similarity index 52%
rename from meson.build
rename to briar_wrapper/__init__.py
index e8f8a28d334511f899b5ec7cd425da3ce66ecf25..5880209234cd0f6dca5505e5a1e56958f6556db4 100644
--- a/meson.build
+++ b/briar_wrapper/__init__.py
@@ -2,10 +2,6 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 # License-Filename: LICENSE.md
 
-project(
-  'briar-wrapper',
-  version: '0.1.0',
-  meson_version: '>= 0.50.0',
-)
+"""briar wrapper for briar:headless"""
 
-subdir('src')
+__version__ = "0.0.1"
diff --git a/src/briar/api/api.py b/briar_wrapper/api.py
similarity index 100%
rename from src/briar/api/api.py
rename to briar_wrapper/api.py
diff --git a/src/briar/api/constants.py b/briar_wrapper/constants.py
similarity index 100%
rename from src/briar/api/constants.py
rename to briar_wrapper/constants.py
diff --git a/src/briar/api/model.py b/briar_wrapper/model.py
similarity index 100%
rename from src/briar/api/model.py
rename to briar_wrapper/model.py
diff --git a/src/briar/api/models/contacts.py b/briar_wrapper/models/contacts.py
similarity index 100%
rename from src/briar/api/models/contacts.py
rename to briar_wrapper/models/contacts.py
diff --git a/src/briar/api/models/private_chat.py b/briar_wrapper/models/private_chat.py
similarity index 100%
rename from src/briar/api/models/private_chat.py
rename to briar_wrapper/models/private_chat.py
diff --git a/src/briar/api/models/socket_listener.py b/briar_wrapper/models/socket_listener.py
similarity index 100%
rename from src/briar/api/models/socket_listener.py
rename to briar_wrapper/models/socket_listener.py
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..4b0a981b20f6a7a6537c2e105a7f6d797839aa25
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,31 @@
+[build-system]
+requires = ["flit"]
+build-backend = "flit.buildapi"
+
+[tool.flit.metadata]
+module = "briar_wrapper"
+author = "Briar Community"
+author-email = "contact@briarproject.org"
+home-page = "https://code.briarproject.org/briar/python-briar-wrapper"
+requires = [
+	"requests2>=2.16.0",
+	"websockets>=8.0.2",
+]
+requires-python=">=3"
+dist-name="briar-wrapper"
+description-file="README.md"
+keywords="Briar,p2p,Tor,Java,Kotlin"
+classifiers = [
+	"Development Status :: 3 - Alpha",
+	"Intended Audience :: Developers",
+	"License :: OSI Approved :: GNU Affero General Public License v3",
+	"Natural Language :: English",
+	"Operating System :: OS Independent",
+	"Programming Language :: Java",
+	"Programming Language :: Python :: 3",
+	"Topic :: Communications :: Chat",
+]
+
+[tool.flit.metadata.urls]
+"Bug Tracker" = "https://code.briarproject.org/briar/python-briar-wrapper/issues/"
+"Briar REST API" = "https://code.briarproject.org/briar/briar/blob/master/briar-headless/README.md"
diff --git a/src/meson.build b/src/meson.build
deleted file mode 100644
index a85b92f19ca0861f2e8e1f6350799fa54de3c4ce..0000000000000000000000000000000000000000
--- a/src/meson.build
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) 2019 Nico Alt
-# SPDX-License-Identifier: AGPL-3.0-only
-# License-Filename: LICENSE.md
-
-PACKAGE_DATA_DIR = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
-MODULE_DIR = join_paths(PACKAGE_DATA_DIR, 'briar')
-
-python3 = import('python3')
-
-conf = configuration_data()
-conf.set('PYTHON', python3.find_python().path())
-conf.set('VERSION', meson.project_version())
-conf.set('PACKAGE_DATA_DIR', PACKAGE_DATA_DIR)
-
-install_subdir('briar/api', install_dir: MODULE_DIR)