A category is pseudo-abelian if it is pre-additive and idempotents have images. For my purpose, I only care about additive pseudo-abelian categories, which makes things slightly easier.
I want to show that an idempotent $p : X \to X$ in a pseudo-abelian category splits. Let $(K, k : K \to X)$ be the image of $p$. By the universal property of kernels, there exists a map $r : X \to K$ such that $p = kr$. nLab says that $rk = 1_K$, but I can't prove this.
I have tried to prove this using the uniqueness of the map in the universal property, but this hasn't worked.
Using $p^2 = p$, we get $k(rk) r = kr$. If monics had left inverses and epics right inverse in a pseudo-abelian category (is this true and why?), then we would have $rk = 1_K$.
Answer given by Nex in the comments. First a bit of background:
Definition: In a category $\mathscr C$, an idempotent $p : X \to X$ splits if there are morphisms $r : X \to Y$ and $s : Y \to X$ such that $s \circ r = e$ and $r \circ s = 1_Y$. A category $\mathscr C$ is idempotent complete if every non-zero idempotent splits.
Note that the condition $r \circ s = 1_Y$ implies that $r$ is epic and $s$ monic.
Definition: A category $\mathscr C$ is pseudo-abelian if it is additive and every idempotent has an image.
Some authors only require a pseudo-abelian category to be pre-additive.
Every idempotent $p : X \to X$ in an additive category (or a pre-additive category with a terminal object) $\mathscr C$ has a cokernel $(X, 1_X - p)$. The proof of this is straightforward Since $1_X - p$ is also an idempotent if and only if $p$ is an idempotent, an additive category is pseudo-abelian if and only if every idempotent has a kernel.
Proposition: A pseudo-abelian category is idempotent complete.
Proof: Let $p : X \to X$ be an idempotent with image $(K, k : K \to X)$. We know $k$ is the kernel of $1_X - p$. This implies $0 = (1_X-p)k$ and consequently $k = pk$. By the universal property of kernels, there exists a map $r : X \to K$ such that $p = kr$. Thus, $krk = pk = k$ and so $rk = 1_K$ since $k$ is monic.