Here is how GAP can be used to construct a 6-dimensional faithful representation of $F(3,2)$.
gap> LoadPackage("Polycyclic");;
gap> LoadPackage("nq");;
gap> f:=FreeGroup(3);;
gap> x:=f.1;;y:=f.2;;z:=f.3;;
gap> rels:=[Comm(x,Comm(x,y)),Comm(y,Comm(x,y)),Comm(z,Comm(x,y)),Comm(x,Comm(y,z)),Comm(y,Comm(y,z)),Comm(z,Comm(y,z)),Comm(x,Comm(x,z)),Comm(y,Comm(x,z)),Comm(z,Comm(x,z))];
[ f1^-1*f2^-1*f1^-1*f2*f1*f2^-1*f1*f2, f2^-2*f1^-1*f2*f1*f2*f1^-1*f2^-1*f1*f2, f3^-1*f2^-1*f1^-1*f2*f1*f3*f1^-1*f2^-1*f1*f2, f1^-1*f3^-1*f2^-1*f3*f2*f1*f2^-1*f3^-1*f2*f3, f2^-1*f3^-1*f2^-1*f3*f2*f3^-1*f2*f3,
f3^-2*f2^-1*f3*f2*f3*f2^-1*f3^-1*f2*f3, f1^-1*f3^-1*f1^-1*f3*f1*f3^-1*f1*f3, f2^-1*f3^-1*f1^-1*f3*f1*f2*f1^-1*f3^-1*f1*f3, f3^-2*f1^-1*f3*f1*f3*f1^-1*f3^-1*f1*f3 ]
gap> G:=f/rels;
<fp group on the generators [ f1, f2, f3 ]>
gap> p:=NilpotentQuotient(G);
Pcp-group with orders [ 0, 0, 0, 0, 0, 0 ]
gap> IsPcpGroup(p);
true
gap> rep:=UnitriangularMatrixRepresentation(p);
[ g1, g2, g3, g4, g5, g6 ] -> <6 6x6-matrices>
Here NilpotentQuotient is used just to convert a finitely presented group G into a nilpotent group, maybe there is a more straightforward way.
p got 6 generators, I guess, they are the original generators and pairwise commutators (it's probably in the docs somewhere). Now one can look at the generators, e.g. the 1st and the 6th:
gap> m:=Image(rep);
<matrix group of size infinity with 6 generators>
gap> mg:=GeneratorsOfGroup(m);;
gap> Display(mg[1]);
[ [ 1, 0, 0, 0, 0, 0 ],
[ 0, 1, 0, 0, 0, 0 ],
[ 0, 0, 1, 0, 0, 0 ],
[ 0, 0, -1, 1, 0, 0 ],
[ 0, 1, 0, 0, 1, 0 ],
[ 0, 0, 1, 0, 0, 1 ] ]
gap> Display(mg[6]);
[ [ 1, 0, 0, 0, 0, 0 ],
[ 0, 1, 0, 0, 0, 0 ],
[ 0, 0, 1, 0, 0, 0 ],
[ 0, 0, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, 1, 0 ],
[ 1, 0, 0, 0, 0, 1 ] ]
For better control, one can use explicit homomorphisms:
gap> F:=FreeGroup(3);
<free group on the generators [ f1, f2, f3 ]>
gap> f:=NqEpimorphismNilpotentQuotient(F,2); # this gives F(3,2) as the image
[ f1, f2, f3 ] -> [ g1, g2, g3 ]
gap> Image(f);
Pcp-group with orders [ 0, 0, 0, 0, 0, 0 ]
gap> Image(f,F.3*F.1);
g1*g3*g5
gap> m:=UnitriangularMatrixRepresentation(Image(f));
[ g1, g2, g3, g4, g5, g6 ] -> <6 6x6-matrices>
gap> Image(m,Image(f,F.1));
[ [ 1, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, -1, 1, 0, 0 ], [ 0, 1, 0, 0, 1, 0 ], [ 0, 0, 1, 0, 0, 1 ] ]
gap> Display(Image(m,Image(f,F.3*F.1)));
[ [ 1, 0, 0, 0, 0, 0 ],
[ 0, 1, 0, 0, 0, 0 ],
[ 0, 0, 1, 0, 0, 0 ],
[ 0, 0, -1, 1, 0, 0 ],
[ 0, 1, 0, 0, 1, 0 ],
[ 0, 1, 1, 0, 1, 1 ] ]