Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ARNO_JSONNoSet to '1' to emit machine-readable JSON instead of plain text.0
ARNO_STATE_DIRNoKeep the telemetry log outside the workspace, one subdirectory per workspace.
ARNO_TELEMETRYNoSet to '0' to disable local usage recording entirely.1
ARNO_UPDATE_CHECKNoSet to '0' to turn off the daily check for a newer release.1
ARNO_METALS_IMPORTNoSet to '1' to let metals import an sbt build so Scala edits get diagnostics. Runs sbt; creates .bloop/ and .metals/.0
ARNO_WORKSPACE_ROOTNoRepository to operate on. Overridden by --root. Defaults to the working directory if neither is set.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
arno.read_rangeA

Read a file verbatim, whole or by line range — the replacement for cat and sed -n. Omit both line numbers to read the whole file, which is how to read go.mod, a Makefile, or any JSON/YAML/TOML config that has no symbols to address. An end line past the end of the file reads to the end. A dependency's source reads as dep:/, read-only. Several ranges, in one file or many, go in one call: {"ranges": [{"path": "a.go", "lines": "280-400"}, {"path": "b.go", "lines": "700-760"}]}.

arno.findA

Locate declarations by name AND return their source in one call — the fused search-and-read that replaces grep -n 'func X' -A 30. Exact name matches win over substring ones. Use this instead of outline and read_range when you have not located the symbol yet. Pass queries to find several names in one call.

arno.insertA

Add text to a file without replacing anything — a new function, a new section, an extra case. Use this for additive work instead of rewriting a surrounding symbol. With no anchor it appends to the end of the file; with one it places the text before or after that anchor, refusing if the anchor is absent or matches more than once. Several additions or edits at once belong in apply.

arno.replace_textA

Replace an exact, unique string in a file. An anchor string does not move when the lines around it do, which is why follow-up edits address text rather than line numbers. Refuses when the anchor is absent or matches more than once — extend it with surrounding context to disambiguate. For several sites, use apply: atomic, one validation, no diagnostics from half-done intermediate states.

arno.create_fileA

Create a brand-new file, and any missing parent directories. Refuses to overwrite an existing one — use replace_text or apply to modify existing content.

arno.applyA

Apply several edits as one atomic unit: all land or none do. Ops: replace_text, replace_range, replace_symbol, delete_symbol, insert. Anchors are validated before anything is written, touched files are formatted, and one validation runs at the end instead of one per edit. Prefer this over several single edits when changing more than one site.

arno.delete_fileA

Delete a file, not a directory; fails if it does not exist. Reverting to an earlier checkpoint recreates it. To edit content use replace_text or apply.

arno.checkA

Run a validation command on demand and wait for the verdict: kind build (default), typecheck or tests. Uses the repository's own Makefile target, npm script or cargo command when present. Waits by default and returns pass/fail directly. Every result names the command that ran; dryRun names it without running anything. In a repository with several projects, pass target to check one; with no command at the root, the answer lists the projects.

arno.grepA

Literal or regex text search across the workspace, returning path:line matches with optional trailing context — the replacement for grep -rn. Use this for anything that is not a declaration name: struct fields, string literals, error messages, config keys, or any search needing a path filter. Use find instead when you want a declaration and its body. Pass queries to search several patterns in one call.

arno.run_commandA

Run a command the repository declares, by name, and wait for the verdict: pass/fail with the decisive output. Use it instead of a shell for anything check does not cover. No name lists the declared commands. Nothing fits? declare_command it once.

arno.declare_commandA

Declare a named command in .arno/commands.json — a reproduction, a benchmark — to run with run_command in this and later sessions; the file is reviewed like any change. Declaring an existing name replaces it; do not redeclare one just to run it.

arno.run_testsA

Rerun a failing test, a test file, or changed files' tests; waits for pass/fail and the first failure. Full suite: check kind tests.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 12 tools

Disambiguation4/5

Most tools occupy clearly distinct roles: create/read/update/delete file operations, declaration search, text search, batched edits, and validation. The only mild ambiguities are check vs. run_tests vs. run_command, and find vs. grep vs. read_range, but the descriptions do enough to steer an agent toward the right one.

Naming Consistency3/5

Names are all lowercase and imperative, but the pattern is mixed: several are verb_noun (delete_file, read_range, replace_text, create_file, run_command, run_tests, declare_command) while others are bare verbs (find, insert, apply, check, grep). It is readable and predictable in tone, but not structurally consistent.

Tool Count5/5

Twelve tools is a well-scoped set for a coding-assistant server covering file operations, search, batched edits, and validation. Each tool has a reason to exist, and none feel redundant or like filler.

Completeness4/5

Core file lifecycle, search, atomic edits, validation, and test reruns are covered, so agents can work through typical multi-step coding tasks without obvious dead ends. Minor gaps such as no explicit directory listing or rename/move operation are easily worked around with grep and read_range.

Maintenance

ActivityMaintained
ResponsivenessResponsive