# Smith
> An agent
![Mr. Smith](./smith.jpeg)


Smith is, in many ways, a clean sheet implementation of [cram](https://git.arrdem.com/arrdem/cram).

Cram as a tool has been quite successful at implementing an agentless (get it) masterless configuration.
Clone a git repo and apply the config.

The miss of Cram is that it's really only designed to install static files, and really only to a homedir.
Installing packages is frankly a dirty hack.

In contrast to Cram's static configurations and mostly static actions, Smith has much more in common with Ansible, Puppet or Saltstack.

Like these full up configuration management systems, Smith features an inventory system, a package manager abstraction, templating features and - unlike these other systems - a core action model and changelog.

Also like those other systems, Smith uses a "real" configuration language for defining "modules".
