# Source: https://www.traceloop.com/docs/openllmetry/contributing/developing.md

> ## Documentation Index
> Fetch the complete documentation index at: https://www.traceloop.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Local Development

You can contribute both new instrumentations or update and improve the different SDKs.

[Join our Slack community](https://traceloop.com/slack) to chat and get help on any issues you may encounter.

The Python and Typescript are monorepos that use [nx](https://nx.dev) to manage the different packages.
Make sure you have `node >= 18` and `nx` installed globally.

## Basic guide for using nx

Most commands can be run from the root of the project. For example, to lint the entire project, run:

```bash  theme={null}
nx run-many -t lint
```

Other commands you can use simiarily are `test`, or `build`, or `lock` and `install` (for Python).

To run a specific command on a specific package, run:

```bash  theme={null}
nx run <package>:<command>
```

## Python

We use `poetry` to manage packages, and each package is managed independently under its own directory under `/packages`.
All instrumentations depends on `opentelemetry-semantic-conventions-ai`,
and `traceloop-sdk` depends on all the instrumentations.

If adding a new instrumentation, make sure to use it in `traceloop-sdk`, and write proper tests.

### Debugging

No matter if you're working on an instrumentation or on the SDK, we recommend testing the changes by using
the SDK in the sample app (`/packages/sample-app`) or the tests under the SDK.

### Running tests

We record HTTP requests and then replay them in tests to avoid making actual calls to the foundation model providers.
See [vcr.py](https://github.com/kevin1024/vcrpy) and [pollyjs](https://github.com/Netflix/pollyjs/) to do that, check out
their documentation to understand how to use them and re-record the requests.

You can run all tests by running:

```bash  theme={null}
nx run-many -t test
```

Or run a specific test by running:

```bash  theme={null}
nx run <package>:test
```

For example, to run the tests for the `openai` instrumentation package, run:

<CodeGroup>
  ```bash Python theme={null}
  nx run opentelemetry-instrumentation-openai:test
  ```

  ```bash Typescript theme={null}
  nx run @traceloop/instrumentation-openai:test
  ```
</CodeGroup>

## Typescript

We use `npm` with workspaces to manage packages in the monorepo. Install by running `npm install` in the root of the project.
Each package has its own test suite. You can use the sample app to run and test changes locally.