We consider the distributed message-passing model. In this model a communication network is represented by a graph where vertices host processors, and communication is performed over the edges. Computation proceeds in synchronous rounds. The running time of an algorithm is the number of rounds from the beginning until all vertices terminate. Local computation is free. An algorithm is called local if it terminates within a constant number of rounds. The question of what problems can be computed locally was raised by Naor and Stockmeyer  in their seminal paper in STOC'93. Since then the quest for problems with local algorithms, and for problems that cannot be computed locally, has become a central research direction in the field of distributed algorithms [9,11,13,17]. We devise the first local algorithm for an NP-complete problem. Specifically, our randomized algorithm computes, with high probability, an O(n 1/2∈+∈ε ·χ)-coloring within O(1) rounds, where ε∈>∈0 is an arbitrarily small constant, and χ is the chromatic number of the input graph. (This problem was shown to be NP-complete in .) On our way to this result we devise a constant-time algorithm for computing (O(1), O(n 1/2∈+∈ε ))-network-decompositions. Network-decompositions were introduced by Awerbuch et al. , and are very useful for solving various distributed problems. The best previously-known algorithm for network-decomposition has a polylogarithmic running time (but is applicable for a wider range of parameters) . We also devise a Δ1∈+∈ε-coloring algorithm for graphs with sufficiently large maximum degree Δ that runs within O(1) rounds. It improves the best previously-known result for this family of graphs, which is O(log* n) .