# funcX - Federated function as a service
[funcx-faas/funcX](https://github.com/funcx-faas/funcX)
> funcX is a distributed [[faas|Function as a Service (FaaS)]] platform that
> enables flexible, scalable, and high performance remote function execution.
> Unlike centralized FaaS platforms, funcX allows users to execute functions on
> **heterogeneous** remote computers, from laptops to campus clusters, clouds,
> and supercomputers.
- `funcX` cloud hosted service
- `funcX` endpoints
## Getting started
[funcX documentation](https://funcx.readthedocs.io/en/latest/)
How it works:
- Register a function by specifying the function body and the input arguments
- Execute the function by _also_ specifying the endpoint ID

- Register a function: `func_uuid = fxc.register_function(hello_world)`
- Run a function: `res = fxc.run(endpoint_id=<>, function_id=<>)`
- Retrieving results: `fxc.get_result(res)`
- Batch of tasks can be added
Similar to [[parsl|Parsl]], dependencies must be imported inside the function
body.
---
## Issues
- Is there a way to run scripts, not just Python apps? e.g.
`@bash_app in`[[parsl|Parsl]]. To merge these two, we must solve this problem.