Say I would like a collection of k "almost-**parallel**" boolean vectors $X_1,...,X_k \in \{\pm 1\}^n$, such that $(X_i,X_j)/n \approx 1-\epsilon$ for some small $\epsilon$. How many ways are there to pick such a collection? Or even how large of $k$ until this is impossible? Has this been studied before? (Seems related to coding theory)

In particular, the scaling I am interested in is: $k = k(n) \to \infty$ and $\epsilon = k/n$. The growth of $k$ is essential; the other condition less so. By "$\approx$", say I mean up to a tolerance of order $1/n$, if it matters.

(Note that this question is quite different from the common question about packing many almost **orthogonal** vectors in high dimensions)