RECC(1)

πŸ“¦
version 1.4.16 Β· 2 versions
, in ubuntu stonking

🌸 NAME 🌸

recc β€” yeah bestie, the name is just recc πŸ’… it's giving self-titled debut album, and honestly? It ate. You're reading RECC(1), the user commands manual page, and she's an icon πŸ‘‘


πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so here's the whole vibe:

USAGE: recc <command>

If the command you give it is a compile command, recc runs it on a remote build server ✨. If it's literally anything else, it runs it locally, on your own little machine, no cap.

But listen β€” if the command is gonna be executed remotely, it must specify either a relative or an absolute path to an executable. Not negotiable, that's the law 🫢

Oh and also, there's a whole fleet of environment variables that can change how recc behaves. Cute detail: if you wanna set them in a recc.conf file instead, you omit the "RECC_" prefix. Yes, just drop the prefix, she's chill like that πŸŽ€


🧚 Environment variables 🧚

Here's the whole roster, every single one, in order, no skips:

  • RECC_SERVER β€” the URI of the server to use (e.g. http://localhost:8085) 🌐
  • RECC_CAS_SERVER β€” the URI of the CAS server to use. By default, it uses RECC_ACTION_CACHE_SERVER if that's set. Else, it falls back to RECC_SERVER.
  • RECC_ACTION_CACHE_SERVER β€” the URI of the Action Cache server to use. By default, it uses RECC_CAS_SERVER. Else, RECC_SERVER. (yes it's a little circular bestie, they've got each other's backs πŸ’ž)
  • RECC_INSTANCE β€” the instance name to pass to the server (defaults to "")
  • RECC_CAS_INSTANCE β€” the instance name to pass to the cas. By default, it uses RECC_ACTION_CACHE_INSTANCE if set. Else, RECC_INSTANCE.
  • RECC_ACTION_CACHE_INSTANCE β€” the instance name to pass to the action cache. By default, it uses RECC_CAS_INSTANCE if set. Else, RECC_INSTANCE.
  • RECC_USE_LOCALCAS β€” use the LocalCAS protocol to off-load hashing to buildbox-casd
  • RECC_CACHE_ONLY β€” if set to any value, runs recc in cache-only mode. In this mode, recc will build anything not available in the remote cache locally, rather than failing to build. (main character energy: she will not let you down 🫢)
  • RECC_CACHE_UPLOAD_FAILED_BUILD β€” upload action results regardless of the exit code of the sub-process executing the action. This setting defaults to true. If set to false, only successful action results (exit codes equal to zero) will be uploaded.
  • RECC_RUNNER_COMMAND β€” if set, run the specified command to invoke a BuildBox runner for local execution.
  • RECC_PROJECT_ROOT β€” the top-level directory of the project source. If the command contains paths inside the root, they will be rewritten to relative paths (by default, uses the current working directory).
  • RECC_SERVER_AUTH_GOOGLEAPI β€” use default google authentication when communicating over gRPC, instead of using an insecure connection πŸ”
  • RECC_ACCESS_TOKEN_PATH β€” path specifying location of access token (JWT, OAuth, etc) to be attached to all secure connections. Defaults to "".
  • RECC_SERVER_CERT β€” path to a PEM-encoded CA certificate used to verify the server's TLS certificate. Only required for self-signed or non-CA-signed SSL endpoints.
  • RECC_CLIENT_KEY β€” path to a PEM-encoded client private key for mTLS. Must be set together with RECC_CLIENT_CERT β€” they're a package deal, besties fr fr πŸ’–
  • RECC_CLIENT_CERT β€” path to a PEM-encoded client certificate for mTLS. Must be set together with RECC_CLIENT_KEY.
  • RECC_LOG_LEVEL β€” logging verbosity level [optional, default = error, supported = trace/debug/info/warning/error]
  • RECC_LOG_DIRECTORY β€” if set to a directory, output log messages to files in that location πŸ“
  • RECC_LOG_STDERR_DIRECTORY β€” when set, recc will log to both stderr and the directory specified by RECC_LOG_DIRECTORY. If unset, recc will only log to the directory, if RECC_LOG_DIRECTORY is set. If RECC_LOG_DIRECTORY is not set, recc will log to stderr, irrespective of the value of RECC_LOG_DIRECTORY.
  • RECC_LOG_PROGRESS β€” if set to any value, log additional progress info. This requires RECC_VERBOSE.
  • RECC_VERBOSE β€” if set to any value, equivalent to RECC_LOG_LEVEL=debug
  • RECC_ENABLE_METRICS β€” if set to any value, enable metric collection πŸ“Š
  • RECC_METRICS_TAG_[key] β€” tag added to all published metrics, using the format specified by RECC_STATSD_FORMAT.
  • RECC_STATSD_FORMAT β€” if set to any value, the format used by the statsd publisher, when tagging is set. Supports 'influx', 'graphite' and 'dog'.
  • RECC_METRICS_FILE β€” write metrics to that file (Default/Empty string ??? stderr). Cannot be used with RECC_METRICS_UDP_SERVER.
  • RECC_METRICS_UDP_SERVER β€” write metrics to the specified host:UDP_Port. Cannot be used with RECC_METRICS_FILE.
🚨 Bestie, those last two are mutually exclusive β€” pick one, you cannot have both. It's either/or, no situationship.
  • RECC_COMPILATION_METADATA_UDP_PORT β€” if set, publish the higher-level compilation metadata to the specified localhost's UDP_Port.
  • RECC_VERIFY β€” if set to any value, invoke the command both locally and remotely for verification purposes. Output digests are compared and logged. Double the work, double the receipts πŸ”
  • RECC_NO_PATH_REWRITE β€” if set to any value, do not rewrite absolute paths to be relative.
  • RECC_COMPILE_CACHE_ONLY β€” equivalent to RECC_CACHE_ONLY but only for compile commands
  • RECC_COMPILE_REMOTE_PLATFORM_[key] β€” equivalent to RECC_REMOTE_PLATFORM but only for compile commands
  • RECC_LINK β€” if set to any value, use remote execution or remote caching also for link commands
  • RECC_LINK_METRICS_ONLY β€” if set to any value, enable metric collection for link commands without remote execution or caching
  • RECC_LINK_CACHE_ONLY β€” equivalent to RECC_CACHE_ONLY but only for link commands
  • RECC_LINK_REMOTE_PLATFORM_[key] β€” equivalent to RECC_REMOTE_PLATFORM but only for link commands
  • RECC_FORCE_REMOTE β€” if set to any value, send all commands to the build server. (Non-compile commands won't be executed locally, which can cause some builds to fail.)
⚠️ Yeah, that last parenthetical is real β€” this one can genuinely break your build. Proceed with the drama if you must, but that's on you πŸ’€
  • RECC_ACTION_UNCACHEABLE β€” if set to any value, sets the do_not_cache flag to indicate that the build action can never be cached
  • RECC_SKIP_CACHE β€” if set to any value, sets the skip_cache_lookup flag to re-run the build action instead of looking it up in the cache
  • RECC_DONT_SAVE_OUTPUT β€” if set to any value, prevent build output from being saved to local disk
  • RECC_IGNORE_FAILURE_RESULT β€” if set to any value, ignore action results in cache with non-zero exit code
  • RECC_DEPS_GLOBAL_PATHS β€” if set to any value, report all entries returned by the dependency command, even if they are absolute paths
  • RECC_DEPS_OVERRIDE β€” comma-separated list of files to send to the build server (by default, run deps to determine this)
  • RECC_DEPS_DIRECTORY_OVERRIDE β€” directory to send to the build server (if both this and RECC_DEPS_OVERRIDE are set, this one is used πŸ‘‘)
  • RECC_OUTPUT_FILES_OVERRIDE β€” comma-separated list of files to request from the build server (by default, deps guesses)
  • RECC_OUTPUT_DIRECTORIES_OVERRIDE β€” comma-separated list of directories to request (by default, deps guesses)
  • RECC_DEPS_EXCLUDE_PATHS β€” comma-separated list of paths to exclude from the input root
  • RECC_DEPS_EXTRA_SYMLINKS β€” comma-separated list of paths to symlinks to add to the input root
  • RECC_DEPS_ENV_[var] β€” sets [var] for local dependency detection commands
  • RECC_COMPILATION_DATABASE β€” filename of compilation database to use with clang-scan-deps to determine dependencies
  • RECC_SCAN_DEPS_PARALLELISM β€” maximum number of concurrent clang-scan-deps invocations (default 1)
  • RECC_PRESERVE_ENV β€” if set to any value, preserve all non-recc environment variables in the remote
  • RECC_ENV_TO_READ β€” comma-separated list of specific environment variables to preserve from the local environment (can be used to preserve RECC_ variables, unlike RECC_PRESERVE_ENV)
  • RECC_REMOTE_ENV_[var] β€” sets [var] in the remote build environment
  • RECC_REMOTE_PLATFORM_[key] β€” specifies a platform property, which the build server uses to select the build worker πŸ—οΈ
  • RECC_RETRY_LIMIT β€” number of times to retry failed requests (default 0).
  • RECC_RETRY_DELAY β€” base delay (in ms) between retries, grows exponentially (default 1000ms)
  • RECC_REQUEST_TIMEOUT β€” how long to wait for gRPC request responses in seconds. (default: no timeout)
  • RECC_MIN_THROUGHPUT β€” minimum throughput in bytes per second to extend the timeout. The value may be suffixed with K, M, G or T. (default: no dynamic timeout)
  • RECC_KEEPALIVE_TIME β€” period for gRPC keepalive pings in seconds. (default: no keepalive pings)
  • RECC_PREFIX_MAP β€” specify path mappings to replace. The source and destination must both be absolute paths. Supports multiple paths, separated by colon (:). Ex. RECC_PREFIX_MAP=/usr/bin=/usr/local/bin)
  • RECC_CAS_DIGEST_FUNCTION β€” specify what hash function to use to calculate digests. (Default: "SHA256") Supported values: SHA512, SHA384, SHA256, SHA1, MD5 πŸ”
  • RECC_WORKING_DIR_PREFIX β€” directory to prefix the command's working directory, and input paths relative to it
  • RECC_MAX_THREADS β€” allow some operations to utilize multiple cores. Default: 4. A value of -1 specifies use all available cores. (she said use EVERYTHING πŸ’…)
  • RECC_USE_JOBSERVER β€” Return job slot to GNU Make-compatible jobserver during remote execution, if available (disabled by default)
  • RECC_REAPI_VERSION β€” Version of the Remote Execution API to use. (Default: "2.12") Supported values: "2.1", "2.10", "2.11", "2.12", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9"
  • RECC_PASSTHROUGH β€” If set, recc will execute the command locally without caching or remote execution irrespective of other configurations
  • RECC_NO_EXECUTE β€” If set, only attempt to build an Action and calculate its digest, without running the command
  • RECC_INVALID_INPUT_PATHS_REGEX β€” A comma-separated list of regex, if the command includes input paths that match with this regex, it will be executed locally without caching or remote execution
  • RECC_FALLBACK_TO_LOCAL β€” If set, execute the command locally without recc, if execution via recc fails

Okay that's the whole page bestie, you're officially caught up 🫢 Go forth and compile remotely, it's giving efficiency, it's giving slay ✨

fin πŸ’– β€” this was recc version: 1.4.16, stamped August 2026, and you've been reading RECC(1). Mwah, take care of her, she takes care of your builds πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from