# Embedding Perfetto in your own project
*** note
**This doc is WIP**, stay tuned
<!-- TODO(primiano): write embedder guide doc. -->
***
This doc should:
- Contain tech details of the Producer(Endpoint), Consumer(Endpoint) and Service
interfaces.
- Explain how they are supposed to be wired up together, with or without
using an IPC transport.
- Explain the basic embedder requirements (e.g. [`TaskRunner`](/include/perfetto/base/task_runner.h))
- Point out the relevant GN targets:
`//src/tracing`, `//src/tracing:ipc`, `//src/ipc`.
- Explain the API surface:
- [producer.h](/include/perfetto/tracing/core/producer.h)
- [consumer.h](/include/perfetto/tracing/core/consumer.h)
- [service.h](/include/perfetto/tracing/core/service.h)
- Explain the ABI surface:
- [shared_memory_abi.h](/include/perfetto/tracing/core/shared_memory_abi.h)
- IPC's [wire protocol](/src/ipc/wire_protocol.proto) (if used)
- The input [config protos](/protos/perfetto/config)
- The output [trace protos](/protos/perfetto/trace)
Other resources
---------------
* How we wrap our own IPC transport in Android: [/src/tracing/ipc](/src/tracing/ipc).