opsmate solve
opsmate solve
solves a SRE/DevOps oriented task via reasoning.
Unlike most of the state-of-the-art LLMs models (e.g. o1-pro, deepseek R1) that scheming in the background and come back to you 1 minute later, Opsmate reasoning via actively interactive with the environment to gather information and trial and error to find the best solution. We believe short feedback loop is key to solve SRE/DevOps oriented tasks.
OPTIONS
Usage: opsmate solve [OPTIONS] INSTRUCTION
Solve a problem with the Opsmate.
Options:
-i, --max-iter INTEGER Max number of iterations the AI assistant
can reason about [default: 10]
-nt, --no-tool-output Do not print tool outputs
-a, --answer-only Print only the answer
--tool-calls-per-action INTEGER
Number of tool calls per action [default:
1]
--loglevel TEXT Set loglevel (env: OPSMATE_LOGLEVEL)
[default: INFO]
--categorise BOOLEAN Whether to categorise the embeddings (env:
OPSMATE_CATEGORISE) [default: True]
--reranker-name TEXT The name of the reranker model (env:
OPSMATE_RERANKER_NAME) [default: ""]
--embedding-model-name TEXT The name of the embedding model (env:
OPSMATE_EMBEDDING_MODEL_NAME) [default:
text-embedding-ada-002]
--embedding-registry-name TEXT The name of the embedding registry (env:
OPSMATE_EMBEDDING_REGISTRY_NAME) [default:
openai]
--embeddings-db-path TEXT The path to the lance db. When s3:// is used
for AWS S3, az:// is used for Azure Blob
Storage, and gs:// is used for Google Cloud
Storage (env: OPSMATE_EMBEDDINGS_DB_PATH)
[default: /root/.opsmate/embeddings]
--contexts-dir TEXT Set contexts_dir (env: OPSMATE_CONTEXTS_DIR)
[default: /root/.opsmate/contexts]
--plugins-dir TEXT Set plugins_dir (env: OPSMATE_PLUGINS_DIR)
[default: /root/.opsmate/plugins]
--db-url TEXT Set db_url (env: OPSMATE_DB_URL) [default:
sqlite:////root/.opsmate/opsmate.db]
--shell-command-runtime TEXT The runtime to use for the tool call (env:
SHELL_COMMAND_RUNTIME) [default: local]
--runtime-k8s-shell TEXT Set shell_cmd (env: RUNTIME_K8S_SHELL)
[default: /bin/sh]
--runtime-k8s-container TEXT Name of the container of the pod, if not
specified, the first container will be used
(env: RUNTIME_K8S_CONTAINER)
--runtime-k8s-pod TEXT Set pod_name (env: RUNTIME_K8S_POD)
[default: ""]
--runtime-k8s-namespace TEXT Set namespace (env: RUNTIME_K8S_NAMESPACE)
[default: default]
--runtime-ssh-connect-retries INTEGER
Set connect_retries (env:
RUNTIME_SSH_CONNECT_RETRIES) [default: 3]
--runtime-ssh-timeout INTEGER Set timeout (env: RUNTIME_SSH_TIMEOUT)
[default: 10]
--runtime-ssh-shell TEXT Set shell_cmd (env: RUNTIME_SSH_SHELL)
[default: /bin/bash]
--runtime-ssh-key-file TEXT Set key_file (env: RUNTIME_SSH_KEY_FILE)
--runtime-ssh-password TEXT Set password (env: RUNTIME_SSH_PASSWORD)
--runtime-ssh-username TEXT Set username (env: RUNTIME_SSH_USERNAME)
[default: ""]
--runtime-ssh-port INTEGER Set port (env: RUNTIME_SSH_PORT) [default:
22]
--runtime-ssh-host TEXT Set host (env: RUNTIME_SSH_HOST) [default:
""]
--runtime-docker-service-name TEXT
Name of the service to run (env:
RUNTIME_DOCKER_SERVICE_NAME) [default:
default]
--runtime-docker-compose-file TEXT
Path to the docker compose file (env:
RUNTIME_DOCKER_COMPOSE_FILE) [default:
docker-compose.yml]
--runtime-docker-shell TEXT Set shell_cmd (env: RUNTIME_DOCKER_SHELL)
[default: /bin/bash]
--runtime-docker-container-name TEXT
Set container_name (env:
RUNTIME_DOCKER_CONTAINER_NAME) [default:
""]
--runtime-local-shell TEXT Set shell_cmd (env: RUNTIME_LOCAL_SHELL)
[default: /bin/bash]
-m, --model TEXT Large language model to use. To list models
available please run the list-models
command. [default: gpt-4o]
--tools TEXT Comma separated list of tools to use
-r, --review Review and edit commands before execution
-s, --system-prompt TEXT System prompt to use
-c, --context TEXT Context to be added to the prompt. Run the
list-contexts command to see all the
contexts available. [default: cli]
-l, --max-output-length INTEGER
Max length of the output, if the output is
truncated, the tmp file will be printed in
the output [default: 10000]
--help Show this message and exit.
USAGE
The most basic usage
In the example below, the Opsmate will reason about the problem and come up with a solution, going through the "thought-action-observation" loop.
opsmate solve "how many cores on the server?"
Using a different model
Like the run
command, you can use the --model
option to use a different model.
opsmate solve "how many cores on the server?" -m grok-2-1212
Increase the number of iterations
You can increase the number of iterations the Opsmate can reason about by using the --max-iter
option for anything that requires long reasoning. There are a few things to bare in mind though:
- More iterations means more LLM tokens used. As the context window gets progressively larger over iterations, the cost will increase.
- In real-world use cases more iterations doesn't necessarily translate to better results. The common pattern we have observed is that with the current frontier LLMs, 10-15 iterations is the sweet spot. The longer the task, the more "confused" LLM becomes.
opsmate solve "how many cores on the server?" --max-iter 20
Use various tools
The Opsmate can use various tools to solve the problem. You can see the list of available tools by running the list-tools
command. To use these tools, you can pass the --tools
option.
Here is an example of gathering top 10 news from hacker news and write it to a file:
opsmate solve -na \
"find me top 10 news on the hacker news with bullet points and write to hn-top-10.md" \
--tools HtmlToText,FileWrite
...
cat hn-top-10.md
- [Do You Not Like Money?](https://news.ycombinator.com/item?id=43183568) by rbanffy
- [Chile blackout affects 14 regions](https://news.ycombinator.com/item?id=43182892) by impish9208
- [The miserable state of modems and mobile network operators](https://news.ycombinator.com/item?id=43182854) by hasheddan
- [Automattic hit with class action over WP Engine dispute](https://news.ycombinator.com/item?id=43182576) by rpgbr
- [A Radical Proposal for How Mind Emerges from Matter](https://news.ycombinator.com/item?id=43181520) by Hooke
- [Iterlog Coding](https://news.ycombinator.com/item?id=43181610) by snarkconjecture
- [VSC Material Theme](https://news.ycombinator.com/item?id=43178831) by Inityx
- [Fixing Illinois FOIA](https://news.ycombinator.com/item?id=43175628) by mrkurt
- [The XB 70](https://news.ycombinator.com/item?id=43175315) by rbanffy
- [Document Ranking for Complex Problems](https://news.ycombinator.com/item?id=43174910) by noperator
Review and edit commands
Just like the run
command, you can use the --review
option to review and edit the commands before execution.
opsmate solve "how many cores on the server?" -r
Use a different system prompt
You can use the --system-prompt
or -s
flag to use a different system prompt.
opsmate solve "how many cores on the server?" -s "You are a kubernetes SME"