# How to understand abci?

**URL:** <https://forum.cosmos.network/t/how-to-understand-abci/3101>\
**Category:** Tendermint\
**Created:** [December 31, 2019, 9:28am UTC](https://forum.cosmos.network/t/how-to-understand-abci/3101 "2019-12-31T09:28:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![zychappy](https://avatars.discourse-cdn.com/v4/letter/z/7993a0/32.png) [@zychappy](https://forum.cosmos.network/u/zychappy)\
**Post date:** [December 31, 2019, 9:28am UTC](https://forum.cosmos.network/t/how-to-understand-abci/3101/1 "2019-12-31T09:28:34Z")

</div>

why command

```auto
tendermint node --proxy_app=kvstore

```

can start kvstore app? I only see the code in abci-\>example-\>kvstore  
further more,I want to run my own app to replace kvstore,how to do it exactly?

---

<div class="post-metadata">

**Author:** ![marbar](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.cosmos.network/marbar/32/483_2.png) [@marbar](https://forum.cosmos.network/u/marbar)\
**Post date:** [December 31, 2019, 1:03pm UTC](https://forum.cosmos.network/t/how-to-understand-abci/3101/2 "2019-12-31T13:03:29Z")

</div>

There a couple ways to do this, first you would have to start with what language you are writing your app in?

IF you are using go, then you can do the same thing that the cosmos-sdk is doing and have it be in process, you can find the code here: [https://github.com/cosmos/cosmos-sdk/blob/master/server/start.go#L130](https://github.com/cosmos/cosmos-sdk/blob/master/server/start.go#L130)

---

<div class="post-metadata">

**Author:** ![zychappy](https://avatars.discourse-cdn.com/v4/letter/z/7993a0/32.png) [@zychappy](https://forum.cosmos.network/u/zychappy)\
**Post date:** [January 2, 2020, 3:03am UTC](https://forum.cosmos.network/t/how-to-understand-abci/3101/3 "2020-01-02T03:03:51Z")

</div>

thanks，I am just confused that how tendermint can run with a proxy app,  
I think it is cool if I can run my own app with tendermint.  
I know a way that tendermint was build in own app,[go-built-in](https://docs.tendermint.com/master/guides/go-built-in.html)  
cosmos is next stage I want to figure out  
yes I am using go .

---

<div class="post-metadata">

**Author:** ![ebuchman](https://yyz1.discourse-cdn.com/flex031/user_avatar/forum.cosmos.network/ebuchman/32/6645_2.png) [@ebuchman](https://forum.cosmos.network/u/ebuchman)\
**Post date:** [May 25, 2020, 10:07pm UTC](https://forum.cosmos.network/t/how-to-understand-abci/3101/4 "2020-05-25T22:07:30Z")

</div>

If you just run `tendermint node` it will try to connect to your app over localhost:26658. So you can run your app in a separate process and listen on that port. You can also compile Tendermint in with your app like Marko mentioned. Tendermint comes with some built-in example apps like the kvstore mostly for testing and convenience.

See [https://docs.tendermint.com/master/app-dev/getting-started.html](https://docs.tendermint.com/master/app-dev/getting-started.html) for getting started and [https://docs.tendermint.com/master/spec/abci/](https://docs.tendermint.com/master/spec/abci/) for much more info.
