--- /dev/null
+[tox]
+envlist = mypy,flake8,isort,black
+minversion = 3.0
+skipsdist = true
+
+[testenv]
+passenv = *
+setenv = PYTHONPATH = {toxinidir}
+
+[testenv:mypy]
+description = Run mypy type checker
+deps =
+ mypy >= 1.0
+ types-PyYAML
+commands = mypy ceph_node_proxy
+
+[testenv:flake8]
+description = Run flake8 linter
+deps = flake8 >= 6.0
+commands = flake8 --max-line-length=120 --extend-ignore=E203,W503 ceph_node_proxy
+
+[testenv:isort]
+description = Check import sorting with isort
+deps = isort >= 5.0
+commands = isort --profile black --check-only --diff ceph_node_proxy
+
+[testenv:black]
+description = Check code formatting with black
+deps = black >= 23.0
+commands = black --check ceph_node_proxy