In short, go to this [link](https://dex.projectserum.com/#/market/FcZntrVjDRPv8JnU2mHt8ejvvA1eiHqxM8d8JNEC8q9q).
Don't forget to click the `+` button to "Add a custom market" so that the GUI
can recognize the market running locally.
## Extending the Proxy
To implement a custom proxy, one can implement the [MarketMiddleware](https://github.com/project-serum/permissioned-markets-quickstart/blob/master/programs/permissioned-markets/src/lib.rs#L71) trait
to intercept, modify, and perform any access control on DEX requests before
they get forwarded to the orderbook. These middleware can be mixed and
matched. Note, however, that the order of middleware matters since they can
mutate the request.
One useful pattern is to treat the request like layers of an onion, where
each middleware unwraps the request by stripping accounts and instruction
data before relaying it to the next middleware and ultimately to the
orderbook. This allows one to easily extend the behavior of a proxy by
adding a custom middleware that may process information that is unknown to
any other middleware or to the DEX.
After adding a middleware, the only additional requirement, of course, is
to make sure the client sending transactions does the same, but in reverse.
It should wrap the transaction in the opposite order. For convenience, an
identical abstraction is provided in the JavaScript [client](https://github.com/project-serum/permissioned-markets-quickstart/blob/master/tests/utils/market-proxy.js#L15).
## Alternatives to Middleware
Note that this middleware abstraction is not required to host a
permissioned market. One could write a regular program that manages the PDAs