diff --git a/ansible_runner/__main__.py b/ansible_runner/__main__.py
index 1a4ffb7..8e61dc3 100644
--- a/ansible_runner/__main__.py
+++ b/ansible_runner/__main__.py
@@ -281,11 +281,6 @@ def main(sys_args=None):
 
         with context:
             with role_manager(args) as args:
-                if args.inventory:
-                    with open(args.inventory) as f:
-                        inventory_data = f.read()
-                else:
-                    inventory_data = None
                 run_options = dict(private_data_dir=args.private_data_dir,
                                    ident=args.ident,
                                    binary=args.binary,
@@ -298,7 +293,7 @@ def main(sys_args=None):
                                    rotate_artifacts=args.rotate_artifacts,
                                    ignore_logging=False,
                                    json_mode=args.json,
-                                   inventory=inventory_data,
+                                   inventory=args.inventory,
                                    roles_path=[args.roles_path] if args.roles_path else None,
                                    process_isolation=args.process_isolation,
                                    process_isolation_executable=args.process_isolation_executable,
diff --git a/ansible_runner/interface.py b/ansible_runner/interface.py
index a1c69b7..032533d 100644
--- a/ansible_runner/interface.py
+++ b/ansible_runner/interface.py
@@ -90,6 +90,7 @@ def run(**kwargs):
       - Path to the inventory file in the ``private_data_dir``
       - Native python dict supporting the YAML/json inventory structure
       - A text INI formatted string
+      - A list of inventory sources, or an empty list to disable passing inventory
     :param roles_path: Directory or list of directories to assign to ANSIBLE_ROLES_PATH
     :param envvars: Environment variables to be used when running Ansible. Environment variables will also be
                     read from ``env/envvars`` in ``private_data_dir``
diff --git a/ansible_runner/runner_config.py b/ansible_runner/runner_config.py
index 5667478..2bbe1b2 100644
--- a/ansible_runner/runner_config.py
+++ b/ansible_runner/runner_config.py
@@ -262,8 +262,13 @@ class RunnerConfig(object):
         except ConfigurationError:
             pass
 
-        exec_list.append("-i")
-        exec_list.append(self.inventory)
+        if isinstance(self.inventory, list):
+            for i in self.inventory:
+                exec_list.append("-i")
+                exec_list.append(i)
+        else:
+            exec_list.append("-i")
+            exec_list.append(self.inventory)
 
         if self.limit is not None:
             exec_list.append("--limit")

No option to use multiple inventory files (and thus constructed inventories)
 a singular parameter:

https://github.com/ansible/ansible-runner/blob/94f58c7c3667102dbafbf3b2349322c594deeccc/ansible_runner/runner_config.py#L249-L250

To be consistent with how Ansible core has operated since 2.4, it needs some way to process a list of inventory sources. The use case of constructed inventories need multiple `-i` flags in order to be usable. See the full documentation here:

https://docs.ansible.com/ansible/latest/plugins/inventory.html

A faster example here:

https://gist.github.com/halberom/e7791aa22c7dd1ef3f1ece3c815b4af8

```
ansible host5 -i hosts -i dynamic.config -m debug -a 'var=groups'
```

Any software that integrates Ansible via runner will be blocked from using any of these features unless runner changes its API to take multiple inventories somehow.
diff --git a/test/unit/test_runner_config.py b/test/unit/test_runner_config.py
index 243bdb3..6e291b3 100644
--- a/test/unit/test_runner_config.py
+++ b/test/unit/test_runner_config.py
@@ -171,6 +171,9 @@ def test_prepare_inventory():
     rc.inventory = '/tmp/inventory'
     rc.prepare_inventory()
     assert rc.inventory == '/tmp/inventory'
+    rc.inventory = 'localhost,anotherhost,'
+    rc.prepare_inventory()
+    assert rc.inventory == 'localhost,anotherhost,'
 
 
 def test_generate_ansible_command():
@@ -193,7 +196,21 @@ def test_generate_ansible_command():
         assert cmd == ['ansible-playbook', '-i', '/inventory', '-e', '@/env/extravars', 'main.yaml']
     rc.extra_vars = None
 
+    rc.inventory = "localhost,"
+    cmd = rc.generate_ansible_command()
+    assert cmd == ['ansible-playbook', '-i', 'localhost,', 'main.yaml']
+
+    rc.inventory = ['thing1', 'thing2']
+    cmd = rc.generate_ansible_command()
+    assert cmd == ['ansible-playbook', '-i', 'thing1', '-i', 'thing2', 'main.yaml']
+
+    rc.inventory = []
+    cmd = rc.generate_ansible_command()
+    assert cmd == ['ansible-playbook', 'main.yaml']
+    rc.inventory = None
+
     rc.verbosity = 3
+    rc.prepare_inventory()
     cmd = rc.generate_ansible_command()
     assert cmd == ['ansible-playbook', '-i', '/inventory', '-vvv', 'main.yaml']
     rc.verbosity = None

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest mock pytest-asyncio
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
-e git+https://github.com/ansible/ansible-runner.git@b8ea1c103cedb47584cf6bb1dd7d0686c13d9262#egg=ansible_runner
exceptiongroup==1.2.2
iniconfig==2.1.0
lockfile==0.12.2
mock==5.2.0
packaging==24.2
pexpect==4.9.0
pluggy==1.5.0
psutil==7.0.0
ptyprocess==0.7.0
pytest==8.3.5
pytest-asyncio==0.26.0
python-daemon==3.1.2
PyYAML==6.0.2
six==1.17.0
tomli==2.2.1
typing_extensions==4.13.0

name: ansible-runner
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - lockfile==0.12.2
      - mock==5.2.0
      - packaging==24.2
      - pexpect==4.9.0
      - pluggy==1.5.0
      - psutil==7.0.0
      - ptyprocess==0.7.0
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - python-daemon==3.1.2
      - pyyaml==6.0.2
      - six==1.17.0
      - tomli==2.2.1
      - typing-extensions==4.13.0
prefix: /opt/conda/envs/ansible-runner

test/unit/test_runner_config.py::test_generate_ansible_command
test/unit/test_runner_config.py::test_runner_config_init_defaults test/unit/test_runner_config.py::test_runner_config_with_artifact_dir test/unit/test_runner_config.py::test_runner_config_init_with_ident test/unit/test_runner_config.py::test_prepare_environment_vars_only_strings test/unit/test_runner_config.py::test_prepare_env_ad_hoc_command test/unit/test_runner_config.py::test_prepare_environment_pexpect_defaults test/unit/test_runner_config.py::test_prepare_env_passwords test/unit/test_runner_config.py::test_prepare_env_extra_vars_defaults test/unit/test_runner_config.py::test_prepare_env_settings_defaults test/unit/test_runner_config.py::test_prepare_env_settings test/unit/test_runner_config.py::test_prepare_env_sshkey_defaults test/unit/test_runner_config.py::test_prepare_env_sshkey test/unit/test_runner_config.py::test_prepare_env_defaults test/unit/test_runner_config.py::test_prepare_inventory test/unit/test_runner_config.py::test_generate_ansible_command_with_api_extravars test/unit/test_runner_config.py::test_generate_ansible_command_with_cmdline_args test/unit/test_runner_config.py::test_prepare_command_defaults test/unit/test_runner_config.py::test_prepare_command_with_args test/unit/test_runner_config.py::test_prepare_with_defaults test/unit/test_runner_config.py::test_prepare test/unit/test_runner_config.py::test_prepare_with_ssh_key test/unit/test_runner_config.py::test_wrap_args_with_ssh_agent_defaults test/unit/test_runner_config.py::test_wrap_args_with_ssh_agent_with_auth test/unit/test_runner_config.py::test_wrap_args_with_ssh_agent_silent test/unit/test_runner_config.py::test_process_isolation_defaults test/unit/test_runner_config.py::test_process_isolation_settings
ansible_runner/runner_config.py ansible_runner/interface.py ansible_runner/__main__.py
ansible_runner/runner_config.py ansible_runner/interface.py ansible_runner/__main__.py