diff --git a/.fmf/version b/.fmf/version
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/.fmf/version
@@ -0,0 +1 @@
+1
diff --git a/.packit.yaml b/.packit.yaml
new file mode 100644
index 0000000000..1af6cf610c
--- /dev/null
+++ b/.packit.yaml
@@ -0,0 +1,34 @@
+---
+packit_instances: ["prod", "stg"]
+
+packages:
+  packit-service:
+    downstream_package_name: packit-service
+    upstream_package_name: packit-service
+    upstream_project_url: https://github.com/packit/packit-service
+    paths:
+      - ./
+    specfile_path: none.spec
+
+issue_repository: https://github.com/packit/packit-service
+
+actions:
+  pre-sync:
+    # FMF has to be installed on system where you are calling this tool.
+    - python3 plans/git_reference.py
+
+srpm_build_deps: []
+
+jobs:
+  - job: tests
+    trigger: pull_request
+    targets:
+      - centos-stream-9-x86_64
+    skip_build: true
+    tf_extra_params:
+      environments:
+        - os:
+            # to run the container specified in the tests
+            compose: ""
+    packages:
+      - packit-service
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index e81f18fc71..7171f9af1d 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -128,3 +128,7 @@ repos:
           - LICENSE_HEADER.txt
           - --comment-style
           - "#"
+  - repo: https://github.com/teemtee/tmt.git
+    rev: 1.29.0
+    hooks:
+      - id: tmt-lint
diff --git a/plans/README.md b/plans/README.md
new file mode 100644
index 0000000000..22c63d9652
--- /dev/null
+++ b/plans/README.md
@@ -0,0 +1,15 @@
+Run tests locally:
+
+    $ tmt -v run -a provision -h local
+
+Run tests in a container using podman:
+
+    $ sudo dnf install tmt-provision-container
+    $ tmt -v run -a provision -h container
+
+For more info see:
+
+- https://packit.dev/docs/testing-farm/
+- [tmt @ DevConf 2021 slides](https://static.sched.com/hosted_files/devconfcz2021/37/tmt-slides.pdf)
+- [fmf docs](https://fmf.readthedocs.io)
+- [tmt docs](https://tmt.readthedocs.io)
diff --git a/plans/full.fmf b/plans/full.fmf
new file mode 100644
index 0000000000..12fa582832
--- /dev/null
+++ b/plans/full.fmf
@@ -0,0 +1,8 @@
+summary: Unit, integration & functional tests.
+
+discover+:
+  filter: tag:full
+
+provision:
+  how: container
+  image: quay.io/packit/packit-service-tests:stg
diff --git a/plans/git_reference.py b/plans/git_reference.py
new file mode 100644
index 0000000000..b4300c6005
--- /dev/null
+++ b/plans/git_reference.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+
+# Copyright Contributors to the Packit project.
+# SPDX-License-Identifier: MIT
+
+import subprocess
+from pathlib import Path
+
+import fmf
+
+tree_root = Path.cwd().absolute()
+node = fmf.Tree(tree_root).find("/plans")
+with node as data:
+    data["discover"]["url"] = "https://github.com/packit/packit-service.git"
+    data["discover"]["ref"] = (
+        subprocess.check_output(["git", "rev-parse", "HEAD"]).decode().strip()
+    )
diff --git a/plans/main.fmf b/plans/main.fmf
new file mode 100644
index 0000000000..3dde10392e
--- /dev/null
+++ b/plans/main.fmf
@@ -0,0 +1,5 @@
+discover:
+    how: fmf
+
+execute:
+    how: tmt
diff --git a/tests/full.fmf b/tests/full.fmf
new file mode 100644
index 0000000000..da9e6826d0
--- /dev/null
+++ b/tests/full.fmf
@@ -0,0 +1,42 @@
+summary:
+  Full test suite of the Packit Service
+
+component:
+  - packit-service
+tier: 1
+tag:
+  - full
+
+adjust+:
+  - when: initiator == packit
+    environment+:
+      COLOR: "no"
+      CONTAINER_RUN_INTERACTIVE: ""
+
+path: /
+test: 'make check "TEST_TARGET=$TEST_TARGET"'
+duration: 30m
+
+/custom-target:
+  summary: Custom tests
+  description: |
+    Custom tests that are useful for debugging as it is much easier to override
+    the ‹TEST_TARGET› environment variable, disabled in CI as it is split into
+    the separate test suites.
+  tag: manual
+  adjust:
+    - when: initiator != human
+      enabled: false
+      because: "This test suite is for manually specifying the target and to be run locally"
+
+/unit:
+  summary: Unit tests
+  order: 1
+  environment+:
+    TEST_TARGET: tests/unit/
+
+/integration:
+  summary: Integration tests
+  order: 2
+  environment+:
+    TEST_TARGET: tests/integration/